Chroot (Arch reparieren): Unterschied zwischen den Versionen

Aus wiki.archlinux.de
Zur Navigation springen Zur Suche springen
(This is from https://forum.manjaro.org/t/howto-restore-an-unbootable-system-after-an-interrupted-kernel-update/33085. Without /dev/pts mounted, mkinitcpio overwrites the init of the Parent-OS.)
K (Textverbesserung)
 
Zeile 14: Zeile 14:
 
[[Datei:Doppel-filesystem-mit-eingehängten-partitionen.png |right|System A wird in System B eingehängt.]]
 
[[Datei:Doppel-filesystem-mit-eingehängten-partitionen.png |right|System A wird in System B eingehängt.]]
 
  mount /dev/sdXY /mnt          (obligat: Das root (/) vom root-file-system meistens /dev/sda1)
 
  mount /dev/sdXY /mnt          (obligat: Das root (/) vom root-file-system meistens /dev/sda1)
  mount /dev/sdXY /mnt/Verz.    (optional nur bei zusätzlich eingehängten System Partitionen nötig.)
+
  mount /dev/sdXY /mnt/Verz.    (optional: Nur bei ausgelagerten System-Verzeichnisen (z.B.: /boot) nötig.)
 
  mount -t proc proc /mnt/proc
 
  mount -t proc proc /mnt/proc
 
  mount -t sysfs sys /mnt/sys
 
  mount -t sysfs sys /mnt/sys
Zeile 32: Zeile 32:
 
  umount /mnt/sys
 
  umount /mnt/sys
 
  umount /mnt/proc
 
  umount /mnt/proc
  umount /mnt/Verzeichnis        (optional bei zusätzlich eingehängten System Partitionen)
+
  umount /mnt/Verzeichnis        (optional: Bei ausgelagerten System-Verzeichnisen (z.B.: /boot).
 
  umount /mnt
 
  umount /mnt
  
Zeile 57: Zeile 57:
 
Wurde dabei auch die Paketdatenbank beschädigt, solle diese gleich nach dem Mounten mit {{ic|rm /mnt/var/lib/pacman/db.lck}} gelöscht werden.
 
Wurde dabei auch die Paketdatenbank beschädigt, solle diese gleich nach dem Mounten mit {{ic|rm /mnt/var/lib/pacman/db.lck}} gelöscht werden.
 
Beschädigte core Pakete können mit dem Befehl {{ic|pacstrap /mnt base}} erneuert werden.
 
Beschädigte core Pakete können mit dem Befehl {{ic|pacstrap /mnt base}} erneuert werden.
Danach kann in die Chroot gewechselt werden und mit {{ic|pacman -Syyu}} das update durchgeführt werden. Wurde beim update der Kernel erneuert ist anschließend ein {{ic|mkinitcpio -p linux}} durchzuführen.
+
Danach kann in die Chroot gewechselt werden und mit {{ic|pacman -Syyu}} das update durchgeführt werden.
 +
Wurde beim update der Kernel erneuert ist anschließend ein {{ic|mkinitcpio -p linux}} durchzuführen und danach der Bootloader anzupassen (z.B. {{ic|update-grub}}).
  
 
=== Bootloader reparieren ===
 
=== Bootloader reparieren ===
 
Zur Wiederherstellung des Bootloader wird auf die Artikel [[Grub]] und [[Syslinux]] verwiesen.
 
Zur Wiederherstellung des Bootloader wird auf die Artikel [[Grub]] und [[Syslinux]] verwiesen.
* Hinweis: Meist befindet sich der Bootmanager auf einer eigenen Partition ([[UEFI]], [[gpt]]). Diese wird vor dem Chrooten mit eingebunden.
+
* Hinweis: Meist befindet sich der Bootmanager auf einer eigenen Partition ([[UEFI]], [[gpt]]). Diese muss vor dem Chrooten mit eingebunden werden.
  
 
== "Sauberes" Verlassen der Chroot ==
 
== "Sauberes" Verlassen der Chroot ==

Aktuelle Version vom 27. November 2019, 08:51 Uhr

Achtung: Verschlüsselte Dateisysteme können in einer Chrootumgebung nicht genutzt werden. Auch funktionieren hier einige systemd Dienste wie localectl und timedatectl nicht, da sie eine aktive dbus Verbindung benötigen.


Startet das System nicht mehr oder ist das Root-Passwort abhanden gekommen, benötigt man den Zugriff von außen um es reparieren zu können. Dies kann von einem Installationsmedium oder von einem zweiten Linuxsystem aus erfolgen. Dazu wird das zu reparierende System mit dem mount Befehl auf einem laufenden System eingehängt. Nach dem "Chrooten" arbeitet man auf dem ursprünglichen System und kann hier die notwendigen Korrekturen durchführen. Die Grundlagen für den mount und den chroot Befehl können in den weiterführenden Artikeln nachgelesen werden.

Mounten und Chrooten

Die Abbildung zeigt die Situation. Der Pc ist vom Medium B gestartet worden. Das zu reparierende System A wird mit seinem Dateisystem auf B eingehängt (gemountet). Nach einem Chrooten kann dann wie gewohnt auf System A mit der Konsole gearbeitet und die nötigen Reparaturen vorgenommen werden.

Sind die Systemordner des Systems A auf mehrere Partitionen verteilt, müssen diese ebenfalls mit mount /dev/sdXY /mnt/Verzeichnis eingebunden werden. Mit Ausnahme von /home betrifft dies alle Partitionen die auch bei einem normalen Systemstart mit eingebunden worden wären. Gibt ein fdisk -l nicht genügend Aufschluss, kann man sich die jeweiligen Einhängepunkte in der /etc/fstab Datei ansehen. Diese ist nach dem Mounten des Wurzelverzeichnisses einsehbar. Eine Swap-Partition wird mittels swapon /dev/sdXY eingebunden.

System A wird in System B eingehängt.
mount /dev/sdXY /mnt           (obligat: Das root (/) vom root-file-system meistens /dev/sda1)
mount /dev/sdXY /mnt/Verz.     (optional: Nur bei ausgelagerten System-Verzeichnisen (z.B.: /boot) nötig.)
mount -t proc proc /mnt/proc
mount -t sysfs sys /mnt/sys
mount -o bind /dev /mnt/dev
mount -t devpts /dev/pts /mnt/dev/pts/
swapon /dev/sdXY              (optional: Empfohlen bei geringem Arbeitsspeicher)
chroot /mnt /bin/bash

Nach dem die erforderlichen Arbeiten (siehe unten) abgeschlossen sind, ist die Chrootumgebung mit exit zu verlassen und die Ordner und Laufwerke wieder auszuhängen. Dies geschieht in umgekehrter Reihenfolge. Die Swap-Partition braucht dabei nicht extra ausgehängt zu werden.

exit
umount /mnt/dev/pts
umount /mnt/dev
umount /mnt/sys
umount /mnt/proc
umount /mnt/Verzeichnis        (optional: Bei ausgelagerten System-Verzeichnisen (z.B.: /boot).
umount /mnt

arch-chroot

arch-chroot ist Teil der arch-install-scripts, gehört zur Grundinstallation und ist auf jedem Arch-Installationsmedium verfügbar. Das Skript automatisiert die Einbindung der api Verzeichnisse proc, sys und dev und chrootet danach. Zusätzlich macht es /etc/resolv.conf für die Chrootumgebung zugänglich, das für eine Netzwerkanbindung benötigt wird. Somit reduziert sich das Mounten auf die einzubindenden Partitionen. Der einfachste Fall wäre:

mount /dev/sda1 /mnt
arch-chroot /mnt

Nach den erforderlichen Reparaturen, wird die "arch-chroot" mit dem exit Befehl verlassen und die Partitionen werden in geeigneter Reihenfolge, erst alle Subdir's dann die Dir's (siehe oben) ausgehängt.

exit
umount /mnt

Arch reparieren

Root Passwort vergessen

Zum Erstellen des neuen Passwortes ist der Befehl passwd anzuwenden.

Fehlende Gruppenmitgliedschaften

Hat sich der admin selbst ausgesperrt, können die fehlenden Gruppenzugehörigkeiten mit dem adduser <user> <group> Befehl wieder hergestellt werden.

Abgebrochenes Paketupdate

Wurde dabei auch die Paketdatenbank beschädigt, solle diese gleich nach dem Mounten mit rm /mnt/var/lib/pacman/db.lck gelöscht werden. Beschädigte core Pakete können mit dem Befehl pacstrap /mnt base erneuert werden. Danach kann in die Chroot gewechselt werden und mit pacman -Syyu das update durchgeführt werden. Wurde beim update der Kernel erneuert ist anschließend ein mkinitcpio -p linux durchzuführen und danach der Bootloader anzupassen (z.B. update-grub).

Bootloader reparieren

Zur Wiederherstellung des Bootloader wird auf die Artikel Grub und Syslinux verwiesen.

  • Hinweis: Meist befindet sich der Bootmanager auf einer eigenen Partition (UEFI, gpt). Diese muss vor dem Chrooten mit eingebunden werden.

"Sauberes" Verlassen der Chroot

Treten beim Unmounten Fehlermeldungen auf, sollte man alles erneut Mounten. Die Chrootumgebung erneut starten um die evt. hier noch laufenden Prozesse zu beenden.

Siehe auch

Weblinks