Hier sind einige Ressourcen:
- ArchLinux-Wiki zu "Change Root"
- ArchLinux Wiki zu "GRUB neu installieren"
- Gentoo-Wiki zu "Chroot from a livecd"
"Ändern von root" oder "chrooting" ist eine Methode zum Vergrößern eines Teils Ihres Dateisystems, sodass zum Beispiel auf das verwiesen /path
wird, auf das zuvor zugegriffen wurde /mnt/path
. Das "root" im Ausdruck "chroot" bezieht sich auf das Root-Dateisystem /
und nicht auf den Root-Benutzer. (Normalerweise benötigen Sie jedoch Root-Benutzerrechte, um chroot zu werden.)
Vorbereitung
Alle Schritte in diesem Handbuch müssen als root-Benutzer ausgeführt werden.
Ihre Festplatte befindet sich unter / dev / sda1 und der Dateityp ist ext3. Wenn Sie den Speicherort und den Dateityp Ihrer Festplatte nicht kennen, lesen Sie die Ausgabe von
fdisk -l
.Stellen Sie sicher, dass die Architekturen des Systems, in das Sie gebootet haben (z. B. eine 32-Bit-LiveCD), und das System, das Sie eingeben möchten (z. B. eine 32-Bit-Installation auf Ihrer Festplatte), übereinstimmen. Sie können die Architektur bestimmen, mit der Sie gestartet haben
uname -m
.Stellen Sie sicher, dass alle erforderlichen Kernel-Module geladen wurden.
Richten Sie Ihr Netzwerk ein, wenn Sie es benötigen (z. B. um aktualisierte Pakete zu installieren).
Initialisieren Sie ggf. Ihre Swap-Partition (z
swapon /dev/sda3
. B. ).
Durchführen der 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
Wenn sich Ihr /boot
Verzeichnis auf einer anderen Partition /
befindet und Sie Dateien darauf bearbeiten möchten (z. B. wenn Sie mit GRUB arbeiten, ein Kernel-Upgrade durchführen usw.), müssen Sie auch diese Partition einhängen. Wenn es sich um / dev / sda2 handelt und der Dateityp ext2 ist, dann machen Sie folgendes:
mount -t ext2 /dev/sda2 /mnt/boot
Ähnlich für alle anderen Teile Ihres Dateisystems ( /var
, /usr
), die sich auf separaten Partitionen befinden, auf die Sie jedoch zugreifen müssen. Im Allgemeinen, wenn Sie chrooting sind, um etwas zu beheben, benötigen Sie keinen Zugriff auf / home, so dass Sie sich nicht darum kümmern müssen.
(Es ist auch möglich, Dateisysteme zu mounten, nachdem Sie chrootiert haben, es ist jedoch klüger, dies vorher zu tun. Der Grund ist, dass die Außen- / Kernel-Umgebung die eingehängten Dateisysteme nicht kennt, wenn Sie es danach tun Wenn Sie sie vor dem Beenden der Chroot-Datei hochhängen, kann das System sie auch beim Herunterfahren nicht neu starten. Dies könnte die Dateisysteme beschädigen.)
Wenn Sie Ihr Netzwerk eingerichtet haben und es im Chroot-System verwenden möchten, kopieren Sie /etc/resolv.conf
es, damit Sie Domänennamen auflösen können:
cp -L /etc/resolv.conf /mnt/etc/resolv.conf
Nun können Sie in das gemountete Dateisystem wechseln:
chroot /mnt /bin/bash
(Wenn dies einen Fehler zurückgibt chroot: cannot run command '/bin/bash': Exec format error
, weist dies normalerweise darauf hin, dass Sie mit einer Architektur (z. B. x86_32) gestartet haben und versuchen, in eine andere (z. B. x86_64) zu wechseln. Die Lösung besteht darin, eine LiveCD zu verwenden, die dieselbe Architektur wie das gewünschte System hat chroot in.)
Zu diesem Zeitpunkt führen Sie immer noch den Kernel aus, mit dem Sie booteten, aber alle Pfade /path
beziehen sich auf das, was früher war /mnt/path
.
Wenn Sie mit GRUB etwas anfangen, müssen Sie sicherstellen, dass Ihre /etc/mtab
Datei auf dem neuesten Stand ist:
grep -v rootfs /proc/mounts > /etc/mtab
An diesem Punkt kann es auch hilfreich sein, Folgendes zu tun:
source /etc/profile export PS1="(chroot) $PS1" # add a reminder to your prompt
Mach deine Drecksarbeit
An dieser Stelle können Sie die Fehlerbehebung durchführen, die Sie ausführen müssen:
- Starten Sie GRUB erneut auf den MBR Ihrer Festplatte
- ein vergessenes Passwort zurücksetzen
- ein Kernel-Upgrade durchführen (oder ein Downgrade durchführen)
- Erstellen Sie Ihre Initramdisk neu
- Korrigieren Sie Ihre / etc / fstab
- Pakete mit dem Paketmanager erneut installieren
- was auch immer
Aufräumen
Wenn Sie fertig sind, stellen Sie sicher, dass alle laufenden Programme gestoppt wurden. Verlasse dann die Chroot:
exit
Heben Sie die Bereitstellung aller gemounteten Partitionen auf:
umount /mnt/boot # if you mounted this or any other separate partitions umount /mnt/
Versuchen Sie schließlich, Ihre Festplatte abzuhängen:
umount /mnt
Wenn Sie eine Fehlermeldung erhalten, dass / mnt (oder eine andere Partition) belegt ist, kann dies eine der folgenden zwei Ursachen haben:
Ein Programm wurde in der Chroot ausgeführt.
Oder häufiger: Auf diesem Mount existiert noch ein Mount-Punkt. Zum Beispiel ist / mnt / usr beim Versuch, das Aufhängen von / mnt aufzuhängen, noch eingehängt.
Im letzteren Fall müssen Sie zuerst den fehlerhaften Mount-Punkt abhängen. Führen Sie mount
keine Parameter aus, um eine Erinnerung an alle aktuellen Einhängepunkte zu erhalten .
Endlich:
reboot