![ivot_root를 테스트하는 방법은 무엇입니까?](https://linux55.com/image/55840/ivot_root%EB%A5%BC%20%ED%85%8C%EC%8A%A4%ED%8A%B8%ED%95%98%EB%8A%94%20%EB%B0%A9%EB%B2%95%EC%9D%80%20%EB%AC%B4%EC%97%87%EC%9E%85%EB%8B%88%EA%B9%8C%3F.png)
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를 테스트할 수 있습니다.