FreeBSD QandA 666

FreeBSD QandA

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 まで お知らせください。