Chroot von einer Live-CD

Aus Gentoo Linux Wiki

Wechseln zu: Navigation, Suche

Inhaltsverzeichnis

[Bearbeiten] Einleitung

Manchmal kann es vorkommen, dass ein Linux-System aus irgendeinem Grund nicht mehr booten kann, zum Beispiel, wenn ein anderes Betriebssystem den MBR überschrieben hat oder ein Fehler bei den Bootskripten oder der Kernelkonfiguration vorliegt.

Dieser Artikel beschreibt, wie jede beliebige Linux-Live-CD (oder andere Linux-Umgebung) verwendet werden kann, um das Problem per chroot zu lösen.

[Bearbeiten] Einschränkungen

Obwohl eine chroot-Umgebung schon einen sehr guten Funktionsumfang hat, ist die Umgebung nicht vollständig. Da die chroot-Umgebung den Kernel der Live-CD verwendet, müssen alle nötigen Module vor dem Betreten der chroot-Umgebung geladen werden. Auch können Module, die nur im chroot-System vorhanden sind (z.B. ndiswrapper) nicht geladen werden.

Im Zweifelsfall sollte eine Live-CD verwendet werden, die alle nötigen Module enthält, oder eine spezialisierte Live-CD erstellt werden.

[Bearbeiten] Nötiges Vorwissen

Diese Anleitung setzt Kenntnisse der Hardware des Systems und der nötigen Treiber voraus und geht davon aus, dass Kommandozeilenkenntnisse vorhanden sind, die einer Person entsprechen, die bereits eine Installation nach dem Gentoo Handbuch durchgeführt hat.

[Bearbeiten] Live-System vorbereiten

Bevor die chroot-Umgebung betreten wird, muss das Live-System mit den folgenden Schritten vorbereitet werden:

  • Alle benötigten Module laden
  • Netzwerk einrichten
  • Swap aktivieren, zum Beispiel (wenn /dev/hda2 eine Swap-Partition ist):
    swapon /dev/hda2

[Bearbeiten] Das installierte System mounten

Warnung: Obwohl es möglich ist, Dateisysteme innerhalb der chroot-Umgebung zu mounten, wird dies nicht empfohlen. Da das Livesystem von Mounts innerhalb der chroot-Umgebung nicht mitbekommt, werden Dateisysteme beim Herunterfahren auch nicht ausgehangen. Sollte ein manuelles Aushängen also vergesen werden, kann dies zu Dateisystemfehlern und Datenverlust führen

Zunächst werden die root-Partition und, falls nötig, die /boot-Partition eingehangen. Sollten noch weitere separate Partitionen (z.B. für /var/log verwendet werden, müssen auch diese eingehangen werden. Außerdem müssen /dev und /proc eingehangen werden.

In diesem Beispiel ist /dev/hda1 die /boot-Partition und /dev/hda3 die root-Partition:

mount /dev/hda3 /mnt/gentoo mount /dev/hda1 /mnt/gentoo/boot mount -t proc none /mnt/gentoo/proc mount -o bind /dev /mnt/gentoo/dev

[Bearbeiten] chroot-Umgebung betreten

Vor dem Betreten der Umgebung muss die Datei /etc/resolv.conf kopiert werden, sodass innerhalb der chroot-Umgebung DNS-Anfragen möglich sind:

cp -L /etc/resolv.conf /mnt/gentoo/etc/resolv.conf

Um die Umgebung zu betreten, werden die gleichen Schritte wie bei der Gentoo-Installation verwendet:

  • chroot-Umgebung betreten
  • Umgebung prüfen
  • Erinnerung an die Eingabeaufforderung anhängen
chroot /mnt/gentoo /bin/bash env-update source /etc/profile export PS1="(chroot) $PS1"

[Bearbeiten] Spezialfälle

[Bearbeiten] GRUB neu installieren

GRUB liest die Datei /etc/mtab, um aktuell eingehangene Dateisysteme zu erkennen. Diese Datei muss also aktuell sein. Ein Update ist mit dem folgenden Befehl möglich:
grep -v rootfs /proc/mounts >/etc/fstab

[Bearbeiten] chroot-Umgebung verlassen

Beim verlassen der chroot-Umgebung muss zunächst sichergestellt sein, dass alle laufenden Programme beendet sind. Danach kann die Umgebung verlasse nwerden und die Dateisysteme ausgehägnt werden:

(chroot)# exit # umount /mnt/gentoo/boot /mnt/gentoo/dev /mnt/gentoo/proc /mnt/gentoo

Wird angezeigt, dass ein eingehangenes Dateisystem im Zugriff ist, kan ndas zwei Gründe haben:

  • Im chroot läuft noch ein Programm
  • Unterhalb des Mountpunkts ist noch ein weiteres Dateisystem eingehängt
Im letzteren Fall kann das blockierende Dateisystem einfach ausgehängt werden (eine Liste der gemounteten Dateisysteme gibt
mount
aus.

[Bearbeiten] Fehlerbehebung

[Bearbeiten] Exec format error

Wenn der chroot-befehl mit der Meldung "chroot: cannot run command `/bin/bash': Exec format error" abbricht, heißt das, dass die LiveCD nicht mit dem zu betretenden System kompatibel ist.

Dies tritt vor allem auf, wenn versucht wird, ein System mit einer anderen Architektur als die der Live-CD zu betreten (z.B. amd64) von einer 32-bit Live-CD (z.B. x86).

In diesem Fall muss eine passende Live-CD verwendet werden.

Persönliche Werkzeuge
In anderen Sprachen