다음은 몇 가지 리소스입니다.
"루팅 변경"또는 "chrooting"은 파일 시스템의 일부를 확대하는 방법이므로 예를 들어에서 /path
이전에 액세스 할 수 있었던 것을 참조합니다 /mnt/path
. "chroot"표현식의 "root" /
는 루트 사용자가 아닌 루트 파일 시스템을 나타냅니다 . (일반적으로 chroot하기 위해서는 루트 사용자 권한이 필요합니다.)
예비
이 안내서의 모든 단계는 루트 사용자로 수행해야합니다.
하드 디스크가 / dev / sda1에 있고 파일 형식이 ext3이라고 가정합니다. 디스크의 위치와 파일 유형을 모르면의 출력을 읽으십시오 fdisk -l
.
부팅 한 시스템의 아키텍처 (예 : 32 비트 LiveCD)와 입력하려는 시스템 (예 : 하드 드라이브의 32 비트 설치)이 일치하는지 확인하십시오. 을 사용하여 부팅 한 아키텍처를 결정할 수 있습니다 uname -m
.
필요한 커널 모듈이로드되어 있는지 확인하십시오.
필요한 경우 네트워크를 설정하십시오 (예 : 업데이트 된 패키지 설치).
필요한 경우 스왑 파티션을 초기화하십시오 (예 :) swapon /dev/sda3
.
chroot 수행
cd /
mount -t ext3 /dev/sda1 /mnt
mount -t proc proc /mnt/proc
mount -t sysfs sys /mnt/sys
mount -o bind /dev /mnt/dev
귀하의 경우 /boot
디렉토리가에서 다른 파티션에 /
, 당신이 (당신이 등, 커널 업그레이드를 수행, GRUB와 함께 일하게 될 것입니다 경우, 예를 들어) 거기에 파일을 조작하려면, 당신은 또한 그 파티션을 마운트해야합니다. / dev / sda2에 있고 파일 유형이 ext2이면 다음을 수행하십시오.
mount -t ext2 /dev/sda2 /mnt/boot
별도의 파티션에 상주하지만 액세스해야하는 파일 시스템 ( /var
, /usr
) 의 다른 부분의 경우와 유사 일반적으로 무언가를 고치려고 할 때 / home에 액세스 할 필요가 없으므로 귀찮게 할 필요가 없습니다.
(루트 한 후에 파일 시스템을 마운트하는 것도 가능하지만 미리하는 것이 더 현명합니다. 그 이유는 나중에 수행 할 때 외부 / 커널 환경이 마운트 된 파일 시스템에 대해 알지 못하기 때문입니다. chroot를 종료하기 전에 마운트 해제하면 시스템이 종료 될 때 마운트 해제하는 것을 알지 못하므로 파일 시스템이 손상 될 수 있습니다.)
네트워크를 설정하고 chroot 시스템에서 사용하려면 /etc/resolv.conf
도메인 이름을 확인할 수 있도록 복사하십시오 .
cp -L /etc/resolv.conf /mnt/etc/resolv.conf
이제 마운트 된 파일 시스템으로 이동할 준비가되었습니다 :
chroot /mnt /bin/bash
(이것이 오류를 반환하면 chroot: cannot run command '/bin/bash': Exec format error
이는 일반적으로 한 아키텍처 (예 : x86_32)로 부팅하고 다른 아키텍처 (예 : x86_64)로 chroot하려고 함을 나타냅니다. 해결책은 원하는 시스템과 동일한 아키텍처를 가진 LiveCD를 사용하는 것입니다. chroot into.)
이 시점에서 여전히 부팅 한 커널을 실행하고 있지만 모든 경로 /path
는 이전의 경로 를 참조합니다 /mnt/path
.
GRUB으로 무엇이든하고 싶다면 /etc/mtab
파일이 최신 인지 확인해야 합니다.
grep -v rootfs /proc/mounts > /etc/mtab
이 시점에서 도움이 될 수도 있습니다.
source /etc/profile
export PS1="(chroot) $PS1" # add a reminder to your prompt
더러운 일을
이 시점에서 필요한 모든 문제 해결을 수행 할 수 있습니다.
- 디스크의 MBR에 resintall GRUB
- 잊어 버린 비밀번호 재설정
- 커널 업그레이드 수행 (또는 다운 그레이드)
- initramdisk를 다시 빌드하십시오
- / etc / fstab을 수정하십시오
- 패키지 관리자를 사용하여 패키지를 다시 설치하십시오.
- 도대체 무엇이
청소
완료되면 실행중인 모든 프로그램이 중지되었는지 확인하십시오. 그런 다음 chroot를 종료하십시오.
exit
이제 마운트 한 모든 파티션을 마운트 해제하십시오 :
umount /mnt/boot # if you mounted this or any other separate partitions
umount /mnt/{proc,sys,dev}
마지막으로 하드 드라이브를 마운트 해제하십시오.
umount /mnt
/ mnt (또는 다른 파티션)가 사용 중이라는 오류가 발생하면 다음 두 가지 중 하나를 의미 할 수 있습니다.
프로그램은 chroot 안에서 계속 실행되었습니다.
또는 더 자주 :이 마운트에는 여전히 마운트 지점이 있습니다. 예를 들어, / mnt를 마운트 해제하려고 할 때 / mnt / usr이 여전히 마운트됩니다.
후자의 경우 문제가되는 마운트 포인트를 먼저 마운트 해제하십시오. 모든 현재 마운트 지점을 상기 시키려면 mount
매개 변수없이 실행하십시오 .
드디어:
reboot
chroot.sh
사용하는 모든 시스템의 루트에서 호출되는 스크립트를 남기는 경향이 있으며 그 내용은 위와 거의 일치합니다. LiveCD 등에서 해당 시스템으로 chroot해야 할 경우 루트 파일 시스템을 마운트하고 chroot 스크립트를 실행하면됩니다. 더 이상 올바른 명령에 열광적 인 인터넷 검색이 필요하지 않습니다.