テストしたいpivot_root
このコマンドは、現在のプロセスのルートファイルシステムをこのディレクトリに移動し、新しいルートファイルシステムをput_old
作成します。new_root
ただし、常に次のエラーが発生します。
pivot_root: failed to change root from .' toold-root/': Invalid argument
Fedoraをデフォルトのルートとして使用しており、ホームフォルダにArchlinuxがあります。
[root@localhost arch-root]# ls
bin boot dev etc home lib lib64 mnt old-root
opt proc root run sbin srv sys tmp usr var
[root@localhost arch-root]# pivot_root . old-root/
pivot_root: failed to change root from .' toold-root/': Invalid argument
また、Linux関数を呼び出してみましたが、pivot_root("/chroot_test", "/chroot_test/old-root")
同じエラーが発生しました。
これについて考えていますか?
アップデート#1
Dockerでもテストを試みましたpivot_root
。このアーチルートをDockerコンテナにインストールしました。ただし、次のエラーが発生します。Operation not permitted
root@00d871ce892b:/# cd test_root/
root@00d871ce892b:/test_root# ls
bin boot dev etc home lib lib64 mnt old-root opt proc root run sbin srv sys test_pivot_root test_pivot_root.c tmp usr var
root@00d871ce892b:/test_root# pivot_root . tmp/
pivot_root: Operation not permitted
ベストアンサー1
arch-root
マウントとマウント解除が可能な別々のファイルシステムにあることは本当に確実ですか?
pivot_root
最新バージョンswitch_root
では、カーネルにマウントされたファイルシステムに関する情報を処理して機能します。
新しいルートファイルシステムはファイルシステムの「ルート」でなければならず、「.」を渡すことはできません。 「.」がマウントされたファイルシステムのルートでない限り、新しいルートとして使用されます。
現在の設定で試したい場合pivot_root
(arch-rootがルートではなくサブディレクトリであると仮定)、最も簡単な方法はtmpfs
切り替えるファイルシステムを作成し、そこに必要なコンテンツをコピーすることです。
次の内容から始めることができます。 (適切に500M調整du -sh arch-root
)
mkdir /ramroot マウント -n -t tmpfs -o サイズ=500M no/ramroot cd arch-root#(ルートファイルシステムの内容を含む) 探す。 -深さ-xdev -print | cpio -pd --quiet/ramroot CD /ラムルート mkdir 古いルートディレクトリ ピボットルート。古い根 chrootを実行します。箱/カートン