Fast Boot

Bootzeit Optimierung.

Schnelles und zuverlässiges Booten

Schnelle Bootzeiten und ein zuverlässiger Bootloader zählen zu den Grundanforderungen an Embedded-Linux-Systeme. Dennoch wird unterschätzt, wie stark der Bootloader das Systemverhalten prägt und damit auch den ersten Eindruck, den ein Produkt beim Anwender hinterlässt. Ebenso wird die Optimierung der Bootzeit oft erst spät angegangen, obwohl sich eine einmal festgelegte Systemarchitektur nachträglich nur schwer anpassen lässt.

11 s → 656 ms

Auf einem Atmel AT91 (ARM9) ließ sich die Bootzeit um 94 % verkürzen, durch Optimierungen an Bootloader, Kernel und Userspace und ohne Änderungen an der Anwendung oder der Hardware.

Ein Bootloader leistet weit mehr, als die Hardware zu initialisieren und das Betriebssystem zu starten. Er bestimmt die Bootzeit maßgeblich mit, ist ein zentrales Glied der Secure-Boot-Chain und übernimmt häufig auch die Überwachung per Watchdog oder das Zurücksetzen des Systems auf Werkseinstellungen.

Viele dieser Anforderungen lassen sich mit etablierten Bootloadern wie U-Boot, coreboot oder RedBoot erfüllen. Wir setzen sie regelmäßig in Kundenprojekten ein und passen sie an die jeweilige Hardware und die spezifischen Anforderungen des Systems an.

Steigen die Anforderungen, etwa durch ehrgeizigere Bootzeiten, anspruchsvollere Update-Konzepte oder strengere Sicherheitsvorgaben, bietet sich ein Initial Program Loader (IPL) an. Dabei bleibt der Bootloader so klein und einfach wie möglich, und Funktionen, die sonst im Bootloader stecken würden, wandern ins Betriebssystem.

Das hat zwei wesentliche Vorteile:

  • Kleinere Codebasis: Der Bootloader schrumpft deutlich. Das senkt den Wartungsaufwand und erleichtert Verifikation und Zertifizierung.
  • Standardwerkzeuge statt Sonderlösungen: Update-Logik und andere Aufgaben der Systemverwaltung lassen sich mit den gewohnten Linux-Werkzeugen umsetzen statt in der eingeschränkten Umgebung eines Bootloaders.

Fast Boot

Moderne Embedded-Devices sind komplex, sowohl in ihrer eigenen Leistungsfähigkeit als auch in ihrer Einbindung in Gesamtsysteme. IoT- und Industrie-4.0-Anwendungen stellen zusätzliche Anforderungen an Konnektivität, Fernwartung und Verfügbarkeit.

Besonders kritisch wird die Bootzeit, wenn ein Projekt von einem Mikrocontroller auf einen leistungsfähigeren SoC umsteigt. Die neue Hardware bietet zwar deutlich mehr Rechenleistung, doch mit einem vollwertigen Betriebssystem fühlt sich der Systemstart zunächst oft wie ein Rückschritt an. Genau hier setzt die Bootzeit-Optimierung an.

Der Boot-Prozess

Ein Linux-System durchläuft beim Booten verschiedene Phasen. Jede Phase bietet einen eigenen Ansatzpunkt für Optimierungen und kann unabhängig gemessen werden:

PhaseWas passiertOptimierungspotenzial
Bootloader Initialisiert die Hardware, lädt den Kernel und übergibt Device Tree an Kernel HOCHViele Standardfunktionen werden gar nicht benötigt
Kernel Initialisiert die Treiber und startet den Userspace HOCHEin nicht optimierter Kernel benötigt auf dem kritischen Pfad typischerweise 3–10 Sekunden. Noch länger, wenn Treiber ihre Firmware synchron über langsame Busse laden.
Initramfs Mountet das Root-Dateisystem, lädt Module und bereitet den Userspace vor MITTELKann in optimierten Systemen oft ganz entfallen
Userspace-Init Startet systemd-Dienste und Init-Skripte SEHR HOCHMeist der größte Anteil an der Bootzeit
Applikation Die Applikation ist ready VARIABELHängt davon ab, ob der kritische Pfad optimiert ist

Von 11 Sekunden auf unter 700 ms

Die Optimierung der Bootzeit erfolgt in der Regel über mehrere Ansatzpunkte gleichzeitig. Das folgende Diagramm zeigt die kumulative Reduzierung der Bootzeit nach jedem Optimierungsschritt, gemessen auf einem Atmel AT91 ARM9.
Nicht optimierter Ausgangszustand 11,00 s
U-Boot: Netzwerk und USB entfernt 8,75 s
Image-Prüfung bei jedem Boot übersprungen 8,39 s
Kernel-Konfiguration verschlankt 8,10 s
Userspace-Init-Skripte gestrafft 7,38 s
Initramfs mit direktem Anwendungsstart 4,16 s
U-Boot durch eigenen IPL ersetzt 1,26 s
lpj= vorbelegt (Kalibrierung entfällt) 1,06 s
Ausgabe auf der seriellen Konsole unterdrückt 736 ms
Kernel-Kompression: gzip → LZO 656 ms
kumulierte Bootzeit nach jedem Schritt · Atmel AT91 ARM9

Die ersten beiden Optimierungen betreffen den Bootloader. Werden nicht benötigte U-Boot-Funktionen wie Netzwerk- und USB-Unterstützung entfernt, sinkt die Bootzeit auf 8,75 s. Entfällt zusätzlich die Image-Verifikation, die bei jedem Start durchgeführt wird, sind es noch 8,39 s.

Eine Kernel-Konfiguration, die auf die tatsächlich benötigte Hardware zugeschnitten ist, bringt die Bootzeit auf 8,1 s. Im Userspace werden die Init-Skripte optimiert: Sequenzielle Wartezeiten fallen weg, und Dienste, die beim Systemstart nicht gebraucht werden, werden entfernt. Damit liegt die Bootzeit bei 7,38 s.

Der Wechsel zu einem Initramfs, das die Anwendung direkt startet, halbiert die Bootzeit nahezu, von 7,38 s auf 4,16 s. Ersetzt ein eigener Initial Program Loader (IPL) U-Boot, sinkt sie auf 1,26 s. Ein IPL, der genau auf die Hardware zugeschnitten ist und nur die wirklich nötigen Aufgaben übernimmt, ist schneller als ein universeller Bootloader.

Die letzten drei Schritte fallen kleiner aus, sind aber noch deutlich messbar. Wird der Kernel-Parameter lpj= fest vorgegeben, entfällt die Kalibrierung der Delay-Loop bei jedem Start (1,06 s). Ohne Ausgaben auf der seriellen Konsole blockiert der UART nicht mehr bei jeder Kernel-Logzeile (736 ms). Zuletzt wird die Kernel-Kompression von gzip auf LZO umgestellt, das sich schneller entpacken lässt. Damit sind es nur noch 656 ms.

Am Ende bootet das System 94 % schneller als die Ausgangsversion, ohne Änderungen an der Anwendung oder der Hardware.

Gemeinsam zu einem schnelleren Bootvorgang

Wir unterstützen Sie bei der Auswahl des Bootloader, der Bootzeit Optimierung und der Integration in Ihr Embedded-Projekt. Sprechen Sie uns an, wenn Sie Ihre Bootzeiten verbesseren wollen, ein Update-Konzept planen oder eine bestimmte Hardwareplattform einsetzen.

Consulting

Bootzeit Analysen, Secure Boot und mehr

Realisierung

Bootzeit Optimierung und Bootloader Entwicklung

Training

Praxisorientierte Schulungen für Ihr Entwicklungsteam

Wie schnell muss Ihr Gerät starten?