Nachdem vor bald zwei Jahren mein Weg zu Arch Linux begonnen hat, läuft auf allen meinen Rechnern inzwischen nur noch Arch. Kein Arch-Derivat wie Manjaro oder Antergos, sondern überall nur Arch pur. So kann ich mein Systeme von Anfang an genau so aufbauen, wie ich es haben möchte. Das macht das Aufsetzen eines Systems ein wenig aufwändiger, doch ich habe noch kein einziges Arch-System noch einmal neu aufsetzen müssen. Somit hält sich der zusätzliche Aufwand durch die rein textbasierte Installation in Grenzen.
Bei all der Freude über ein fortwährend aktuelles System gibt es ab und an kleine Unstimmigkeiten bei der Installation von Software-Updates. Es kann schon mal passieren, dass eine neue Versionen einen Bug mitbringt. Da Arch aber eng am Upstream sitzt, ist dieser meist auch schnell wieder behoben. Die größten Pannen entstehen jedoch nicht durch die Systemupdates: Der größte anzunehmende Fehler sitzt in der Regel vor dem Bildschirm. So fiel bei mir während schon einmal während eines Pacman-Updates der Strom aus oder ich habe die Konfiguration des Bootmanagers verbastelt.
Das hier geschilderte Vorgehen funktioniert selbstverständlich auch bei anderen Linux-Distributionen wie auch mit anderen Live-Linuxen. Im Endeffekt geht es immer darum das eigentlich installierte System in einem Live-Linux per Chroot einzubinden, um in diesem mit dem eigentlich installierten arbeiten zu können, ohne es booten zu müssen.
Das Ergebnis ist am Ende meist das selbe: Wenn man sehr sehr viel Pech hat, dann lässt sich Arch nicht mehr booten. Aus diesem Grunde habe ich bei mir auch immer einen USB-Stick mit einem Ubuntu-System liegen. Von diesem Notfall-System aus lässt sich Arch in der Regel wiederbeleben — egal was zuvor passiert ist. Hat man nur eine Konfigurationsdatei wie die /etc/fstab
oder die /boot/syslinux/syslinux.cfg
verbastelt, dann kann man diese ja leicht von der Live-CD aus bearbeiten. Hängt allerdings das System, weil zum Beispiel Pacman jäh unterbrochen wurde, dann braucht es ein anderes Kaliber: Ein Chroot in die nicht mehr bootende Arch-Installation.
Arch-Chroot aus Ubuntu
Damit das klappt, müsst ihr euren Rechner von einer Linux-Live-DVD oder einem USB-Stick mit Linux booten. Für meine Zwecke reicht ein USB-Stick mit Ubuntu 14.04 und persistenter Partition aus, so muss ich nicht immer wieder die Spracheinstellungen korrigieren oder den WLAN-Zugang neu einrichten. Ist das Live-System geladen, öffnet ihr als erstes ein Terminal und schaut euch an, welche Device-IDs die in eurem System verbauten Festplatten und Partitionen bekommen haben. Am einfachsten klappt dies in meinem Augen immer mit dem Befehl lsblk
.
$ lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 232,9G 0 disk ├─sda1 8:1 0 26G 0 part ├─sda2 8:2 0 202,9G 0 part └─sda3 8:3 0 4G 0 part [SWAP] sde 8:64 1 1000M 0 disk ├─sde1 8:65 1 964M 0 part └─sde2 8:66 1 2,3M 0 part loop0 7:0 0 922M 1 loop /rofs
In meinem Fall sitzt das ganze System auf einer 256 GByte großen SSD, also ist /dev/sda
das richtige Gerät. Nun weiß ich, dass bei meinem Rechner auf /dev/sda1
das System, auf /dev/sda3
die Homeverzeichnisse und auf /dev/sda4
das Boot-Verzeichnis liegt; kennt ihr euch auf eurem System nicht so gut aus und lässt sich auch aus der Partitionsgröße nicht auf die Zugehörigkeit schließend, dann könnt ihr aus dem Dateimanager heraus die Partitionen kurz einbinden und so direkt nachsehen, welche Daten wo liegen.
Ist die Frage geklärt, holt ihr euch mit sudo -s
Root-Rechte und erzeugt einen Mount-Punkt für euer Arch-System im aktuellen Live-Linux; für mein Beispiel nutze ich einfach /arch
. In dieses mountet ihr zuerst die Systempartition, dann die Homepartition nach /arch/home
und schließlich — natürlich nur wenn /boot
auch auf einer eigenen Partition liegt — die Bootpartition eures Arch-Systems.
$ sudo -s $ mkdir /arch $ mount /dev/sda1 /arch $ mount /dev/sda2 /arch/home ### Falls ihr weitere Partitionen nutzt... $ mount /dev/sda4 /arch/boot
Damit das Chroot später komplett funktioniert, müsst ihr nun noch Symlinks zu dynamischen Verzeichnissen des Live-Systems wie /proc
oder /dev
in den zukünftigen Chroot-Bereich legen. Alleine mit diesen Symlinks würde allerdings der Netzwerkzugang inklusive Namensauflösung noch nicht korrekt funktioniern, holt euch daher noch die resolv.conf
des Live-Linux in das Chroot rüber. Ist das alles geschehen, öffnet ihr schließlich mit dem Chroot-Befehl euer Arch-Linux — ohne es vorher Booten zu müssen.
$ mount -t proc none /arch/proc $ mount -t sysfs none /arch/sys $ mount -o bind /dev /arch/dev $ mount -o bind /dev/pts /arch/dev/pts # Wichtig für Pacman $ cp -L /etc/resolv.conf /arch/etc # Für Netzwerkzugriff
$ chroot /arch bash
Im Chroot arbeitet ihr nun mit sämtlichen Daten eures Arch-System, die Wurzel des Verzeichnisbaums beginnt wie gewohnt bei /
und nicht mehr mit dem zuvor erstellten Mountpunkt. Zum Bearbeiten der fstab
wechselt ihr also einfach nur nach /etc
und öffnet dort die Fstab-Datei mit einem Editor wie zum Beispiel Nano: nano /etc/fstab
. Ihr braucht sogar auf Programme mit einer graphischen Oberfläche nicht verzichten, dazu müsst ihr lediglich den Xserver des Ubuntu-Systems mit xhost +
für Zugriffe von außen öffnen.
Befehle wie pacman -Syu
zum Einspielen von Updates oder etwa syslinux-install_update -i -a -m
für die Neu-Installation des Syslinux-Bootloaders lassen sich direkt aus dem Chroot ausführen, als ob ihr aus eurem Arch-System heraus arbeiten würdet. Mit ein bisschen Ellbogenschmalz und Geschick beim Googeln nach Fehlermeldungen bekommt man sein Arch danach in der Regel wieder recht schnell flott, sodass man wieder ganz normal von der Festplatte oder der SSD booten kann.
Warum nicht einfach mit einem hauseigenen Arch-ISO Arch reparieren?
Partition mounten -> arch-chroot /partition
Du sparst dir eine Menge Arbeit damit.
Wenn man sowas gerade da hat, dann ja. Wenn man aber währenddessen auch durchs Netz surfen muss, etwa um Hinweise zum Problem zu finden, dann ist man mit einem Live-Linux mit GUI einfach besser unterwegs. Grüße, Christoph.
Dann würde ich mir aber eher ein Arch(ähnliches) mit GUI wie Manjaro holen, die arch-chroot auch in den Repos haben.
Eine Verwendungszweck wäre z.B das arbeiten an einem nicht bootenden Arch System welches auf einem mit gummiboot inkompatiblen UEFI Geräte installiert ist. So habe ich jedenfalls gerade mein Arch repariert 🙂
Statt des -o bind kann ich -o rbind empfehlen! Mountet auch innere Binds rekursiv neu, dann kann man sich das /dev/pts sparen ;-).
Guter Tipp, werde ich noch einbauen!
pacman -Syu
Der Befehl ‚pacman‘ wurde nicht gefunden, kann aber installiert werden mit:
apt install pacman
Du musst erstmal via chroot in das Arch wechseln.