EN JA
MOUNT.CONF(8)
MOUNT.CONF(8) FreeBSD System Manager's Manual MOUNT.CONF(8)

名称

mount.confルートファイルシステムマウント設定ファイル

書式

/.mount.conf

解説

bootup プロセスの間に、 FreeBSD カーネルは、 src/sys/kern/vfs_mountroot.cvfs_mountroot() 関数のロジックを使用して、ルートファイルシステムをマウントしようと試みます。ルートマウントのロジックは、次のように記述することができます:
  1. カーネルは、ルートファイルシステムをマウントするためのデフォルトの指示があるメモリ設定ファイルを合成します。このためのロジックは、 vfs_mountroot_conf0() にあります。
  2. カーネルは、最初にルートファイルシステムとして devfs(8) をマウントします。
  3. 次に、カーネルは、ステップ 1 で作成されたメモリ内設定ファイルを解析し、実際のルートファイルシステムをマウントしようと試みます。設定ファイルの形式については、 「ファイル形式」 を参照してください。
  4. 実際のルートファイルシステムがマウントされるとき、 devfs は、 /dev ディレクトリに再びマウントされます。
  5. /.mount.conf ファイルがちょうどマウントされたルートファイルシステムに存在しないなら、ルートマウントのロジックは、ここで止まります。
  6. /.mount.conf ファイルがちょうどマウントされたルートファイルシステムに存在するなら、このファイルは、解析され、カーネルは、ルートファイルシステムを再マウントしようと試みるためにこの新しい設定ファイルを使用します。設定ファイルの形式については、 「ファイル形式」 を参照してください。
  7. 新しいルートファイルシステムに /.mount ディレクトリがあるなら、古いルートファイルシステムは、 /.mount に再マウントされます。
  8. ルートマウントのロジックは、ステップ 4 に戻ります。

ルートマウントのロジックは、再帰的で、マウントされるそれぞれの新しいルートファイルシステムに、 /.mount.conf ファイルがある限り、ステップ 8 が繰り返されます。

ファイル形式

カーネルは、 .mount.conf の各行を解析し、次に、それが解析されるとすぐに、その行で指定されたアクションを実行することを試みます。
#
# で始まる行は、コメントで無視されます。
{FS}:{MOUNTPOINT} {OPTIONS}
カーネルは、次のものと等価な操作で、これをマウントしようと試みます:

mount -t {FS} -o {OPTIONS} {MOUNTPOINT} /

これのマウントが成功するなら、 .mount.conf のそれ以上の行は、無視されます。すべての .mount.conf 中の行が処理され、ルートファイルシステムのマウントが成功しなかったなら、 .onfail によって指定されたアクションが実行されます。

.ask
カーネルがこの行を処理するとき、 mountroot> コマンド行のプロンプトが表示されます。このプロンプトで、オペレータはルートのマウントに入ることができます。
.md file
外部記憶装置として file を使用し、メモリに裏打ちされた md(4) 仮想ディスクを作成します。
.onfail [panic|reboot|retry|continue]
.mount.conf 中のすべての行を解析した後に、カーネルが、ルートファイルシステムをマウントすることができないなら、 .onfail 指示は、どのアクションを実行するかをカーネルに伝えます。
.timeout N
ルートファイルシステムをマウントしようと試みる前に、ルートマウントデバイスが存在しないなら、それをマウントしようと試みる前に現われるデバイスに対して多くても N 秒にウェートします。 .timeout が指定されないなら、デフォルトのタイムアウトは、3 秒です。

使用例

次の例 .mount.conf は、ISO CD9660 ファイルシステムとして最初にルートファイルシステムを /dev/cd0 にマウントすることを試みるようにカーネルに指令し、次に、それが動作しないなら、 /dev/acd0 に ISO CD9660 ファイルシステムとして、マウントすることを試みるように指令し、次に、それが動作しないなら、 /dev/ada0s1a に UFS ファイルシステムとして、マウントすることを試みるように指令します。それが動作しないなら、オペレータが手動でマウントするルートファイルシステムに入ることができるところで、 mountroot> コマンド行のプロンプトが表示されます。最後に、それが動作しないなら、カーネルは、パニックします。

.onfail panic 
.timeout 3 
cd9660:/dev/cd0 ro 
.timeout 0 
cd9660:/dev/acd0 ro 
.timeout 3 
ufs:/dev/ada0s1a 
.ask

次の例 .mount.conf は、ファイル /data/OS-1.0.iso にアタッチされた md(4) メモリディスクを作成し、次に、ちょうど作成された md デバイスに ISO CD9660 ファイルシステムをマウントするようにカーネルに指令します。最後の行は、無視されるコメントです。

.timeout 3 
.md /data/OS-1.0.iso 
cd9600:/dev/md# ro 
# Can also use cd9660:/dev/md0 ro

次の例 .mount.conf は、ファイル /data/base.ufs.uzip にアタッチされた md(4) メモリディスクを作成し、次に、UFS ファイルシステムを geom_uzip(4) ドライバによってちょうど作成された md uzip デバイスにマウントするようにカーネルに指令します。

.md /data/base.ufs.uzip 
ufs:/dev/md#.uzip ro 
# Can also use ufs:/dev/md0.uzip ro

次の例 .mount.conf は、 chroot(2) 環境があるディレクトリ /jail/freebsd-8-stable に unionfs をマウントするようにカーネルに指令します。

.timeout 3 
unionfs:/jail/freebsd-8-stable

マウントされるルートファイルシステムごとに、ルートマウントのロジックが適切に devfs(8) を再マウントすることができるように、 /dev ディレクトリは、存在しなければ なりません。このディレクトリが存在しないなら、システムは、 bootup プロセスの間にハングアップするかもしれません。

歴史

mount.conf ファイルは、 FreeBSD 9.0 ではじめて登場しました。

作者

/.mount.conf を解析する FreeBSD カーネルのルートマウントのロジックは、 Marcel Moolenaar <marcel@FreeBSD.org>によって書かれました。このマニュアルページは、 Craig Rodrigues <rodrigc@FreeBSD.org>によって書かれました。
July 7, 2013 FreeBSD