FreeBSD QandA 666
Q. CD-ROM や MO のマウントをする際、いちいち root になるのが面倒なのですが。
A. amd (Auto Mount Daemon) という、あるディレクトリを参照すると自動的にマ
ウントしてくれるシステムがあります。
amd を利用するためにはカーネルに NFS が組み込まれていなければなりませ
ん。具体的にはカーネルコンフィギュレーションファイルに
options NFS
という行が必要ですが、デフォルトの GENERIC カーネルには含まれています
ので、この行をあえて削除していないならば amd は利用可能です。
現在、次のようにマウントできているとします。
ATAPI CD-ROM mount -t cd9660 /dev/acd0a /cd
SCSI MO (UFS 形式) mount /dev/da0a /od
SCSI MO (FAT 形式) mount -t msdos /dev/da0s1 /odpc
ATA HDD (FAT 形式) mount -t msdos /dev/ad1s1 /dos
この場合は次のように /etc/amd.map を書きます。
/defaults fs:=/a/${key}
cd type:=program;\
mount:="/sbin/mount mount -t cd9660 /dev/acd0a ${fs}";\
unmount:="/sbin/umount umount /dev/acd0a";
od type:=program;\
mount:="/sbin/mount mount /dev/da0a ${fs}";\
unmount:="/sbin/umount umount /dev/da0a";
odpc type:=program;\
mount:="/sbin/mount mount -t msdos /dev/da0s1 ${fs}";\
unmount:="/sbin/umount umount /dev/da0s1";
dos type:=program;\
mount:="/sbin/mount mount -t msdos /dev/ad1s1 ${fs}";\
unmount:="/sbin/umount umount /dev/ad1s1";
amd を実行するためには portmap(8) というデーモンを起動しておかなく
てはなりませんが、FreeBSD 4.4-RELEASE 以降では portmap が標準で起動
しなくなりました。
もし ps ax | grep portmap して portmap が起動していないようなら、amd
よりも先に
# portmap
として portmap を起動してください。なお、/etc/rc.conf に
amd_enable="YES"
と記述してマシンを再起動すれば、自動的に portmap が起動されます。
ディレクトリを作成して、実行テストをします。
% mkdir -p /a/{cd,od,odpc,dos}
% amd -l syslog -c 20 /mnt /etc/amd.map
もし /mnt/cd が参照 (ls /mnt/cd 等) されたら、amd は
% mount -t cd9660 /dev/acd0a /a/cd
を自動的に実行し、/a/cd へのシンボリックリンクを /mnt/cd に作成します。
また、一定時間が経過すると自動的にアンマウントします。この場合は -c 20
によって 20秒に設定されます。
ここまでうまく行ったら起動時に amd を起動するようにしましょう。
/etc/rc.conf を次のようにします。
amd_enable="YES"
amd_flags="-l syslog -c 20 /mnt /etc/amd.map"
また、
% ln -s /mnt/cd /cd
のようにしておくと、/cd にアクセスすると /mnt/cd にアクセスしてくれて
少し便利です。デバイス名はご自分の環境に合わせて下さい。
さらに、手動でCD-ROMなどを eject したい場合は、
% amq -u /mnt/cd
% cdcontrol -f acd0 eject (もちろん、かわりに eject ボタンを
押してもいいです)
などとしてください。これは一般ユーザ権限で実行可能です。
また、メディアが挿入されていない状態で /mnt/cd などにアクセスすると、
amd は automount が失敗したことを認識してくれません。この場合は、再度
amq -u /mnt/cd としてください。
間違い・追加情報を見付けた場合は、
修正案の投稿のしかた を読んだ上で、
QandA@jp.FreeBSD.org まで
お知らせください。