Boot und Kernel: die Startkette und ihre Rettungswege
Der Host kommt nach dem Neustart nicht wieder. Auf der Fernwartungskonsole steht ein Anmeldeprompt — SSH antwortet trotzdem nicht. Ein anderer bleibt in einer Notfall-Shell stehen, weil ein Storage-Umbau vor drei Wochen das Startsystem nie erreicht hat. Zwischen dem Einschalten und einer nutzbaren Anmeldung liegen fünf Übergaben, und die Kunst besteht darin, in Sekunden zu sehen, an welcher es klemmt. Dieses Modul zeigt dir die Kette, warum es das Initramfs überhaupt gibt, wie du über die Kernel-Kommandozeile für genau einen Start ausweichst — und warum ein Kernelwechsel seinen Rückweg braucht, bevor du neu startest.
Lehrtext · 11 Abschnitte · zuletzt geprüft: 2026-09-03
Fünf Übergaben zwischen Strom und Anmeldeprompt
Ein Server, der „nicht hochkommt“, ist keine Diagnose. Zwischen dem Einschalten und einer nutzbaren Anmeldung liegen fünf Stationen, und jede gibt an die nächste ab. Wer weiß, wie weit der Start gekommen ist, hat den Fehler schon auf ein Fünftel eingegrenzt.
- Firmware
- UEFI oder BIOS. Prüft die Hardware und sucht ein startfähiges Gerät. Fehler hier: gar kein Bild, kein Bootgerät gefunden.
- Bootloader
- Liest sein Menü, lädt Kernel und Initramfs in den Speicher und übergibt. Fehler hier: kein Menü, oder eine Fehlermeldung noch vor jeder Kernelausgabe.
- Kernel
- Erkennt Hardware, lädt Treiber. Fehler hier: eine Panik mit Kernelmeldungen auf dem Bildschirm.
- Initramfs
- Ein Mini-System im Speicher, dessen einzige Aufgabe es ist, das echte Wurzeldateisystem zu finden und einzuhängen. Fehler hier: eine Notfall-Shell, die den Root-Mount nicht schafft.
- systemd
- Übernimmt vom Initramfs und startet die Dienste bis zum Zielzustand. Fehler hier: der Host läuft, aber etwas fehlt.
Warum es das Initramfs überhaupt gibt
Initramfs — Ein kleines, komplettes Dateisystem, das der Bootloader zusammen mit dem Kernel in den Arbeitsspeicher lädt. Es enthält genau die Treiber und Werkzeuge, die nötig sind, um an das eigentliche Wurzeldateisystem heranzukommen.
Das klingt umständlich und löst ein echtes Henne-Ei-Problem: Um das Wurzeldateisystem einzuhängen, braucht der Kernel Treiber — für den RAID-Controller, für LVM, für die Verschlüsselung. Diese Treiber liegen aber auf dem Wurzeldateisystem, an das er ohne sie nicht herankommt.
Deshalb wird das Initramfs beim Erzeugen an das jeweilige System angepasst: Es bekommt genau die Module mit, die dieser Host braucht. Und genau daraus folgt die häufigste selbstgemachte Boot-Störung — wer die Speicherkonfiguration ändert, ohne das Initramfs neu zu erzeugen, hat ein Startsystem, das den neuen Weg zur Platte nicht kennt.
Die Kernel-Kommandozeile: der Hebel für den Notfall
Der Bootloader übergibt dem Kernel eine Zeile mit Parametern. Was gerade aktiv ist, liest du auf dem laufenden System unter `/proc/cmdline` — das ist der erste Griff, wenn du wissen willst, womit dieser Host tatsächlich gestartet wurde.
Diese Zeile lässt sich im Bootmenü für einen einzelnen Start bearbeiten, ohne irgendetwas auf der Platte zu ändern. Das ist der wichtigste Rettungsweg, den ein Linux-System hat: Du änderst nichts, du probierst nur — und ein Neustart stellt den alten Zustand wieder her.
systemd.unit=<ziel>- Startet in ein anderes Ziel als das voreingestellte. Der allgemeine Fall, aus dem sich die folgenden ableiten.
rescue- Kurzform für das Rettungsziel — entspricht
systemd.unit=rescue.target. emergency- Kurzform für das Notfallziel.
- Parameter mit
rd.-Präfix - Wirken in der Initramfs-Phase, also bevor das echte System übernimmt — etwa
rd.emergencyfür eine Shell noch vor dem Root-Mount.
rd.-Präfix greift im Initramfs, alles andere erst danach. Wenn der Start schon am Root-Mount scheitert, hilft dir ein Ziel ohne dieses Präfix nicht — das System kommt ja nie so weit, es auszuwerten.Rescue und Emergency sind nicht dasselbe
Beide führen zu einer Shell statt zum normalen Betrieb, aber sie unterscheiden sich in dem, was vorher passiert — und diese Unterscheidung entscheidet, welches du brauchst.
rescue.target- Zieht das Basissystem einschließlich der Systemmounts hoch und startet dann eine Rettungs-Shell. Du hast deine Dateisysteme, aber keine regulären Dienste.
emergency.target- Startet eine Notfall-Shell auf der Hauptkonsole und zieht weder weitere Dienste noch Mounts hoch. Der minimalste Zustand, den es gibt.
Praktisch heißt das: Für eine kaputte Dienstkonfiguration oder ein vergessenes Passwort reicht rescue — die Dateisysteme sind da, du kannst arbeiten. Wenn dagegen der Mount selbst das Problem ist, landest du ohnehin in emergency, und dort musst du erst von Hand einhängen, bevor du irgendetwas reparieren kannst.
Das reguläre Ziel heißt default.target und ist üblicherweise nur ein anderer Name für multi-user.target — ein System ohne grafische Oberfläche, der Normalfall für Server. graphical.target zieht multi-user.target mit hoch und ergänzt die Oberfläche.
Ein Kernelwechsel ist kein Update wie andere
Ein neuer Kernel unterscheidet sich in einem Punkt von jedem anderen Paket: Er wirkt erst nach einem Neustart, und wenn er nicht funktioniert, merkst du es genau dann — wenn der Host schon aus ist.
Die gute Nachricht ist, dass Distributionen das eingeplant haben. Ein Kernelupdate ersetzt den alten Kernel nicht, sondern legt den neuen daneben; im Bootmenü stehen danach beide. Das ist der eingebaute Rückweg, und er kostet nichts — außer dass jemand ihn kennen und im Ernstfall erreichen muss.
Kernelwechsel auf einem Host mit nur einem Wartungsfenster
Szenario
Ein Treiberfehler soll mit einem neueren Kernel behoben werden. Der Host trägt einen kundennahen Dienst. Fernwartungszugang ist vorhanden, ein Testsystem gibt es nicht.
Anforderungen
- Der Rückweg steht fest, bevor neu gestartet wird
- Ein Fehlschlag ist ohne Anfahrt behebbar
- Der Erfolg wird belegt, nicht angenommen
Schritte
- Prüfen, dass der alte Kernel installiert bleibt und im Bootmenü erscheint — das ist der Rückweg, und er wird vorher angesehen, nicht vorausgesetzt.
- Zugriff auf die Fernwartungskonsole testen, bevor der Neustart passiert. Ein Rückweg, den man nicht erreicht, ist keiner.
- Neu starten und die Startkette auf der Konsole mitlesen, statt auf die Erreichbarkeit über das Netz zu warten.
- Nach dem Start belegen, dass der laufende Kernel der erwartete ist und der Treiberfehler tatsächlich weg ist — beides getrennt prüfen.
- Schlägt es fehl: im Bootmenü den alten Kernel wählen. Das ist ein einzelner Start, keine Änderung — der Host ist danach wieder da, und die Analyse hat Zeit.
Merksatz: Der Rückweg eines Kernelwechsels ist ein Menüeintrag und ein Konsolenzugang. Beides ist vorher zu prüfen, weil beides nachher nicht mehr zu beschaffen ist.
Kernel-Module: Treiber, die zur Laufzeit dazukommen
Ein Linux-Kernel bringt nicht alle Treiber fest eingebaut mit. Das meiste liegt als Modul vor und wird geladen, wenn die passende Hardware auftaucht — deshalb funktioniert derselbe Kernel auf sehr unterschiedlichen Maschinen.
Kernel-Modul — Ein Stück Kernelcode, das im laufenden Betrieb nachgeladen und meist auch wieder entfernt werden kann — typischerweise ein Gerätetreiber oder ein Dateisystem. Was gerade geladen ist, listet lsmod; geladen und entladen wird mit modprobe.
Im Betrieb wird das dann relevant, wenn ein Treiber nicht geladen werden soll: eine fehlerhafte Version, ein Gerät, das ein anderer Treiber übernehmen soll, oder eine Funktion, die aus Sicherheitsgründen wegbleibt. Dafür gibt es Konfigurationsdateien unter /etc/modprobe.d/.
Und es gibt einen zweiten Grund, warum eine Sperre scheinbar ignoriert wird: Wird das Modul schon im Initramfs geladen, kommt die Datei unter /etc/modprobe.d/ gar nicht zum Zug — sie liegt auf dem Wurzeldateisystem, das zu diesem Zeitpunkt noch nicht eingehängt ist. Damit die Regel früh genug greift, muss das Initramfs neu erzeugt werden.
Die Bootloader-Konfiguration wird erzeugt, nicht geschrieben
Ein klassischer Fehlgriff: Man findet die Konfigurationsdatei des Bootloaders, ändert dort einen Kernelparameter, startet neu — und die Änderung ist verschwunden. Beim nächsten Kernelupdate erst recht.
Der Grund ist, dass diese Datei bei den gängigen Distributionen erzeugt wird. Es gibt eine Quelldatei mit den Vorgaben und ein Werkzeug, das daraus das fertige Menü baut — inklusive aller installierten Kernel. Wer die erzeugte Datei bearbeitet, schreibt in ein Zwischenergebnis, das beim nächsten Lauf des Generators überschrieben wird.
- Einmalig, für einen Start
- Im Bootmenü die Kernel-Kommandozeile bearbeiten. Ändert nichts auf der Platte, überlebt keinen Neustart — genau richtig zum Ausprobieren.
- Dauerhaft
- Die Quelldatei ändern und die Konfiguration neu erzeugen lassen. Überlebt Kernelupdates, weil der Generator sie jedes Mal wieder einbaut.
- Falsch
- Die erzeugte Menüdatei direkt bearbeiten. Funktioniert bis zum nächsten Generatorlauf und ist dann spurlos weg.
Was ein Symptom belegt — und was nicht
Bei Bootproblemen wird häufiger falsch geschlossen als irgendwo sonst, weil eine Beobachtung mehr zu sagen scheint, als sie tut. Zwei Beispiele, die im Alltag ständig vorkommen:
- Konsole zeigt einen Anmeldeprompt, SSH antwortet nicht
- Belegt: Der Start ist komplett durchgelaufen. Offen: Netzwerk, Firewall, Namensauflösung, der SSH-Dienst selbst. Der Bootpfad ist als Ursache ausgeschlossen.
- Host ist per Ping erreichbar, aber ohne Dienst
- Belegt: Kernel und Netzwerk sind oben. Offen: alles, was systemd danach starten sollte.
Kurzcheck
Nach einem Neustart zeigt die Fernwartungskonsole einen normalen Anmeldeprompt, aber SSH antwortet nicht. Wo suchst du?
- Im Netzwerk- und Dienstpfad — der Start ist durchgelaufen, sonst gäbe es keinen Prompt.
- Im Initramfs — der Root-Mount könnte teilweise fehlgeschlagen sein und Dienste ohne ihre Dateien gelassen haben.
- In der Kernel-Kommandozeile — ein Parameter könnte den Host in ein Ziel ohne Netzwerk gestartet haben.
Treffer. Genau. Der Prompt belegt, dass die gesamte Startkette bis zum Zielzustand gekommen ist. Was fehlt, liegt danach: Adresse, Route, Paketfilter oder der SSH-Dienst selbst.
UEFI, Secure Boot und die signierte Kette
Auf heutiger Serverhardware ist die Firmware UEFI. Für den Betrieb bedeutet das vor allem eines: Die Firmware kennt eine eigene, kleine FAT-Partition auf der Platte, in der die Startprogramme liegen, und sie führt eine eigene Liste von Starteinträgen. Ein Host kann also startfähig sein, ohne dass die Firmware ihn in ihrer Liste hat — und umgekehrt.
Darauf setzt Secure Boot auf: Die Firmware führt nur Startprogramme aus, deren Signatur sie kennt. Der Bootloader ist signiert, prüft seinerseits den Kernel, und so entsteht eine Kette bis zum laufenden System.
Die drei Wege daraus sind: das Modul signieren lassen, einen eigenen Schlüssel in der Firmware hinterlegen, oder Secure Boot abschalten. Alle drei sind vertretbar — der dritte nur dann, wenn jemand die Entscheidung bewusst trifft und dokumentiert, statt sie im Wartungsfenster nebenbei zu fällen.
Wenn der Start langsam ist statt kaputt
Nicht jedes Bootproblem ist ein Abbruch. Ein Host, der statt in dreißig Sekunden erst nach vier Minuten erreichbar ist, hat auch ein Problem — nur eines, das niemand meldet, bis es im Notfall stört.
systemd bringt dafür eigene Auswertungen mit. Die eine listet alle Units nach ihrer Startdauer — nützlich, um den größten Einzelposten zu finden. Die andere zeigt die zeitkritische Kette als Baum: welche Unit auf welche gewartet hat und wie lange. Die zweite ist fast immer die aufschlussreichere, weil eine langsame Unit nur dann den Start verzögert, wenn andere auf sie warten.
nofail, eine Namensauflösung ohne Antwort, ein Dienst mit fester Wartezeit statt deklarierter Abhängigkeit. Der Startpfad ist damit auch eine Prüfung der Abhängigkeiten, die jemand modelliert hat.Ein Sonderfall lohnt eigene Aufmerksamkeit: Dienste, die auf ein fertig konfiguriertes Netzwerk warten. Es gibt dafür ein eigenes Ziel, und es bedeutet nicht, was viele annehmen — nicht „das Netzwerk funktioniert“, sondern „die Konfiguration ist abgeschlossen“. Eine Adresse per DHCP kann danach immer noch fehlen, und ein Dienst, der sich auf eine bestimmte Adresse bindet, scheitert trotzdem.
Die Reihenfolge bei einem Bootproblem
Der vierte Schritt ist der, der am meisten Ärger spart. Eine Änderung im Bootmenü gilt für einen einzigen Start; eine Änderung an der Konfiguration auf der Platte gilt für immer — auch wenn sie falsch war. Im Zweifel probiert man erst und schreibt danach.
Der fünfte klingt nach Formalie und ist es nicht. Ein Host, den man aus einer Notfall-Shell heraus repariert hat, ist damit nicht als startfähig belegt — belegt ist nur, dass er in diesem einen Zustand bedienbar war. Ein vollständiger Neustart im Wartungsfenster ist der einzige Test, der die Frage beantwortet, und er ist erheblich billiger als derselbe Neustart um drei Uhr nachts nach einem Stromausfall.
Jetzt anwenden
Diesen Stoff gibt es als Modul mit bewerteten Entscheidungs-Checks — dieselbe Einführung, danach die Übungen.
Zum Modul →Quellen & Aktualität10 Primärquellen · zuletzt geprüft:
- 01man7.org/linux/man-pages/man7/kernel-command-line.7.html
- 02man7.org/linux/man-pages/man7/systemd.special.7.html
- 03man7.org/linux/man-pages/man1/systemd.1.html
- 04man7.org/linux/man-pages/man1/systemd-analyze.1.html
- 05man7.org/linux/man-pages/man8/dracut.8.html
- 06man7.org/linux/man-pages/man5/fstab.5.html
- 07docs.kernel.org/admin-guide
- 08man7.org/linux/man-pages/man5/modprobe.d.5.html
- 09man7.org/linux/man-pages/man8/modprobe.8.html
- 10gnu.org/software/grub/manual/grub/grub.html