Chroot

From Gentoo Wiki
Jump to: navigation, search
This page is a translated version of the page Chroot and the translation is 100% complete.

Other languages:
Deutsch • ‎English • ‎español • ‎français • ‎italiano • ‎日本語 • ‎한국어 • ‎português do Brasil • ‎русский • ‎Türkçe • ‎中文(中国大陆)‎


Resources

chroot (루트 바꾸기)는 메인 시스템의 루트에서 논리적으로 나누는 새 환경을 만들때 눈에 보이는 루트 디렉터리를 바꾸는데 사용하는 유닉스 시스템 유틸리티입니다. 이 새 환경은 "chroot 감옥"으로 알려져 있습니다. 감옥 안의 chroot 감옥에 가둬진 이상 사용자 운영 내부를 보거나 외부로의 파일 접근이 불가능합니다.

chroot의 주된 사용 목적은 테스트나 프로그램 호환성을 이유로 현재의 최상단 리눅스 시스템에서의 분할 시스템 만들기 입니다. 종종 가상화의 간편한 대안이기도 한데, chroot는 하이퍼바이저의 부담없이 실행할 수 있기 때문입니다.

선행 과정

환경 설정

chroot를 새로 설정할 때 처음 필요한 건 chroot로 진입할 디렉터리입니다. 예를 들자면, /mnt/mychroot에 chroot를 만들 수 있습니다.

user $mkdir /mnt/mychroot
user $cd /mnt/mychroot

파티션에 이미 있는 설치로 마운트 하려면 다음과 같이 하시면 됩니다. 하단의 예제에서 <DEVICE> 문자열 대신, 기존 설치 환경에 있는 드라이브 와 파티션으로 바꾸십시오:

user $mkdir /mnt/mychroot
user $mount /dev/DEVICE /mnt/mychroot

현재 루트 파일 시스템의 하위 디렉터리에 이미 설치했다면 위 단계를 건너뛸 수 있습니다:

시스템 파일 및 포티지 트리 압축 해제(새 설치)

새 설치를 빌드한다면 다음 단계는 스테이지 3와 포티지 다르볼을 다운로드 하고 chroot 위치로 설치하는 것입니다. 이 과정에 대한 더 많은 정보를 보려면 젠투 핸드북스테이지 타르볼 다운로드스테이지 타르볼 압축 해제를 참고하십시오.

root #tar xvjpf stage3-*.tar.bz2 -C /mnt/mychroot
root #tar xvjf portage-*.tar.bz2 -C /mnt/mychroot/usr

설정

chroot로 진입하기 전 몇가지 디렉터리를 마운트해야 합니다:

root #mount --rbind /dev /mnt/mychroot/dev
root #mount --make-rslave /mnt/mychroot/dev
root #mount -t proc /proc /mnt/mychroot/proc
root #mount --rbind /sys /mnt/mychroot/sys
root #mount --make-rslave /mnt/mychroot/sys
root #mount --rbind /tmp /mnt/mychroot/tmp

그리고 호스트로부터 몇가지 기본 설정 파일을 복사해야 하는데, 기존 설치에서 이미 make.conf를 사용중이면 복사하지 마십시오:

user $cp /etc/portage/make.conf /mnt/mychroot/etc/portage # If you use an existing installation, skip this command.
user $cp /etc/resolv.conf /mnt/mychroot/etc

사용법

끝내고 나면 다음 명령을 실행하여 chroot 환경으로 진입할 수 있습니다:

root #chroot /mnt/mychroot /bin/bash
root #env-update
root #source /etc/profile
root #export PS1="(chroot) $PS1"

새로 설치할 때 모든 항목이 최신인지 확인하려면 포티지를 동기화 해야합니다.

root #emerge --sync

시스템을 준비했습니다. 프로그램을 설치하고, 문자열로 화면을 어지럽히며 시험 패키지를 테스트하고, 메인 시스템에 영향을 주지 않는 설정을 할 수 있습니다. chroot에서 빠져나가려면 exit를 입력하거나 Ctrl+d를 입력하시면 됩니다. 이렇게 하면 보통 환경으로 되돌아갈 수 있습니다. 마운트한 디렉터리에 대해 umount 명령 실행을 잊지 마십시오.

초기화 스크립트

chroot 작업을 자주 사용하도록 설정했다면 init 스크립트로 디렉터리 마운트를 빠르게 진행할 수 있습니다. 시스템을 부팅할 때 자동으로 설정하도록 기본 런레벨에 스크립트를 추가할 수 있습니다:

파일 /etc/init.d/mychroot
#!/sbin/openrc-run
 
depend() {
   need localmount
   need bootmisc
}
 
start() {
     ebegin "Mounting chroot directories"
     mount -o rbind /dev /mnt/mychroot/dev > /dev/null &
     mount -t proc none /mnt/mychroot/proc > /dev/null &
     mount -o bind /sys /mnt/mychroot/sys > /dev/null &
     mount -o bind /tmp /mnt/mychroot/tmp > /dev/null &
     eend $? "An error occurred while mounting chroot directories"
}
 
stop() {
     ebegin "Unmounting chroot directories"
     umount -f /mnt/mychroot/dev > /dev/null &
     umount -f /mnt/mychroot/proc > /dev/null &
     umount -f /mnt/mychroot/sys > /dev/null &
     umount -f /mnt/mychroot/tmp > /dev/null &
     eend $? "An error occurred while unmounting chroot directories"
}

다른 디렉터리나 파티션을 사용한다면, 필요한 마운트 명령을 start()에 적고, /mnt/chroot을 적당한 이름으로 바꾸십시오.

추가 참조