amdの設定
amd
amd(auto mount daemon)とは、ファイルシステムがアクセスされたときに、
自動的に mount/umount の操作を行ってくれるデーモンです。
UNIX系のOSでは、ファイルシステムを利用するためには、マウントの操作が必要です。
FreeBSD 等のように /etc/fstab ファイルに記述されたファイルシステムであれば
起動時にマウントされるため、ハードディスクなどでは意識する必要はありませんが、
リムーバブルドライブの場合は、メディアの抜き差しのたびに操作が必要になるので、
わずらわしく感じます。
amd はマップファイルの設定に従って、ユーザのアクセスに応じて自動的に
マウント作業を行います。root権限は必要無いため、ユーザはマウントをあまり
意識しなくてもよくなります。
マップファイルの作成
ここでは、FreeBSD で amd の設定をする手順について説明します。
amd の設定をする前に、カーネルに NFS が組み込まれていることを確認します。
カーネルコンフィグレーションファイルで
options NFS #Network Filesystem
の行があることを確認します。
ここで、例えば以下のようにマウント出来ているとします。
FD(UFS形式) mount -t ufs /dev/fd0c /fd
CD-ROM(IDE) mount -t cd9660 /dev/wcd0c /cdrom
MO(UFS形式) mount -t ufs /dev/od0a /mo
HD(FAT形式) mount -t msdos /dev/wd1s1 /dos
HD(NFS) mount -t nfs server:/home /home
ここで、例えば 3.5インチのフロッピーディスクに UFS(Unix File System)を
作成する方法ですが、以下のようにします。
% su
Password:
# fdformat /dev/rfd0 フォーマット
# disklabel -r -w /dev/fd0 fd1440 ディスクラベルを作成
# newfs /dev/rfd0c ファイルシステムを作成
MOなども同様にして UFS を作成できます。
この場合、amd のマップファイル(/etc/amd.map)は以下のように記述します。
/defaults fs:=/a/${key}
fd type:=program;\
mount:="/sbin/mount mount /dev/fd0 /fd";\
umount:="/sbin/umount umount /dev/fd0";
cdrom type:=program;\
mount:="/sbin/mount mount -t cd9660 /dev/wcd0c ${fs}";\
umount:="/sbin/umount umount /dev/wcd0c";
mo type:=program;\
mount:="/sbin/mount mount /dev/od0a ${fs}";\
umount:="/sbin/umount umount /dev/od0a";
dos type:=program;\
mount:="/sbin/mount mount -t msdos /dev/wd1s1 ${fs}";\
umount:="/sbin/umount umount /dev/wd1s1";
home type:=program;\
mount:="/sbin/mount mount -t nfs server:/home ${fs}";\
umount:="/sbin/umount umount ${fs}";
マップファイルの記述の仕方は柔軟性に富んでおり、いろいろな記述方法があります。
マップファイルの詳しい記述方法は、例えば
http://www.on.rim.or.jp/~ryo2/amd.html
を御覧ください。
amdの設定
amd のマップファイルを作成したら、次に、マウントするディレクトリを作成します。
# mkdir -p /a/{fd,cdrom,mo,dos}
amd を以下のように手動で起動します。
# amd -l syslog -c 1800 /mnt /etc/amd.map
amd のオプションについては、詳しくはオンラインマニュアルを御覧ください。
(jman amd)
ここで例えば /mnt/cdrom が参照(cd /mnt/cdrom)されたら、amd は
# mount -t cd9660 /dev/wcd0c /a//cdrom
を自動的に実行し、/a/cdrom へのシンボリックリンクを /mnt/cdrom に
作成します。
amd は、一定時間が経過すると自動的にアンマウントをします。
この場合は -c 3600 により 3600秒に設定されます。
また、いちいち /mnt/cdrom にアクセスするのが面倒な場合には、
# ln -s /mnt/cdrom /cdrom
としておけば、/cdrom にアクセスすると、/mnt/cdrom にアクセスしてくれます。
また、amd は一定時間が経過すると自動的にアンマウントしてくれますが、強制的に
アンマウントしたい場合には、
% amq -u /mnt/cdrom
を実行します。root権限は必要無く、一般ユーザで実行できます。
この後、メディアを排出したい場合、CDROMでは、
% cdcontrol eject
で eject できます。MO の場合は、
FreeBSD2.x などでは、
http://www-ishii.ics.nitech.ac.jp/~bobson/FreeBSD/MO-REPORT.html
にある Eject-1.2 for FreeBSD-2.x を使うと便利です。
また、メディアが挿入されていない状態で /mnt/cdrom などにアクセスすると、
amd は automount に失敗したことを認識してくれませんので、その場合は、再度、
% amq -u /mnt/cdrom
を実行し、メディアが挿入されていることを確認して、/mnt/cdrom にアクセス
してください。
amd が正常に動作しているようなら、システムの起動時に自動的に amd を起動する
ように /etc/rc.conf ファイルを編集します。以下のような記述を有効にします。
amd_enable="YES"
amd_flags="-l syslog -c 1800 /mnt /etc/amd.map"
以上でシステムを再起動すれば、自動的に amd が起動されます。
この場合は -l syslog オプションで amd を起動しているので、 amd のログは
syslog(system log daemon)を使用してログが記録されます。
/etc/newsyslog.conf ファイルには
/var/log/amd.log 664 7 100 * Z
と記述されているので、syslog のための設定は不要ですが、
# touch /var/log/amd.log
のようにログファイルを作成しておきます。
また、amd のマップファイルを変更したため、 amd を再起動させたいときは、
# kill -HUP `cat /var/run/amd.pid`
を実行します。amd を停止させたいときは、同様に、
# kill `cat /var/run/amd.pid`
とします。
autofs
オートマウンタには、amd と autofs の2種類があります。
amd はユーザ空間に実装され、カーネルの一部ではありません。amd は
NFSシステム経由で、全てのオートマウントされるファイルシステムのトラフィックを
ルーティングします。
autofs は、カーネルにアシストされる新しいシステムです。これは、
オートマウントポイントが、他の通常のファイルシステムのどこにあるかを
知っており、オートマウントプログラムは、そのマウントポイントを使用します。
Linux では、autofs がパッケージとして用意されているので、以下のようにして
パッケージより autofs をインストールします。ちなみに、インストールする
システムは Vine Linux 1.1 です。
# rpm -Uvvh autofs-3.1.1-8.1.i386.rpm
autofs の設定は、/etc/auto.master と /etc/auto.misc の 2つのファイルで
行います。
/etc/auto.master の中身は、デフォルトでは、以下のようになっています。
/misc /etc/auto.misc --timeout 60
最初のエントリ(/misc)は、二番目のエントリ(/etc/auto.misc)のファイルに
記述してある、いくつかのマウントポイントが設定されるディレクトリです。
三番目のオプション(--timeout 60)は、マウントされたファイルシステムが、
使用されないまま60秒経過すると、自動的にアンマウントすることを
示しています。
/etc/auto.misc はマップファイルです。このファイルの中身は、デフォルトでは
以下のようになっています。
kernel -ro,soft,intr ftp.kernel.org:/pub/linux
cd -fstype=iso9660,ro :/dev/cdrom
#floppy -fstype=auto :/dev/fd0
#floppy -fstype=ext2 :/dev/fd0
#e2floppy -fstype=ext2 :/dev/fd0
#jaz -fstype=ext2 :/dev/sdc1
最初のエントリは、マウントポイントです。例えば、cd の場合は、マウントポイントは
/misc/cd になります。二番目のエントリは、マウントのオプションを指定します。
最後のエントリは、ファイルシステムの場所を示しています。上記の
kernel エントリは NFSマウントとなっています。その他の行は、ローカルデバイスを
示しています。
以上で autofs の設定は終了です。autofs の起動スクリプトは、
/etc/rc.d/init.d/autofs にありますので、手動で起動するには、
以下のようにします。
# /etc/rc.d/init.d/autofs start
Starting automounter:
例えば、/mics/cd にアクセスしたら、CDROMドライブをオートマウントできることを
確認します。いちいち、/misc/cd に移動するのが面倒な場合には、以下のように
シンボリックリンクを張っておけば、/cdrom に移動すればマウントされます。
# ln -s /misc/cd /cdrom
以上で autofs の設定は完了です。システムの起動時に、自動的に autofs が
起動するように設定します。Vine Linux 1.1 では、ntsysv という管理ツールを
使うと便利です。
# ntsysv
使わない場合は、例えばランレベルが5(xdmを使用)の場合には、以下のように
シンボリックリンクを張ります。
# ln -s /etc/rc.d/init.d/autofs /etc/rc.d/rc5.d/S72autofs
戻る
sakai@oak.eg.t.kanazawa-u.ac.jp
Last modified: Sun Dec 19 02:12:01 JST 1999