Oto niektóre zasoby:
„Zmiana katalogu głównego” lub „chrootowanie” to metoda powiększania części systemu plików, aby na przykład /path
odwoływać się do tego, co wcześniej było dostępne /mnt/path
. „Root” w wyrażeniu „chroot” odnosi się do głównego systemu plików /
, a nie do użytkownika root. (Chociaż zazwyczaj będziesz potrzebował uprawnień użytkownika root, aby wykonać chroot.)
Przygotowanie
Wszystkie kroki w tym przewodniku należy wykonać jako użytkownik root.
Zakładamy, że twój dysk twardy znajduje się w / dev / sda1, a jego typ pliku to ext3. Jeśli nie znasz lokalizacji i rodzaju pliku na dysku, przeczytaj dane wyjściowe fdisk -l
.
Upewnij się, że architektura systemu, w którym się uruchomiłeś (np. 32-bitowy dysk LiveCD) i systemu, do którego chcesz wejść (np. 32-bitowa instalacja na dysku twardym) jest zgodna. Możesz określić architekturę, z której uruchomiłeś system uname -m
.
Upewnij się, że wszystkie wymagane moduły jądra zostały załadowane.
Skonfiguruj sieć, jeśli jej potrzebujesz (np. W celu zainstalowania zaktualizowanych pakietów).
W razie potrzeby zainicjuj partycję wymiany (np swapon /dev/sda3
.).
Wykonywanie 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
Jeśli twój /boot
katalog znajduje się na innej partycji niż twoja /
i chcesz na nim manipulować plikami (np. Jeśli będziesz pracować z GRUB, przeprowadzając aktualizację jądra itp.), Musisz także zamontować tę partycję. Jeśli jest to / dev / sda2, a jego typ pliku to ext2, to wykonaj:
mount -t ext2 /dev/sda2 /mnt/boot
Podobnie w przypadku wszystkich innych części systemu plików ( /var
, /usr
), które znajdują się na osobnych partycjach, ale do których potrzebujesz dostępu. Ogólnie, gdy chrootujesz, aby naprawić coś, nie potrzebujesz dostępu do / home, więc nie musisz się tym przejmować.
(Możliwe jest również montowanie systemów plików po chrootowaniu, ale jest to mądrzejsze, aby zrobić to wcześniej. Powodem jest to, że gdy zrobisz to później, środowisko zewnętrzne / jądro nie będzie wiedziało o zamontowanych systemach plików, więc jeśli zapomnisz umountuj je przed wyjściem z chroota, system nie będzie wiedział, jak je zamontować, gdy się wyłączy. Może to uszkodzić te systemy plików.)
Jeśli masz skonfigurowaną sieć i chcesz jej używać w systemie chrootowanym, skopiuj /etc/resolv.conf
ją, aby móc rozpoznać nazwy domen:
cp -L /etc/resolv.conf /mnt/etc/resolv.conf
Teraz możesz przejść do zamontowanego systemu plików:
chroot /mnt /bin/bash
(Jeśli zwraca błąd chroot: cannot run command '/bin/bash': Exec format error
, zwykle oznacza to, że uruchomiłeś jedną architekturę (np. X86_32) i próbujesz chrootować w innej (np. X86_64). Rozwiązaniem jest użycie LiveCD, który ma taką samą architekturę jak system, który chcesz chroot do.)
W tym momencie nadal uruchamiasz jądro, z którego uruchomiłeś system, ale wszystkie ścieżki /path
będą odnosić się do tego, co kiedyś było /mnt/path
.
Jeśli będziesz robić cokolwiek z GRUB, musisz upewnić się, że /etc/mtab
plik jest aktualny:
grep -v rootfs /proc/mounts > /etc/mtab
W tym momencie pomocne może być również:
source /etc/profile
export PS1="(chroot) $PS1" # add a reminder to your prompt
Wykonuj swoją brudną robotę
W tym momencie możesz wykonać wszelkie czynności związane z rozwiązywaniem problemów:
- ponownie zainstaluj GRUB na MBR dysku
- zresetować zapomniane hasło
- wykonaj aktualizację jądra (lub obniżenie wersji)
- odbuduj swój initramdisk
- napraw / etc / fstab
- zainstaluj ponownie pakiety za pomocą menedżera pakietów
- cokolwiek
Sprzątanie
Po zakończeniu upewnij się, że wszystkie uruchomione programy zostały zatrzymane. Następnie wyjdź z chroot:
exit
Teraz odmontuj wszystkie zamontowane partycje:
umount /mnt/boot # if you mounted this or any other separate partitions
umount /mnt/{proc,sys,dev}
Na koniec spróbuj odmontować dysk twardy:
umount /mnt
Jeśli pojawi się błąd informujący, że / mnt (lub inna partycja) jest zajęta, może to oznaczać jedną z dwóch rzeczy:
W tym drugim przypadku najpierw najpierw odmontuj obrażający punkt montowania. Aby uzyskać przypomnienie o wszystkich bieżących punktach instalacji, uruchom mount
bez parametrów.
Wreszcie:
reboot
chroot.sh
w katalogu głównym każdego używanego systemu, którego zawartość odpowiada mniej więcej powyższemu. Kiedy muszę chrootować do tego systemu z LiveCD lub czegoś takiego, po prostu montuję główny system plików i uruchamiam skrypt chroot. Nigdy więcej gorączkowego wyszukiwania w Google dla właściwych poleceń.SHELL=/bin/bash chroot /mnt
jeśli domyślna SKORUPA livecd nie znajduje się w środowisku chrootowanym (przykładowo defalut systemrescuecd zsh) to naprawić np.!
W Vimie./run
te dnimount --bind /run /mnt/run
.