mount_nullfs

ez-jail でウマーしようと思ったらどうにもうまくいかない。


ez-jail って何ソレって人は下記のサイトへ。
jail に関しては jail(8) とかがいいかも。

悪魔茶屋 ezjail

基本的には上記のサイトと jail(8) を眺めつつ作業してたら起動する時になってエラーが。
ログの出力は以下。

 ezjailConfiguring jails:.
Starting jails:mount_nullfs: Operation not supported by device
mount_fdescfs: Operation not supported by device
 cannot start jail "jail_server": 
jail: execv: /bin/sh: No such file or directory

mount_nullfs: Operation not supported by device なんて言ってる通り、多分カーネルが悪いんだと思う。
少し話が逸れるが、 FreeBSD を使い始めた時、様々なサイトにお世話になった。そしてそういったサイトのほとんどは通過儀礼の様にカーネルの再構築について書かれていたので、私もそれに従ってカーネル再構築の深みにハマッた方法を覚えた。
しかし、万年ビギナーな私にとってはやる事なす事全てが未知の領域なので、正直上記のようなエラーにぶち当たると思考が停止してしまう。かと言ってエロい方々が集う 2 ちゃんねるは怖くて聞けないし、 ML に投稿するにしても、まずは原因の切り分けが必要。となると停止した思考を再稼動させて自分の思いつく限りの解決策を試してみる。そうすれば大抵の問題は解決するけど、ひじょーに疲れる。ヘタレだからなんだろうけど。

話を戻して。
上記のエラーはそのままの意味で、多分カーネルモジュールが読み込まれてないんだと思う。
ということなので、一旦 GENERIC Kernel をビルドし、関連しそうなものをピックアップしてみた。
以下は GENERIC Kernel でビルドされた *.ko 。

3dfx.ko                 hwpmc.ko                libalias.ko             ppi.ko
3dfx_linux.ko           i915.ko                 libiconv.ko             pps.ko
aac.ko                  ibcs2.ko                libmbpool.ko            procfs.ko
aac_linux.ko            ibcs2_coff.ko           libmchain.ko            pseudofs.ko
accf_data.ko            ichsmb.ko               linker.hints            pst.ko
accf_http.ko            ichwd.ko                linprocfs.ko            puc.ko
acpi.ko                 ida.ko                  linsysfs.ko             r128.ko
acpi_asus.ko            idt.ko                  linux.ko                radeon.ko
acpi_fujitsu.ko         if_an.ko                logo_saver.ko           rain_saver.ko
acpi_ibm.ko             if_ar.ko                lpbb.ko                 random.ko
acpi_panasonic.ko       if_arl.ko               lpt.ko                  rc.ko
acpi_sony.ko            if_ath.ko               mac_biba.ko             rc4.ko
acpi_toshiba.ko         if_aue.ko               mac_bsdextended.ko      reiserfs.ko
acpi_video.ko           if_awi.ko               mac_ifoff.ko            rp.ko
agp.ko                  if_axe.ko               mac_lomac.ko            rr232x.ko
aha.ko                  if_bce.ko               mac_mls.ko              s3.ko
ahb.ko                  if_bfe.ko               mac_none.ko             safe.ko
ahc.ko                  if_bge.ko               mac_partition.ko        savage.ko
ahc_eisa.ko             if_bridge.ko            mac_portacl.ko          sbp.ko
ahc_isa.ko              if_cdce.ko              mac_seeotheruids.ko     sbp_targ.ko
ahc_pci.ko              if_ce.ko                mac_stub.ko             scd.ko
ahd.ko                  if_cm.ko                mac_test.ko             scsi_low.ko
aic.ko                  if_cp.ko                mach64.ko               sio.ko
aio.ko                  if_cs.ko                mcd.ko                  sis.ko
alpm.ko                 if_ct.ko                mem.ko                  smapi.ko
amd.ko                  if_cue.ko               mfi.ko                  smb.ko
amdpm.ko                if_cx.ko                mfi_linux.ko            smbfs.ko
amdsmb.ko               if_dc.ko                mga.ko                  smbios.ko
amr.ko                  if_de.ko                miibus.ko               smbus.ko
amr_linux.ko            if_disc.ko              mlx.ko                  snake_saver.ko
aout.ko                 if_ed.ko                mly.ko                  snd_ad1816.ko
apm.ko                  if_ef.ko                mpt.ko                  snd_als4000.ko
apm_saver.ko            if_el.ko                msdosfs.ko              snd_atiixp.ko
arcmsr.ko               if_em.ko                msdosfs_iconv.ko        snd_cmi.ko
arcnet.ko               if_en.ko                mse.ko                  snd_cs4281.ko
asr.ko                  if_ep.ko                ncp.ko                  snd_csa.ko
ata.ko                  if_ex.ko                ncv.ko                  snd_driver.ko
atacard.ko              if_faith.ko             ndis.ko                 snd_ds1.ko
atadisk.ko              if_fatm.ko              netgraph.ko             snd_emu10k1.ko
ataisa.ko               if_fe.ko                nfsclient.ko            snd_es137x.ko
atapci.ko               if_fwe.ko               nfsmb.ko                snd_ess.ko
atapicam.ko             if_fwip.ko              nfsserver.ko            snd_fm801.ko
atapicd.ko              if_fxp.ko               ng_UI.ko                snd_ich.ko
atapifd.ko              if_gif.ko               ng_async.ko             snd_maestro.ko
atapist.ko              if_gre.ko               ng_atm.ko               snd_maestro3.ko
ataraid.ko              if_harp.ko              ng_atmllc.ko            snd_mss.ko
ath_hal.ko              if_hatm.ko              ng_atmpif.ko            snd_neomagic.ko
ath_rate.ko             if_hme.ko               ng_bluetooth.ko         snd_sb16.ko
bktr.ko                 if_ic.ko                ng_bpf.ko               snd_sb8.ko
bktr_mem.ko             if_ie.ko                ng_bridge.ko            snd_sbc.ko
blank_saver.ko          if_ipw.ko               ng_bt3c.ko              snd_solo.ko
bridge.ko               if_iwi.ko               ng_btsocket.ko          snd_t4dwave.ko
cam.ko                  if_ixgb.ko              ng_ccatm.ko             snd_uaudio.ko
cardbus.ko              if_kue.ko               ng_cisco.ko             snd_via8233.ko
cbb.ko                  if_le.ko                ng_device.ko            snd_via82c686.ko
cd9660.ko               if_lge.ko               ng_echo.ko              snd_vibes.ko
cd9660_iconv.ko         if_lnc.ko               ng_eiface.ko            snp.ko
ciss.ko                 if_my.ko                ng_etf.ko               sound.ko
coda.ko                 if_ndis.ko              ng_ether.ko             speaker.ko
coda5.ko                if_nge.ko               ng_fec.ko               splash_bmp.ko
cpufreq.ko              if_nve.ko               ng_frame_relay.ko       splash_pcx.ko
crypto.ko               if_oltr.ko              ng_gif.ko               sppp.ko
cryptodev.ko            if_patm.ko              ng_gif_demux.ko         star_saver.ko
daemon_saver.ko         if_pcn.ko               ng_h4.ko                stg.ko
dcons.ko                if_ppp.ko               ng_hci.ko               streams.ko
dcons_crom.ko           if_ral.ko               ng_hole.ko              sym.ko
digi.ko                 if_ray.ko               ng_hub.ko               sysvmsg.ko
digi_CX.ko              if_re.ko                ng_iface.ko             sysvsem.ko
digi_CX_PCI.ko          if_rl.ko                ng_ip_input.ko          sysvshm.ko
digi_EPCX.ko            if_rue.ko               ng_ipfw.ko              tdfx.ko
digi_EPCX_PCI.ko        if_sbni.ko              ng_ksocket.ko           trm.ko
digi_Xe.ko              if_sbsh.ko              ng_l2cap.ko             twa.ko
digi_Xem.ko             if_sf.ko                ng_l2tp.ko              twe.ko
digi_Xr.ko              if_sis.ko               ng_lmi.ko               uart.ko
dpt.ko                  if_sk.ko                ng_mppc.ko              ubsa.ko
dragon_saver.ko         if_sl.ko                ng_nat.ko               ubsec.ko
drm.ko                  if_sn.ko                ng_netflow.ko           ubser.ko
dummynet.ko             if_sr.ko                ng_one2many.ko          ubtbcmfw.ko
elink.ko                if_ste.ko               ng_ppp.ko               ucom.ko
exca.ko                 if_stf.ko               ng_pppoe.ko             ucycom.ko
ext2fs.ko               if_stge.ko              ng_pptpgre.ko           udbp.ko
fade_saver.ko           if_tap.ko               ng_rfc1490.ko           udf.ko
fdc.ko                  if_ti.ko                ng_socket.ko            udf_iconv.ko
fdescfs.ko              if_tl.ko                ng_source.ko            ufm.ko
fire_saver.ko           if_tun.ko               ng_split.ko             uftdi.ko
firewire.ko             if_tx.ko                ng_sppp.ko              ugen.ko
firmware.ko             if_txp.ko               ng_sscfu.ko             uhid.ko
g_md.ko                 if_udav.ko              ng_sscop.ko             ukbd.ko
geom_apple.ko           if_ural.ko              ng_sync_ar.ko           ulpt.ko
geom_bde.ko             if_vge.ko               ng_sync_sr.ko           umass.ko
geom_bsd.ko             if_vlan.ko              ng_tag.ko               umct.ko
geom_ccd.ko             if_vr.ko                ng_tcpmss.ko            umodem.ko
geom_concat.ko          if_vx.ko                ng_tee.ko               ums.ko
geom_eli.ko             if_wb.ko                ng_tty.ko               unionfs.ko
geom_fox.ko             if_wi.ko                ng_ubt.ko               uplcom.ko
geom_gate.ko            if_xe.ko                ng_uni.ko               urio.ko
geom_gpt.ko             if_xl.ko                ng_vjc.ko               usb.ko
geom_label.ko           iic.ko                  ng_vlan.ko              uscanner.ko
geom_mbr.ko             iicbb.ko                ngatmbase.ko            utopia.ko
geom_md.ko              iicbus.ko               nmdm.ko                 uvisor.ko
geom_mirror.ko          iicsmb.ko               nsp.ko                  uvscom.ko
geom_nop.ko             iir.ko                  ntfs.ko                 vesa.ko
geom_pc98.ko            intpm.ko                ntfs_iconv.ko           viapm.ko
geom_raid3.ko           io.ko                   nullfs.ko               vkbd.ko
geom_shsec.ko           ip6fw.ko                nwfs.ko                 vpd.ko
geom_stripe.ko          ip_mroute.ko            padlock.ko              vpo.ko
geom_sunlabel.ko        ipdivert.ko             pccard.ko               warp_saver.ko
geom_uzip.ko            ipfw.ko                 pcf.ko                  wlan.ko
geom_vinum.ko           ipl.ko                  pcfclock.ko             wlan_acl.ko
geom_vol_ffs.ko         ipmi.ko                 pecoff.ko               wlan_ccmp.ko
geom_zero.ko            ips.ko                  pf.ko                   wlan_tkip.ko
green_saver.ko          isp.ko                  pflog.ko                wlan_wep.ko
hfa.ko                  ispfw.ko                plip.ko                 wlan_xauth.ko
hfa_pci.ko              joy.ko                  portalfs.ko             zlib.ko
hifn.ko                 kbdmux.ko               ppbus.ko
hptmv.ko                kernel                  ppc.ko

こんなにあるとは・・・。

とりあえず、この状態で ez-jail を起動してみる。

# /usr/local/etc/rc.d/ezjail.sh start
 ezjailConfiguring jails:.
Starting jails: [jail_server already running (/var/run/jail_server.id exists)].

特に異常は無さそうなので jls で見てみる。

# jls
   JID  IP Address      Hostname                      Path
     1  192.168.*.*     jail.server                   /usr/jails/jail.server

キタ━━━━(゚∀゚)━━━━ッ!!

やっぱり原因は Kernel にあったっぽいです。
なので、更に kldstat でどんなモジュールが読み込まれているか見てみます。

# kldstat
Id Refs Address    Size     Name
 1    6 0xc0400000 7c29e4   kernel
 2    1 0xc0bc3000 62880    acpi.ko
 3    1 0xc5309000 4000     nullfs.ko
 4    1 0xc5314000 3000     fdescfs.ko
 5    1 0xc53fe000 2000     accf_http.ko

accf_http.ko は Apache のモジュールなので置いといて、 nullfs.kofdescfs.ko が怪しそうです。
とりあえず絞り込めた所で man を見てみます。まずは fdescfs から。

     ファイル記述子ファイルシステム、別名 fdescfs は、プロセス毎のファイル記述
     子の名前空間をグローバルなファイルシステムの名前空間からアクセスする機能
     を提供します。通常のマウントポイントは /dev/fd です。

read() とか write() の事だろうか。よくわからない。
次に nullfs ・・・だけどこれが原因っぽいので makeoptions MODULES_OVERRIDE で指定しておく。
で、再構築・・・上手くいった。

疲れたぁ・・・。