Kernel & initramfs
Nach dem Bootloader übernimmt der Linux-Kernel. Bevor er das eigentliche Root-Dateisystem einhängen kann, braucht er oft Treiber, die erst geladen werden müssen — ein Henne-Ei-Problem, das die initramfs löst.
Phase 3: Was der Kernel beim Start tut
Abschnitt betitelt „Phase 3: Was der Kernel beim Start tut“GRUB lädt Kernel + initramfs in den RAM │ ▼Kernel entpackt und startet sich selbst │ ▼Kernel mountet initramfs als temporäres Root-Filesystem (/) │ ▼/init (oder /sbin/init) aus der initramfs wird als PID 1 gestartet │ ├── Kernel-Module laden (Treiber für Festplatte, RAID, Crypto, ...) ├── Geräte erkennen (udev) ├── ggf. Verschlüsselung entsperren (cryptsetup) ├── ggf. RAID zusammenbauen (mdadm) │ ▼Echtes Root-Dateisystem einhängen (pivot_root) │ ▼systemd (PID 1 im echten Root) übernimmt → Phase 4initramfs — temporäres Root-Dateisystem
Abschnitt betitelt „initramfs — temporäres Root-Dateisystem“initramfs (initial RAM filesystem) ist ein komprimiertes cpio-Archiv, das der
Bootloader zusammen mit dem Kernel in den Arbeitsspeicher lädt. Es enthält ein
minimales Linux-System mit allem, was gebraucht wird um das echte Root-Dateisystem
zu mounten.
Typischer Inhalt:
- Kernel-Module (Treiber für Festplatten-Controller, Dateisysteme)
udev(Geräte-Erkennung)busybox(Shell und Basis-Werkzeuge)cryptsetup(bei verschlüsseltem Root-FS)mdadm(bei Software-RAID)nfs-utils(bei NFS-Root)
initrd vs. initramfs
Abschnitt betitelt „initrd vs. initramfs“| initrd | initramfs | |
|---|---|---|
| Format | Disk-Image (ext2) | cpio-Archiv (komprimiert) |
| Einbindung | als Block-Device gemountet | direkt im RAM entpackt |
| Status | veraltet | aktueller Standard |
Trotzdem heißt die Datei oft noch initrd.img-... — historisch bedingt.
Speicherort
Abschnitt betitelt „Speicherort“ls -lh /boot/# initrd.img-6.1.0-18-amd64 ← Debian/Ubuntu# initramfs-6.1.0-67.el9.img ← RHEL/Fedora# initramfs-linux.img ← ArchInhalt inspizieren
Abschnitt betitelt „Inhalt inspizieren“# Debian/Ubuntulsinitramfs /boot/initrd.img-$(uname -r)lsinitramfs /boot/initrd.img-$(uname -r) | grep crypt # enthält cryptsetup?
# RHEL/Fedoralsinitrd /boot/initramfs-$(uname -r).imglsinitrd /boot/initramfs-$(uname -r).img | grep mdadm
# Manuell entpacken (Arch / alle):mkdir /tmp/initramfs && cd /tmp/initramfsunmkinitramfs /boot/initramfs-linux.img . # Debian-Tool# oder:cpio -idv < <(zcat /boot/initrd.img-$(uname -r))initramfs neu erstellen
Abschnitt betitelt „initramfs neu erstellen“Nach Änderungen an Kernel-Modulen, Treiber-Konfiguration oder Blacklists muss die initramfs neu erstellt werden:
# Aktuellen Kernelsudo update-initramfs -u
# Alle installierten Kernelsudo update-initramfs -u -k all
# Für einen bestimmten Kernelsudo update-initramfs -u -k 6.1.0-18-amd64# Aktuellen Kernelsudo dracut --force
# Bestimmten Kernelsudo dracut --force /boot/initramfs-$(uname -r).img $(uname -r)
# Mit mehr Detailssudo dracut --force --verbose# Alle Kernel (empfohlen nach Modul-Änderungen)sudo mkinitcpio -P
# Bestimmtes Presetsudo mkinitcpio -p linuxKernel-Parameter
Abschnitt betitelt „Kernel-Parameter“Der Bootloader übergibt dem Kernel beim Start Parameter. Die aktiven Parameter des laufenden Systems:
cat /proc/cmdline# BOOT_IMAGE=/boot/vmlinuz-6.1.0 root=UUID=abc123 quiet splashHäufige Kernel-Parameter:
| Parameter | Bedeutung |
|---|---|
root=UUID=... | Root-Dateisystem (UUID oder Pfad) |
quiet | Kernel-Meldungen beim Booten unterdrücken |
splash | Grafischer Bootsplash anzeigen |
nomodeset | Kernel-Modesetting deaktivieren (Grafik-Probleme) |
single / 1 | Single-User-Modus (Rettungsmodus) |
rd.luks.uuid=... | LUKS-verschlüsselte Partition entsperren |
rd.md.uuid=... | Software-RAID-Array angeben |
init=/bin/bash | Alternative zu systemd (nur für Notfälle) |
Parameter dauerhaft setzen: in der GRUB-Konfiguration unter GRUB_CMDLINE_LINUX_DEFAULT
in /etc/default/grub, dann update-grub / grub-mkconfig ausführen.
Mehr dazu: Bootloader