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여러 가지 중요한 제한 사항이 있습니다. 그 중 하나는 새 루트가 현재 루트와 다른 파일 시스템에 있어야 한다는 것입니다. 귀하의 경우, /home아치 시스템은 이미 파일 시스템이 마운트되어 있지 않는 한 현재 루트와 동일한 파일 시스템에 마운트될 가능성이 높습니다.

그러나 당신이 원하지 않을 가능성이 있습니다 pivot_root(). 주로 시스템 시작 중에 사용되며 일부정말 이상해실행 중인 시스템에서 사용될 때의 효과. chroot이는 시스템의 나머지 부분에 영향을 주지 않고 의 영향을 받지 않으므로 대신 이것을 사용할 수 있습니다 pivot_root. 예를 들면 다음과 같습니다.

chroot arch-root /bin/bash

답변2

질문 작성자가 제안한 솔루션:

내가 찾았어해결책:

--privileged=true로 docker 실행

그래서 우리는 도커 컨테이너에서ivot_root를 테스트할 수 있습니다.

관련 정보