Provided by: manpages-ja_0.5.0.0.20221215+dfsg-1_all
名前
pivot_root - root ファイルシステムを変更する
書式
pivot_root new_root put_old
説明
pivot_root はカレントプロセスの root ファイルシステムを put_old ディレクトリに移動し、 new_root を新しい root ファイルシステムにする。 pivot_root(8) は pivot_root(2) を呼び出し ているだけなので、詳細は後者の man ページにあたって欲しい。 呼び出しプロセスの root とカレントワーキングディレクトリ (cwd) は pivot_root の実装に依存 して変わったり変わらなかったりする。 以下はどちらの場合にも動作する pivot_root の起動方法 だが、 pivot_root と chroot の両方が現在の PATH に入っている必要がある。 cd new_root pivot_root . put_old exec chroot . command chroot は古い root と新しい root の両方で使えなければならない。 なぜなら pivot_root がシェ ルの root ディレクトリを暗黙のうちに変更するかどうかは わからないからである。 exec chroot は動作している実行ファイルを変更する。 これは後で古い root ディレクトリがアン マウントされるために必要なのである。 また標準入力・標準出力・標準エラー出力が古い root ファイルシステムの デバイスを指していて、 root ファイルシステムを busy 状態にするかもしれ ない。 これらは chroot を実行するときに簡単に変更できる (以下を参照。 先頭のスラッシュがな いので (相対パスで指定しているので)、 pivot_root がシェルの root を変更する場合でもしない 場合でも動作することに注目。)
例
対話シェルから root ファイルシステムを /dev/hda1 に変更する: mount /dev/hda1 /new-root cd /new-root pivot_root . old-root exec chroot . sh <dev/console >dev/console 2>&1 umount /old-root 新しい root ファイルシステムを 10.0.0.1:/my_root から NFS でマウントし、 init を起動する: ifconfig lo 127.0.0.1 up # for portmap # configure Ethernet or such portmap # for lockd (implicitly started by mount) mount -o ro 10.0.0.1:/my_root /mnt killall portmap # portmap keeps old root busy cd /mnt pivot_root . old_root exec chroot . sh -c 'umount /old_root; exec /sbin/init' \ <dev/console >dev/console 2>&1
関連項目
chroot(1), mount(8), pivot_root(2), umount(8)