Chroot (Arch reparieren): Unterschied zwischen den Versionen
Tuxnix (Diskussion | Beiträge) "Sauberes" Verlassen der Chroot |
Keine Bearbeitungszusammenfassung |
||
(16 dazwischenliegende Versionen von 3 Benutzern werden nicht angezeigt) | |||
Zeile 7: | Zeile 7: | ||
== Mounten und Chrooten == | == 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. | 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 wie gewohnt auf System A mit der Konsole gearbeitet und die nötigen Reparaturen vorgenommen werden. | 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 {{ic|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 {{ic|fdisk -l}} nicht genügend Aufschluss, kann man sich die jeweiligen Einhängepunkte in der {{ic|/etc/fstab}} Datei ansehen. Diese ist nach dem Mounten des Wurzelverzeichnisses einsehbar. Eine Swap-Partition wird mittels {{ic|swapon /dev/sdXY}} eingebunden. | |||
[[Datei:Doppel-filesystem-mit-eingehängten-partitionen.png | [[Datei:Doppel-filesystem-mit-eingehängten-partitionen.png |right|System A wird in System B eingehängt.]] | ||
mount /dev/ | mount /dev/sdXY /mnt (obligat: Das root (/) vom root-file-system meistens /dev/sda1) | ||
mount /dev/sdXY /mnt/Verz. ( | 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 | ||
mount -o bind /dev /mnt/dev | mount -o bind /dev /mnt/dev | ||
mount -t devpts /dev/pts /mnt/dev/pts/ | |||
mount -o bind /sys/firmware/efi/efivars /mnt/sys/firmware/efi/efivars (bei UEFI) | |||
swapon /dev/sdXY (optional: Empfohlen bei geringem Arbeitsspeicher) | |||
chroot /mnt /bin/bash | chroot /mnt /bin/bash | ||
Zeile 27: | Zeile 29: | ||
exit | exit | ||
umount /mnt/dev/pts | |||
umount /mnt/dev | umount /mnt/dev | ||
umount /mnt/sys | umount /mnt/sys | ||
umount /mnt/proc | umount /mnt/proc | ||
umount /mnt/ | umount /mnt/Verzeichnis (optional: Bei ausgelagerten System-Verzeichnisen (z.B.: /boot). | ||
umount /mnt | umount /mnt | ||
== arch-chroot == | == arch-chroot == | ||
arch-chroot ist Teil der {{paket|arch-install-scripts}}, gehört zur | arch-chroot ist Teil der {{paket|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 | 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 | mount /dev/sda1 /mnt | ||
arch-chroot /mnt | arch-chroot /mnt | ||
Nach den erforderlichen Reparaturen, wird die "arch-chroot" mit dem {{ic|exit}} Befehl verlassen und die Partitionen werden in geeigneter Reihenfolge, erst alle | Nach den erforderlichen Reparaturen, wird die "arch-chroot" mit dem {{ic|exit}} Befehl verlassen und die Partitionen werden in geeigneter Reihenfolge, erst alle Subdir's dann die Dir's (siehe oben) ausgehängt. | ||
exit | exit | ||
Zeile 47: | Zeile 50: | ||
== Arch reparieren == | == Arch reparieren == | ||
=== Root Passwort vergessen === | === Root Passwort vergessen === | ||
Zum Erstellen des neuen | Zum Erstellen des neuen Passwortes ist der Befehl {{ic|passwd}} anzuwenden. | ||
=== Fehlende Gruppenmitgliedschaften === | === Fehlende Gruppenmitgliedschaften === | ||
Zeile 53: | Zeile 56: | ||
=== Abgebrochenes Paketupdate === | === Abgebrochenes Paketupdate === | ||
Wurde | 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. | |||
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 | Zur Wiederherstellung des Bootloaders wird auf die entsprechenden Artikel verwiesen. | ||
* Hinweis: | * Hinweis: Bei UEFI-Systemen befindet sich der [https://wiki.archlinux.de/title/Kategorie:Bootloader Bootloader] auf der /boot Partition. Diese muss vor dem Chrooten mit eingebunden werden. | ||
modprobe efivarfs (evtl. vor dem chroot erforderlich) | |||
== "Sauberes" Verlassen der Chroot == | == "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. | Treten beim Unmounten Fehlermeldungen auf, sollte man alles erneut Mounten. Die Chrootumgebung erneut starten um die evt. hier noch laufenden Prozesse zu beenden. | ||
Zeile 69: | Zeile 75: | ||
* [https://help.ubuntu.com/community/BasicChroot BasicChroot]{{sprache|en}} | * [https://help.ubuntu.com/community/BasicChroot BasicChroot]{{sprache|en}} | ||
* [https://help.ubuntu.com/community/LiveCdRecovery LiveCDRecovery]{{sprache|en}} | * [https://help.ubuntu.com/community/LiveCdRecovery LiveCDRecovery]{{sprache|en}} | ||
* [http://www.archlinux.org/packages/?q=schroot schroot] {{sprache|en}} – {{ic|chroot}} ohne root-Rechte haben zu müssen | * [http://www.archlinux.org/packages/?q=schroot schroot] {{sprache|en}} – {{ic|chroot}} ohne root-Rechte haben zu müssen. | ||
* [http://linuxwiki.de/chroot chroot im LinuxWiki] {{sprache|de}} | * [http://linuxwiki.de/chroot chroot im LinuxWiki] {{sprache|de}} | ||
* [http://hp.kairaven.de/scpsftp/ssh-rssh-sftp.html SSH (scp) im Chroot] {{sprache|de}} | * [http://hp.kairaven.de/scpsftp/ssh-rssh-sftp.html SSH (scp) im Chroot] {{sprache|de}} |
Aktuelle Version vom 27. Januar 2021, 17:42 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.
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/ mount -o bind /sys/firmware/efi/efivars /mnt/sys/firmware/efi/efivars (bei UEFI) 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 Bootloaders wird auf die entsprechenden Artikel verwiesen.
- Hinweis: Bei UEFI-Systemen befindet sich der Bootloader auf der /boot Partition. Diese muss vor dem Chrooten mit eingebunden werden.
modprobe efivarfs (evtl. vor dem chroot erforderlich)
"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
- BasicChroot
- LiveCDRecovery
- schroot –
chroot
ohne root-Rechte haben zu müssen. - chroot im LinuxWiki
- SSH (scp) im Chroot