ivot_rootを有効/テストする方法は?

ivot_rootを有効/テストする方法は?

テストしたい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を実行します。箱/カートン

おすすめ記事