외부 chroot에서 /proc에 액세스

외부 chroot에서 /proc에 액세스

기본적으로 아래 설명된 대로 QEMU를 사용하여 외부 chroot 환경을 설정하려고 합니다.https://www.hellion.org.uk/blog/posts/foreign-chroots-with-schroot-and-qemu/.

호스트 시스템은 Ubuntu x86_64(Github Actions)이며, arm용 Debian을 실행하는 외부 chroot가 있습니다.

이제 apt 설치를 통해 OCaml을 설정하려고 시도한 opam다음 .OCaml 을 찾을 수 없어 opam init실패합니다 ./proc/sys/kernel/overflowuid

더 깊이 파고들어 보니, /proc그 루트 감옥 내부는 완전히 비어 있었습니다. sudo mount -B /proc $CROSS_ROOT/proc실행 직후 스크립트에 추가를 시도했지만 debootstrap여전히 소용이 없습니다 /proc. 여전히 비어 있습니다. 와 동일합니다 sudo mount -t proc /proc $CROSS_ROOT/proc.

또, 초루트 감옥에서 뛰쳐나왔을 때 mount | grep proc보긴 했지만 /proc보지는 못했다 CROSS_ROOT/proc.

내가 알아차린 또 다른 이상한 점은 mount설치 목록을 표시하기 위해 chroot 감옥 내부를 실행할 때 mtab찾을 수 없다는 오류 메시지가 표시된다는 것입니다. 이것이 정상입니까, 아니면 여기에 다른 문제가 있음을 나타내는 것입니까?

작은 버그를 배제하기 위해 $CROSS_ROOTCI 스크립트에서 이것을 여러 번 사용했으며 debootstrap변수가 비어 있으면 다른 오류도 많이 발생할 것이라고 생각합니다.

/proc왜 chroot 감옥 내부를 볼 수 없나요 ?

답변1

debootstrap두 단계로 실행됩니다.

sudo debootstrap --variant=buildd --include=fakeroot,build-essential,sudo --arch=armhf --foreign buster $CROSS_ROOT $CROSS_MIRROR
sudo chroot $CROSS_ROOT ./debootstrap/debootstrap --second-stage

설치는 /proc두 단계 사이가 아닌 두 번째 단계 후에 완료해야 합니다. 두 번째 단계가 /proc다시 제거됩니다. (질문에 언급된 소스는 qemu-arm-static실제로 두 단계 사이에서 발생해야 하는 chroot 내부에 몇 가지 추가 마법을 제공합니다. 특히 중앙 시스템 구성 요소와 관련된 파일 시스템에 대한 다른 사용자 정의로 인해 문제가 발생할 수 있으며 두 번째 단계로 철회될 수 있습니다.)

mount 명령을 두 번째 단계로 옮긴 후에 debootstrap는 chroot Jail이 표시됩니다 /proc.

관련 정보