経緯

FreeBSD10 64bitにて。pkg install bashをした際、ログに

1
2
3
4
5
6
7
8
9
bash requires fdescfs(5) mounted on /dev/fd

If you have not done it yet, please do the following:

	mount -t fdescfs fdesc /dev/fd

To make it permanent, you need the following lines in /etc/fstab:

	fdesc	/dev/fd		fdescfs		rw	0	0

と出ていたので、素直にfstabへ書き込み、再起動!
・・・としたところ、

1
Mounting local file system:mount fdesc: Operation not supported by device

と言われてSingle User Modeになってしまいましたという残念な流れです。

調査

エラーメッセージでググっていると、とあるブログに行き当たりました。
mount_nullfs - Cocelo Style http://d.hatena.ne.jp/cocelo/20070316/1173986065
こちらの方はどうやらnullfsがマウントできない、という話のようですが、症状がよく似ています。気になったので

1
2
3
4
5
# kldstat
Id Refs Address            Size     Name
 1   20 0xffffffff80200000 15f0430  kernel
 2    1 0xffffffff817f9000 23ac00   zfs.ko
 3    2 0xffffffff81a34000 6648     opensolaris.ko

してみると、案の定fdescfs.koは読み込まれていない。(kernel, zfs.so, opensolaris.ko のみ)ブログの方はカーネルの再構築を試みたようですが、面倒なのでloader.confで試してみました。

対応

まず、/bootがマウントされてなくて触れないため、一旦fstabを元に戻します

1
# vi /etc/fstab

マルチユーザーモードへ

1
# exit

/boot/loader.conf に、以下の記述を追加します。

1
fdescfs_load="YES"

再起動

1
# reboot

読み込まれているカーネルモジュールを確認

1
2
3
4
5
6
7
8
9
% kldstat
Id Refs Address            Size     Name
 1   20 0xffffffff80200000 15f0430  kernel
 2    1 0xffffffff817f1000 7ec0     fdescfs.ko
 3    1 0xffffffff817f9000 23ac00   zfs.ko
 4    2 0xffffffff81a34000 6648     opensolaris.ko
 5    1 0xffffffff81c12000 24760    vboxguest.ko
 6    1 0xffffffff81c37000 4c8      vboxvideo.ko
 7    1 0xffffffff81c38000 16efd    drm.ko

→ fdescfs.ko がロードされている!fstabへもう一度fdescfsの記述を追加し、再起動

1
2
# vi /etc/fstab
# reboot

マウントポイント確認

1
2
3
% df fdescfs
Filesystem 1K-blocks Used Avail Capacity  Mounted on
fdescfs            1    1     0   100%    /dev/fd

OK!!

参考URL