.\" Copyright (c) 1980, 1989, 1993 .\" The Regents of the University of California. All rights reserved. .\" .\" Redistribution and use in source and binary forms, with or without .\" modification, are permitted provided that the following conditions .\" are met: .\" 1. Redistributions of source code must retain the above copyright .\" notice, this list of conditions and the following disclaimer. .\" 2. Redistributions in binary form must reproduce the above copyright .\" notice, this list of conditions and the following disclaimer in the .\" documentation and/or other materials provided with the distribution. .\" 3. All advertising materials mentioning features or use of this software .\" must display the following acknowledgement: .\" This product includes software developed by the University of .\" California, Berkeley and its contributors. .\" 4. Neither the name of the University nor the names of its contributors .\" may be used to endorse or promote products derived from this software .\" without specific prior written permission. .\" .\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND .\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE .\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE .\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE .\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL .\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS .\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) .\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT .\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" .\" @(#)mount.2 8.3 (Berkeley) 5/24/95 .\" %FreeBSD: src/lib/libc/sys/mount.2,v 1.40.2.1 2005/02/26 04:44:54 trhodes Exp % .\" .\" $FreeBSD$ .Dd February 23, 2005 .Dt MOUNT 2 .Os .Sh 名称 .Nm mount , .Nm nmount , .Nm unmount .Nd ファイルシステムをマウントまたはマウント解除する .Sh ライブラリ .Lb libc .Sh 書式 .In sys/param.h .In sys/mount.h .Ft int .Fn mount "const char *type" "const char *dir" "int flags" "void *data" .Ft int .Fn unmount "const char *dir" "int flags" .In sys/uio.h .Ft int .Fn nmount "struct iovec *iov" "u_int niov" "int flags" .Sh 解説 .Fn mount システムコールは、ファイルシステムオブジェクトをシステムファイルツリーの マウントポイント .Fa dir に付けます。 引数 .Fa data はマウントされるファイルシステムオブジェクトを記述します。 引数 .Fa type は .Fa data をどのように解釈するかをカーネルに通知します (後述の .Fa type を参照)。 ファイルシステムの内容は、新しいマウントポイント .Fa dir を通して利用できるようになります。 マウントが成功すると .Fa dir にあるすべてのファイルが覆い隠された状態になり、 ファイルシステムがマウント解除されるまで利用できなくなります。 .Pp .Fn nmount システムコールは、マウントオプション (ファイルシステムタイプ名称、 マウントされるデバイス、マウントポイントなど) が、 .Fa niov 個の要素を持つ .Fa iov 配列によって名前と値の組の配列として渡されることを除いては、 .Fn mount と同様に動作します。 以下のオプションは全てのファイルシステムで要求されます: .Bl -item -offset indent -compact .It .Li fstype Ta ファイルシステムタイプ名称 (例えば Dq Li procfs ) .It .Li fspath Ta マウントポイントのパス名 (例えば Dq Li /proc ) .El .Pp ファイルシステムタイプに依存して、その他のオプションが認識あるいは要求 されます。 例えば、殆どのディスクベースのファイルシステムは、上記のオプションに加えて スペシャルデバイスのパス名を格納する .Dq Li from オプションを要求します。 .Pp デフォルトではスーパユーザのみが .Fn mount システムコールを呼び出すことができます。 この制約は .Xr sysctl 8 の .Va vfs.usermount 変数を 0 ではない値に設定することで解除することが可能です。 .Pp 次の .Fa flags は、ファイルシステムアクセスに影響のあるデフォルト値を抑制するように 指定できます。 .Bl -tag -width MNT_SYNCHRONOUS .It Dv MNT_RDONLY ファイルシステムを読取り専用として取り扱います。 スーパユーザでさえこれに書き込むことはできません。 このオプションなしに MNT_UPDATE を指定すると、 読取り専用ファイルシステムが読取り / 書込みにアップグレードされます。 .It Dv MNT_NOEXEC そのファイルシステムからファイルを実行できないようにします。 .It Dv MNT_NOSUID 実行するときに、ファイルについての setuid ビットまたは setgid ビットを 尊重しません。 このフラグは、呼び出し側がスーパユーザでないときに、自動的に設定されます。 .It Dv MNT_NOATIME ファイルアクセス時刻の更新を行いません。 .It Dv MNT_NODEV ファイルシステム上の特殊ファイルを解釈しません。 このフラグは、呼び出し側がスーパユーザでないときに、自動的に設定されます。 .It Dv MNT_SNAPSHOT ファイルシステムのスナップショットを作成します。 これは現状では UFS2 ファイルシステムのみをサポートします。 詳細については .Xr mksnap_ffs 8 を参照して下さい。 .It Dv MNT_SUIDDIR SUID ビットが設定されたディレクトリは、新しいファイルの所有者を ディレクトリと同じに設定します。 このフラグに効果を持たせるためには、カーネルが SUIDDIR オプションを 付けてコンパイルされていることが必要です。 より多くの情報のため .Xr mount 8 および .Xr chmod 2 のマニュアルページを参照してください。 .It Dv MNT_SYNCHRONOUS ファイルシステムへの入出力はすべて同期的に行われます。 .It Dv MNT_ASYNC ファイルシステムへの入出力はすべて非同期的に行われます。 .It Dv MNT_FORCE ファイルシステムがクリーンでないように見えても、読み書き可でマウントを 強行します。 危険です。 .Dv MNT_UPDATE および .Dv MNT_RDONLY と一緒に指定することで、たとえ幾つかのファイルが書込みのためにオープンされて いたとしても、ファイルシステムは強制的に読込み専用にダウングレードされます。 .It Dv MNT_NOCLUSTERR クラスタ読取りを無効にします。 .It Dv MNT_NOCLUSTERW クラスタ書込みを無効にします。 .El .Pp フラグ .Dv MNT_UPDATE は、マウントコマンドがすでにマウントされたファイルシステムに 適用されていることを示します。 これによって、ファイルシステムをマウント解除および再マウントする必要なしに、 マウントフラグを変更できます。 ファイルシステムによっては、すべてのフラグの変更を許容しない場合もあります。 たとえば多くのファイルシステムが、 読み書き可から読取り専用への変更を許容しません。 .Pp vfs サブシステムは、フラグ .Dv MNT_RELOAD によってすでにマウントされているファイルシステムに 関係するデータ構造体を更新します。 .Pp .Fa type 引数でファイルシステムを指定します。 システム上で既知なファイルシステムのタイプは .Xr lsvfs 1 で得ることができます。 .Pp .Fa data 引数は、マウントするタイプに固有の引数が入った構造体を指すポインタです。 これらの引数構造体についての形式は各ファイルシステムに ついてのマニュアルページに記載されています。 慣習によりファイルシステムのマニュアルページは、 .Xr lsvfs 1 によって返されたファイルシステム名に ``mount_'' の接頭辞を付けて 命名されます。 それゆえ、 .Tn NFS ファイルシステムは .Xr mount_nfs 8 マニュアルページに記述されています。 UFS と UFS2 として知られているデフォルトのファイルシステムのための マニュアルページが存在しないことに注意しなくてはなりません。 .Pp .Fn unmount システムコールは、ファイルシステムを指定のマウントポイント .Fa dir から対応付け解除します。 .Pp .Fa flags 引数が .Dv MNT_FORCE を含むことで、ファイルがアクティブであっても、 ファイルシステムが強制的にマウント解除される必要があることを示します。 アクティブな特殊デバイスは機能し続けますが、 他のアクティブなファイルへのそれ以降のアクセスは、 たとえファイルシステムが後に再マウントされたとしてもエラーを引き起こします。 .Pp .Dv MNT_BYFSID フラグが指定されている場合には、 .Fa dir は .Dq Li FSID : Ns Ar val0 : Ns Ar val1 としてエンコードされたファイルシステム ID に置き換えられるべきです。 ここで .Ar val0 および .Ar val1 は .Vt fsid_t .Va val[] 配列の内容の 10 進数表現です。 明示されたファイルシステム ID を持っているファイルシステムは、 マウント解除されます。 .Sh 戻り値 .Rv -std .Sh エラー .Fn mount および .Fn nmount システムコールは、次のうちの 1 つでも起きたときには処理を失敗します: .Bl -tag -width Er .It Bq Er EPERM 呼び出し側がスーパユーザでも .Fa dir の所有者でもありません。 .It Bq Er ENAMETOOLONG パス名の構成要素が 255 文字を越えているか、 またはパス名全体が 1023 文字を越えています。 .It Bq Er ELOOP パス名を変換するときに検出されたシンボリックリンクが多すぎます。 .It Bq Er ENOENT .Fa dir の構成要素が存在しません。 .It Bq Er ENOTDIR .Fa name の構成要素がディレクトリでないか、または .Fa special のパスの構成要素中にディレクトリ以外のものが含まれています。 .It Bq Er EBUSY 別のプロセスが現時点で .Fa dir 引数への参照を保持しています。 .It Bq Er EFAULT .Fa dir はプロセスに割り当てられたアドレス空間の範囲外を指しています。 .El .Pp 次のエラーは、 .Em ufs ファイルシステムのマウントについて発生する可能性があります。 .Bl -tag -width Er .It Bq Er ENODEV ufs_args の構成要素 .Fa fspec が存在しません。 .It Bq Er ENOTBLK .Fa fspec 引数はブロックデバイスではありません。 .It Bq Er ENXIO .Fa fspec のメジャーデバイス番号が範囲外です (これはハードウェアに 対応するデバイスドライバが存在しないことを示します)。 .It Bq Er EBUSY .Fa fspec は既にマウントされています。 .It Bq Er EMFILE マウントテーブル空間が枯渇しました。 .It Bq Er EINVAL ファイルシステムのスーパブロックに 不都合なマジック番号または範囲外のブロックサイズがありました。 .It Bq Er ENOMEM ファイルシステムについてのシリンダグループ情報を読み取るのに十分な メモリがありませんでした。 .It Bq Er EIO スーパブロックまたはシリンダグループの情報を読み取る間に 入出力エラーが発生しました。 .It Bq Er EFAULT .Fa fspec がプロセスに割り当てられたアドレス空間の範囲外を指しています。 .El .Pp 次のエラーは .Em nfs ファイルシステムマウントについて起きる可能性があります: .Bl -tag -width Er .It Bq Er ETIMEDOUT .Em nfs がサーバと接触しようとして時間切れになりました。 .It Bq Er EFAULT nfs_args によって記述された情報の一部が、 プロセスに割り当てられたアドレス空間の範囲外を指しています .El .Pp .Fn unmount システムコールは、次のエラーの 1 つでも起きたときには処理を失敗します: .Bl -tag -width Er .It Bq Er EPERM 呼び出し側がスーパユーザでも該当する .Fn mount の呼び出しを実行したユーザでもありません。 .It Bq Er ENAMETOOLONG パス名の長さが 1023 文字を越えていました。 .It Bq Er EINVAL 指定されたディレクトリがマウントテーブル内にありません。 .It Bq Er ENOENT .Dv MNT_BYFSID を使用して指定されたファイルシステム ID がマウントテーブルの中に 見つかりませんでした。 .It Bq Er EINVAL .Dv MNT_BYFSID を使用して指定されたファイルシステム ID がデコードされることが できませんでした。 .It Bq Er EINVAL 指定されたファイルシステムがルートファイルシステムではありません。 .It Bq Er EBUSY プロセスがファイルシステム上にあるファイルへの参照を保持しています。 .It Bq Er EIO キャッシュされたファイルシステム情報を書き込んでいる間に 入出力エラーが起きました。 .It Bq Er EFAULT .Fa dir 引数がプロセスに割り当てられたアドレス空間の範囲外を指しています。 .El .Pp .Em ufs マウントは、最大数のファイルシステムが現時点でマウントされている場合にも 処理を失敗します。 .Sh 関連項目 .Xr lsvfs 1 , .Xr mksnap_ffs 8 , .Xr mount 8 , .Xr umount 8 .Sh バグ エラーコードには、明瞭なメッセージにするために変更が必要なものがあります。 .Sh 歴史 .Fn mount 関数と .Fn unmount 関数は .At v6 で登場しました。