Boot Time Optimization: Fast Startup (Artikel 221)
Analyse und Beschleunigung des Linux-Bootvorgangs. Erfahren Sie alles über systemd-analyze, die Verschlankung des Initramfs und das Minimieren von Hardware-Timeouts.
# Boot Optimization: In Sekunden zur Einsatzbereitschaft
TL;DR / Management Summary In Cloud-Umgebungen und bei Edge-Devices ist die Boot-Zeit ein kritischer Faktor (Auto-Scaling, Power-Cycling). Ein Standard-Linux braucht oft 30-60 Sekunden zum Starten. In diesem Modul lernen wir, wie wir Alpine und Arch so trimmen, dass der Login-Prompt in unter 5 Sekunden erscheint. Wir nutzen systemd-analyze, entschlacken das Initramfs und eliminieren unnötige Hardware-Probes.
# 1. Einführung & Architektur
Den Flaschenhals finden.
Der Bootvorgang besteht aus drei Phasen:
- Firmware (UEFI/BIOS): Initialisiert Hardware.
- Loader (GRUB/systemd-boot): Lädt Kernel und Initramfs.
- Kernel & User-Space: Startet Dienste.
# Der Boot-Analyse Flow (Mermaid)
graph LR
A[Power On] --> B[UEFI: ~2s]
B --> C[Bootloader: ~1s]
C --> D[Kernel: ~1s]
D --> E[Init System: Services]
subgraph "Optimization Areas"
E --> F[Parallel Start]
E --> G[Delay Services]
E --> H[Disable Bloat]
end
F/G/H --> I[Ready: < 5s]
# 2. Analyse: Wo geht die Zeit verloren?
Messen statt Raten.
# Unter Arch Linux (systemd)
# Zusammenfassung
systemd-analyze
# Detaillierte Liste der Dienste (Wer ist der Langsamste?)
systemd-analyze blame
# Kritische Pfade visualisieren
systemd-analyze critical-chain
# Unter Alpine (OpenRC)
Nutzen Sie den integrierten Zeitstempel (muss in /etc/conf.d/rc aktiviert werden):
rc-status --manual
# 3. Initramfs Optimierung
Die ‘Mini-Disk’ abspecken.
Das Initramfs enthält alle Treiber für den Start. Ist es zu groß, dauert das Laden von der Disk (besonders bei HDD/SD-Karten) lange.
# In Arch (mkinitcpio)
Datei: /etc/mkinitcpio.conf
Nutzen Sie den autodetect Hook. Er packt nur die Treiber ins Image, die auf Ihrem aktuellen System wirklich geladen sind.
HOOKS=(base udev autodetect modconf block filesystems keyboard fsck)
Danach: sudo mkinitcpio -P.
# In Alpine (mkinitfs)
Nutzen Sie nur die Features, die Sie brauchen:
Datei: /etc/mkinitfs/mkinitfs.conf
features="ata base virtio ext4" # Kein 'crypt' oder 'raid', wenn nicht genutzt!
# 4. Day-2 Operations: Kernel-Parameter & Timeouts
Den Bootvorgang beschleunigen.
# Bootloader-Wartezeit verkürzen
In /etc/default/grub:
GRUB_TIMEOUT=0 (Startet sofort den Standard-Kernel).
# Kernel-Stille (Quiet Boot)
Die Textausgabe auf dem Schirm verlangsamt den Bootvorgang minimal.
linux /vmlinuz ... quiet loglevel=3 rd.udev.log_priority=3
# Fastboot (fsck überspringen)
Überspringen Sie den Dateisystemcheck beim Booten (Sicher bei Journaling FS wie Ext4/XFS):
fastboot als Kernel-Parameter anhängen.
# 5. Troubleshooting & “War Stories”
Wenn ‘schnell’ zu ‘instabil’ wird.
# Story 1: “Der hängende Netzwerk-Mount”
Symptom: Der Bootvorgang hakt für exakt 90 Sekunden bei “A start job is running for /mnt/nfs”.
Ursache: Das System versucht einen Remote-Share zu mounten, bevor das Netzwerk vollständig da ist.
Lösung: Nutzen Sie x-systemd.automount in der fstab oder setzen Sie noauto, damit der Bootloader nicht auf den Mount wartet.
# Story 2: “Hardware nicht gefunden”
Symptom: Nach der Initramfs-Optimierung (autodetect) bootet der Server auf neuer Hardware (z.B. nach Migration von KVM zu VMware) nicht mehr.
Ursache: Die Treiber für den neuen Storage-Controller fehlen im minimalistischen Initramfs.
Lösung: Bauen Sie ein Fallback-Image mit allen Standard-Treibern (mkinitcpio -p linux-lts). Nutzen Sie dieses zum Booten nach Migrationen.
# 6. Fazit & Empfehlung
- Wahl: systemd-boot ist oft schneller als GRUB, da es weniger Logik enthält.
- Minimalismus: Deaktivieren Sie alle systemd-Services, die Sie nicht zwingend beim Start brauchen. Nutzen Sie Socket Activation (Artikel 007).
- Hardware: Auf virtuellen Maschinen ist der Gewinn durch Optimierung oft am größten, da Hardware-Initialisierung entfällt.
# Anhang: Cheatsheet
| Aufgabe | Befehl |
|---|---|
| Boot Zeit Report | systemd-analyze plot > boot.svg |
| Dienste deaktivieren | systemctl disable --now <name> |
| Initramfs Größe sehen | ls -lh /boot/initramfs* |
| Kernel Params prüfen | cat /proc/cmdline |
| Verwaiste Mod-Configs | ls /etc/modprobe.d/ |
| Hardware Probes aus | modprobe.blacklist=sp5100_tco (Beispiel) |