사용자 지정 선택 패키지로 Linux 이미지를 만들려고합니다.
내가하려고하는 것은 XO 랩톱에서 사용할 패키지를 직접 만드는 것입니다. 패키지를 컴파일하는 데 필요한 모든 패키지를 빌드하고 플래시를 플래시 할 수 있다면 실제 XO 하드웨어에서 실제로 시간이 오래 걸리기 때문입니다. 이미지를 XO에 저장하면 시간과 공간을 절약 할 수 있습니다.
일부 패키지를 설치하려고 할 때 proc, sys, dev 디렉토리가 없어서 구성하지 못했습니다. 그래서 다른 곳에서 호스트 proc 디렉토리를 “chroot”환경에 “마운트”해야한다는 것을 알게되었습니다.
나는 두 가지 구문을 보았고 어느 것을 사용 해야할지 확실하지 않습니다.
호스트 머신에서 :
mount --bind /proc <chroot dir>/proc
또 다른 구문 (chroot 환경에서) :
mount -t proc none /proc
어느 것을 사용해야합니까? 차이점은 무엇입니까?
답변
들어 /proc
와 /sys
, 나는 당신이 두 방법을 사용할 수도있을 것 같군요. 둘 다 특수 파일 시스템이므로 여러 번 다시 작성할 수 있습니다 (바인드 마운트 방법은 호스트 시스템과 동일한 마운트를 사용하는 반면 다른 방법은 새 마운트를 사용함). 나는 항상 가이드에서 권장되는 바인드 마운트를 보았으므로 그것을 사용할 것입니다. 내가 아는 한, 중요한 차이점은 없습니다.
그러나 /dev
일반적으로 udev가 관리하는 tmpfs 마운트이므로 호스트 시스템과 실제로 동일한 파일 시스템이어야합니다. 즉, 바인드 마운트 방법을 사용해야합니다.
이 chroot가 잠시 동안있을 경우 이러한 항목을 /etc/fstab
호스트 시스템에 배치하여 작업을 단순화 할 수 있습니다.
답변
아치 리눅스 위키는 다음 명령을 제안한다 :
cd /mnt/arch # or where you are preparing the chroot dir
mount -t proc proc proc/
mount --rbind /sys sys/
mount --rbind /dev dev/
답변
젠투 핸드북은 특별히 다시 장착 / proc 디렉토리와 / dev에 대한이 두 가지 명령을 호출합니다. 나는 여러 번 사용했습니다.
mount -t proc none /mnt/chroot/proc
mount -o bind /dev /mnt/chroot/dev
/ sys는 단지 일반 폴더라고 생각하므로 하드 링크를 만들 수 있어야합니다.
ln /sys /mnt/chroot/sys
답변
이 대중적인 질문에서 Arch Linux가 스크립트를 arch-chroot 로 만들었다는 점에 주목할 가치가 있습니다 . 다운로드arch-install-scripts-15-1-any.pkg.tar.xz
이것도 Arch-Linux 와 Manjaro 에서 다양한 관련 문제를 처리 하여 성공적으로 사용했습니다. 아마도 더 Arch- 유도체 와 같은 포물선 단지뿐만 아니라 호환됩니다.
chroot
보조 Manjaro 설치에 대한 간단한 표준 은 실행을 허용하지 않지만
pacman --sync linux
(시스템 충돌 후 은색 탄환)
arch-chroot /run/media/*YOURSELF*/manja-disk2
를 통해 보조 아치 파생 설치를 수정할 수 있습니다.
pacman --sync linux
매력처럼. bash 스크립트 arch-chroot
는 /dev /sys /proc
표준에 의해 단독으로 남겨진 훨씬 더 많은 것을 처리합니다 chroot
.
또한 참조 : arch-chroot 사용
답변
다른 의사 파일 시스템과 tmpfs 위치가 있습니다. 이것은 데비안에 있습니다 :
/dev/pts
/run
/run/shm
/proc/sys/fs/binfmt_mist
/var/lib/nfs/rpc_pipefs
/proc/fs/nfsd
/proc/bus/usb
마운트 괜찮해야한다 usbfs
, rpc_pipefs
그리고 devpts
는 chroot 내에서 의사 파일 시스템. 나는 두시길 하지 바인딩 /proc
는 chroot 년대에 /proc
커널이 네임 스페이스의 개념을 가지고 있기 때문에, 실제로는 chroot의 PROC에서 다른 것을 넣을 수 있습니다.
업데이트 : 이 메일 링리스트 쓰레드 에 따르면 , 특히 chroot 된 프로세스가 자체 네트워크 네임 스페이스를 사용하는 경우 / sys를 바인드 마운트하지 않아야합니다.
chroot에 자체 pid 네임 스페이스가있는 경우 시스템 /var
또는 /run
chroot에 마운트하는 것은 좋지 않습니다 .
답변
가장 쉬운 방법은 for 루프를 사용하는 것입니다.
cd /
for i in proc sys dev; do mount -o bind $i /folder/$i; done