ivot_rootをテストする方法は?

ivot_rootをテストする方法は?

pivot_root現在のプロセスのルートファイルシステムをput_oldディレクトリに移動し、new_rootを新しいルートファイルシステムにするコマンドラインをテストしたいと思います。http://man7.org/linux/man-pages/man8/pivot_root.8.html

しかし、私はいつも

pivot_root: failed to change root from `.' to `old-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 `.' to `old-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

pivot_rootいくつかの重要な制限があります。そのうちの1つは、新しいルートが現在のルートとは異なるファイルシステムに存在する必要があることです。あなたの場合、/homeアーチシステムは、すでにファイルシステムがマウントされていない限り、現在のルートと同じファイルシステムにマウントされる可能性が高くなります。

しかし、あなたが望んでいない可能性がありますpivot_root()。主にシステムの起動時に使用され、一部本当に変です実行中のシステムで使用した場合の効果。chrootこれはシステムの残りの部分に影響を与えずに影響を受けないため、代わりにこれを使用できますpivot_root。たとえば、次のようになります。

chroot arch-root /bin/bash

答え2

質問作成者が提案した解決策:

私が見つけた解決策:

--privileged=trueでdockerを実行する

だから私たちはドッカーコンテナでivot_rootをテストできます。

関連情報