Provided by: manpages-ja_0.5.0.0.20180315+dfsg-1_all bug

名前

       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_rootchroot の両方が現在の 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)