initramfs 이미지를 수동으로 구축하거나, 파티션에 grub을 설치하거나, 손상된 설치를 복구할 때 Live CD에서 OS로 루트를 이동하는 것만으로도 온라인에서 많은 예를 볼 수 있습니다.
이제 chroot 자체의 개념은 이해하기 어렵지 않습니다. 단지 루트를 우리가 지정한 디렉터리로 변경하고 해당 루트를 사용하여 셸을 시작하는 것뿐입니다. 필요에 따라 환경 변수를 구성할 수도 있습니다.
나를 혼란스럽게 하는 것은 실제 chroot를 수행하기 전에 진행되는 준비, 특히 가상 파일 시스템의 마운트입니다.
다음 예를 들어보세요 -:
먼저 /root 파티션을 마운트합니다.
$ mount -t ext4 /dev/sda5 /mnt/ubuntu
그런 다음 가상 파일 시스템을 마운트합니다.
$ mount -t proc none /mnt/ubuntu/proc
$ mount -o bind /dev /mnt/ubuntu/dev
$ mount -o bind /sys /mnt/ubuntu/sys
이것이 나를 혼란스럽게 만드는 것입니다. 이 가상 파일 시스템은 LiveCD용이죠?루트를 변경하려는 운영 체제에서 어떻게 작동할 수 있나요?그들은 다른 운영 체제에 속합니다.
예를 들어 이답변이전 질문에 대해 설치에 위 명령이 필요한 이유는 update-initramfs
커널 이미지를 생성하기 전에 운영 체제에 대한 정보가 필요하기 때문입니다. 그렇다면 여기서 어떻게 이런 일이 일어날 수 있습니까? 커널 이미지를 빌드한 OS가 아닌 LiveCD에서 파일 시스템을 마운트하고 있습니다.따라서 대상 운영 체제의 정보가 아닌 LiveCD의 정보를 사용하게 됩니다. 이는 LiveCD용 커널 이미지를 생성하는 것과 같습니다.이상적인 것은 무엇입니까? (틀렸다면 정정해주세요)
그리고 왜 필요한가요?그냥 설치하는 대신 번들로 설치하는 이유는 무엇입니까?
지금까지 본 예에서는 일반적으로 위 단계를 수행한 후 실제 chroot 명령이 실행됩니다.
$ chroot /mnt
지금까지 위의 문제에 대한 명확한 설명을 찾지 못했습니다. 누군가가 평신도의 용어로 설명할 수 있기를 바랍니다.
답변1
/proc
실행 중인 커널에 대한 인터페이스 이며 /sys
실제로 설치된 운영 체제와 관련이 없습니다. /dev
어쨌든 모두 똑같습니다.
대부분의 프로그램에는 이러한 디렉터리가 필요합니다. 하지만 미리 준비할 필요는 없습니다 chroot
. chroot
순수 루트 볼륨으로 이동하여 거기에서 나머지를 설치할 수 있습니다 (OS가 부팅할 때와 마찬가지로).