OSDN Git Service

(split) LDP: Restore and add Copyrights for draft pages
[linuxjm/LDP_man-pages.git] / draft / man2 / pivot_root.2
1 .\" Copyright (C) 2000 by Werner Almesberger
2 .\"
3 .\" %%%LICENSE_START(GPL_NOVERSION_ONELINE)
4 .\" May be distributed under GPL
5 .\" %%%LICENSE_END
6 .\"
7 .\" Written 2000-02-23 by Werner Almesberger
8 .\" Modified 2004-06-17 Michael Kerrisk <mtk.manpages@gmail.com>
9 .\"
10 .\"*******************************************************************
11 .\"
12 .\" This file was generated with po4a. Translate the source file.
13 .\"
14 .\"*******************************************************************
15 .\"
16 .\" Japanese Version Copyright (c) 2000 NAKANO Takeo all rights reserved.
17 .\" Translated Wed Jun 14 2000 by NAKANO Takeo <nakano@apm.seikei.ac.jp>
18 .\"
19 .TH PIVOT_ROOT 2 2012\-07\-13 Linux "Linux Programmer's Manual"
20 .SH 名前
21 pivot_root \- root ファイルシステムを変更する
22 .SH 書式
23 \fBint pivot_root(const char *\fP\fInew_root\fP\fB, const char *\fP\fIput_old\fP\fB);\fP
24
25 \fI注\fP: このシステムコールには glibc のラッパー関数は存在しない。「注意」の節を参照。
26 .SH 説明
27 .\"
28 .\" The
29 .\" .B CAP_SYS_ADMIN
30 .\" capability is required.
31 \fBpivot_root\fP()  は呼び出し元のプロセスの root ファイルシステムを \fIput_old\fP ディレクトリに移動し、
32 \fInew_root\fP を呼び出し元のプロセスの新しい root ファイルシステムにする。
33
34 \fBpivot_root\fP()  の典型的な利用法は、システムの起動中にシステムが一時的な root ファイルシステム (例えば \fBinitrd\fP)
35 をマウントし、これに続いて本当の root ファイルシステムをマウントし、 後者を必要な全てのプロセス・スレッドの カレント root
36 に変更するような場合である。
37
38 古い root ディレクトリを使っていた全てのプロセスやスレッドの カレント root とカレントワーキングディレクトリを、
39 \fBpivot_root\fP()  が変更するかどうかはわからない。 \fBpivot_root\fP()  の呼びだしプロセスは、古い root
40 やカレントワーキングディレクトリを使っていた プロセスが、いずれの場合でも正しく動作することを保証しなければならない。
41 これを簡単に行うには、それらのプロセスの root と カレントワーキングディレクトリを \fBpivot_root\fP()  を呼び出す前に
42 \fInew_root\fP に変更しておくことである。
43
44 上記の段落は、将来 \fBpivot_root\fP()  が変更されるかも知れないことを鑑みて、わざと曖昧に書いてある。 本ページを記述している時点では、
45 \fBpivot_root\fP()  は古い root ディレクトリを用いている全てのプロセス・スレッドの root と カレントワーキングディレクトリを
46 \fInew_root\fP に変更する。これはカーネルのスレッドが古い root ディレクトリを busy 状態にしないために必要である。これらのスレッドが
47 古いディレクトリを root やカレントワーキングディレクトリとしていると、 ファイルシステムに一切アクセスしない場合でも 古い root が busy
48 になってしまうからである。 将来は、カーネルスレッドがあらゆるファイルシステムへのアクセスを 明示的に放棄するメカニズムができ、このでしゃばりな機能は
49 \fBpivot_root\fP()  から削除されるかもしれない。
50
51 これは呼び出し元のプロセスについても当てはまることに注意。 \fBpivot_root\fP()
52 がカレントプロセスのカレントワーキングディレクトリに影響するかどうかは 分からない。したがって \fBpivot_root\fP()  の直後に
53 \fBchdir("/")\fP を呼び出すとよい。
54
55 \fInew_root\fP および \fIput_old\fP には以下の制限がある:
56 .IP \- 3
57 ディレクトリでなければならない。
58 .IP \- 3
59 \fInew_root\fP と \fIput_old\fP は現在の root と同じファイルシステムにあってはならない。
60 .IP \- 3
61 \fIput_old\fP は \fInew_root\fP 以下になければならない。すなわち \fIput_old\fP を差す文字列に 1 個以上の \fI../\fP
62 を付けることによって \fInew_root\fP と同じディレクトリが得られなければならない。
63 .IP \- 3
64 他のファイルシステムが \fIput_old\fP にマウントされていてはならない。
65 .PP
66 利用例については \fBpivot_root\fP(8)  を参照のこと。
67
68 現在の root がマウントポイントではない (\fBchroot\fP(2)  や \fBpivot_root\fP()  の後など。以下も参照) 場合、 古い
69 root ディレクトリではなく、 そのファイルシステムのマウントポイントが \fIput_old\fP にマウントされる。
70
71 \fInew_root\fP はマウントポイントでなくてもよい。 この場合 \fI/proc/mounts\fP は、 \fInew_root\fP を root
72 (\fI/\fP)  とするファイルシステムのマウントポイントを表示する。
73 .SH 返り値
74 成功した場合は 0 が返される。エラーの場合は \-1 が返され、 \fIerrno\fP が適切に設定される。
75 .SH エラー
76 \fBpivot_root\fP()  は \fBstat\fP(2)  の返すあらゆるエラーを (\fIerrno\fP に)
77 返す可能性がある。さらに以下を返すことがある:
78 .TP 
79 \fBEBUSY\fP
80 \fInew_root\fP または \fIput_old\fP が、現在の root ファイルシステム上にあるか、既に \fIput_old\fP
81 になんらかのファイルシステムがマウントされている。
82 .TP 
83 \fBEINVAL\fP
84 \fIput_old\fP が \fInew_root\fP の下層にない。
85 .TP 
86 \fBENOTDIR\fP
87 \fInew_root\fP または \fIput_old\fP がディレクトリでない。
88 .TP 
89 \fBEPERM\fP
90 呼び出し元のプロセスが \fBCAP_SYS_ADMIN\fP ケーパビリティを持っていない。
91 .SH バージョン
92 \fBpivot_root\fP()  は Linux 2.3.41 で導入された。
93 .SH 準拠
94 \fBpivot_root\fP()  は Linux に固有のものなので、移植性はない。
95 .SH 注意
96 glibc はこのシステムコールに対するラッパー関数を提供していない。 \fBsyscall\fP(2)  を使って呼び出すこと。
97 .SH バグ
98 \fBpivot_root\fP()  はシステムの他のプロセス全ての root と カレントワーキングディレクトリとを変更しなくてもよいはずである。
99
100 \fBpivot_root\fP()  の使い方がもうちょっと曖昧になると、 あっという間にわけのわからない状態になってしまうだろう
101 .SH 関連項目
102 \fBchdir\fP(2), \fBchroot\fP(2), \fBstat\fP(2), \fBinitrd\fP(4), \fBpivot_root\fP(8)
103 .SH この文書について
104 この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.53 の一部
105 である。プロジェクトの説明とバグ報告に関する情報は
106 http://www.kernel.org/doc/man\-pages/ に書かれている。