MOUNT(2) FreeBSD システムコールマニュアル MOUNT(2)
名称
mount, nmount, unmount − ファイルシステムをマウントまたはマウント解除する |
ライブラリ
標準 C ライブラリ (libc, −lc) |
書式
#include <sys/param.h> int |
mount(const char *type, const char *dir, int flags, void *data); int |
unmount(const char *dir, int flags); #include <sys/uio.h> |
int |
nmount(struct iovec *iov, u_int niov, int flags); |
解説 |
mount() システムコールは、ファイルシステムオブジェクトをシステムファイル ツリーのマウントポイント dir に付けます。引数 data はマウントされるファイ ルシステムオブジェクトを記述します。引数 type は data をどのように解釈す るかをカーネルに通知します (後述の type を参照)。ファイルシステムの内容 は、新しいマウントポイント dir を通して利用できるようになります。マウント が成功すると dir にあるすべてのファイルが覆い隠された状態になり、ファイル システムがマウント解除されるまで利用できなくなります。 nmount() システムコールは、マウントオプション (ファイルシステムタイプ名 称、マウントされるデバイス、マウントポイントなど) が、 niov 個の要素を持 つ iov 配列によって名前と値の組の配列として渡されることを除いては、 mount() と同様に動作します。以下のオプションは全てのファイルシステムで要 求されます: |
fstype |
ファイルシステムタイプ名称 (例えば ‘‘procfs’’) |
||
fspath |
マウントポイントのパス名 (例えば ‘‘/proc’’) |
ファイルシステムタイプに依存して、その他のオプションが認識あるいは要求さ れます。例えば、殆どのディスクベースのファイルシステムは、上記のオプショ ンに加えてスペシャルデバイスのパス名を格納する ‘‘from’’ オプションを要求 します。 デフォルトではスーパユーザのみが mount() システムコールを呼び出すことがで きます。この制約は sysctl(8) の vfs.usermount 変数を 0 ではない値に設定す ることで解除することが可能です。 次の flags は、ファイルシステムアクセスに影響のあるデフォルト値を抑制する ように指定できます。 |
MNT_RDONLY
ファイルシステムを読取り専用として取り扱います。スーパ ユーザでさえこれに書き込むことはできません。このオプショ ンなしに MNT_UPDATE を指定すると、読取り専用ファイルシス テムが読取り / 書込みにアップグレードされます。 MNT_NOEXEC MNT_NOSUID MNT_NOATIME MNT_NODEV MNT_SNAPSHOT MNT_SUIDDIR MNT_SYNCHRONOUS MNT_ASYNC MNT_FORCE MNT_NOCLUSTERR MNT_NOCLUSTERW フラグ MNT_UPDATE は、マウントコマンドがすでにマウントされたファイルシス テムに適用されていることを示します。これによって、ファイルシステムをマウ ント解除および再マウントする必要なしに、マウントフラグを変更できます。 ファイルシステムによっては、すべてのフラグの変更を許容しない場合もありま す。たとえば多くのファイルシステムが、読み書き可から読取り専用への変更を 許容しません。 vfs サブシステムは、フラグ MNT_RELOAD によってすでにマウントされている ファイルシステムに関係するデータ構造体を更新します。 type 引数でファイルシステムを指定します。システム上で既知なファイルシステ ムのタイプは lsvfs(1) で得ることができます。 data 引数は、マウントするタイプに固有の引数が入った構造体を指すポインタで す。これらの引数構造体についての形式は各ファイルシステムについてのマニュ アルページに記載されています。慣習によりファイルシステムのマニュアルペー ジは、 lsvfs(1) によって返されたファイルシステム名に ‘‘mount_’’ の接頭辞 を付けて命名されます。それゆえ、 NFS ファイルシステムは mount_nfs(8) マ ニュアルページに記述されています。 UFS と UFS2 として知られているデフォル トのファイルシステムのためのマニュアルページが存在しないことに注意しなく てはなりません。 unmount() システムコールは、ファイルシステムを指定のマウントポイント dir から対応付け解除します。 flags 引数が MNT_FORCE を含むことで、ファイルがアクティブであっても、ファ イルシステムが強制的にマウント解除される必要があることを示します。アク ティブな特殊デバイスは機能し続けますが、他のアクティブなファイルへのそれ 以降のアクセスは、たとえファイルシステムが後に再マウントされたとしてもエ ラーを引き起こします。 MNT_BYFSID フラグが指定されている場合には、 dir は ‘‘FSID:val0:val1’’ と してエンコードされたファイルシステム ID に置き換えられるべきです。ここで val0 および val1 は fsid_t val[] 配列の内容の 10 進数表現です。明示された ファイルシステム ID を持っているファイルシステムは、マウント解除されま す。 戻り値 |
成功して終了したときには値 0 を返します。そうでない場合、値 -1 が返され、 グローバル変数 errno が設定されてエラーを示します。 |
エラー
mount() および nmount() システムコールは、次のうちの 1 つでも起きたときに は処理を失敗します: |
[EPERM]
呼び出し側がスーパユーザでも dir の所有者でもありませ ん。 [ENAMETOOLONG] [ELOOP] [ENOENT] [ENOTDIR] [EBUSY] [EFAULT] 次のエラーは、 ufs ファイルシステムのマウントについて発生する可能性があり ます。 [ENODEV] [ENOTBLK] [ENXIO] [EBUSY] [EMFILE] [EINVAL] [ENOMEM] [EIO] [EFAULT] 次のエラーは nfs ファイルシステムマウントについて起きる可能性があります: [ETIMEDOUT] [EFAULT] unmount() システムコールは、次のエラーの 1 つでも起きたときには処理を失敗 します: [EPERM] [ENAMETOOLONG] [EINVAL] [ENOENT] [EINVAL] [EINVAL] [EBUSY] [EIO] [EFAULT] ufs マウントは、最大数のファイルシステムが現時点でマウントされている場合 にも処理を失敗します。 関連項目 |
バグ
エラーコードには、明瞭なメッセージにするために変更が必要なものがありま す。 |
歴史
mount() 関数と unmount() 関数は Version 6 AT&T UNIX で登場しました。 FreeBSD 10.0 February 23, 2005 FreeBSD 10.0 |