Software::Kernel
Linux: Start in zwei Sekunden
Intel-Entwickler Feng Tang hat im Zuge einer Präsentation auf der Linux Plumbers Conference in Lissabon vorgeführt, wie es dem Team gelungen ist, ein komplettes System binnen zwei Sekunden zu starten.
Larry Ewing
Dass Linux technisch in der Lage ist, sehr schnell zu starten, sollte allgemein bekannt sein. Bereits 2008
demonstrierte Arjan van de Ven, damaliger Linux-Entwickler bei Intel und Autor von PowerTOP, eine Möglichkeit, Linux binnen fünf Sekunden zu starten. In diesen fünf Sekunden wurde unter anderem die komplette Hardware initialisiert und jeder Daemon gestartet. Lediglich für die Netzwerk-Konfiguration erlaubte van de Ven etwas mehr Zeit, doch nach fünf Sekunden sollte dem Benutzer, der automatisch eingeloggt wird, bereits der vollständig initialisierte Desktop präsentiert werden.
Möglich machte es schon damals eine Optimierung des Systems und des Kernels. Die Zeit von fünf Sekunden wurde aufgeteilt in eine Sekunde für die Kernel-Initialisierung, eine Sekunde für die Boot-Skripte und Start der Daemonen, eine Sekunde für den Start des X-Servers und zwei Sekunden für die Desktop-Umgebung. Um den Kernel so schnell zu starten, musste auf eine Initial Ramdisk verzichtet werden, daher müssen alle fürs Booten benötigten Treiber im Kernel sein.
Nun hat der Intel-Entwickler Feng Tang demonstriert [PDF], dass der Start noch erheblich weiter beschleunigt werden kann. Wie seiner Präsentation auf der Linux Plumbers Conference in Lissabon entnommen werden kann, sollte ein vollständig laufendes System binnen zwei Sekunden gestartet werden. Der Kernel selbst sollte dabei gerade einmal 300 ms benötigen – ein Wert, der ein Zehntel der ursprünglichen Init-Phase darstellte.
Wie schon van de Ven hat auch Tang den Kernel an die Hardware angepasst und unnötige Prüffunktionen sowie Initialisierungsversuche des Systems eliminiert. Damit war auch sein Kernel in der Lage, sich binnen unter einer halben Sekunde zu entpacken, zu initialisieren und die wichtigsten Treiber zu laden. Die weitere Zeit benötigt das System, um den Bootloader zu initialisieren und die benötigten Anwendungen zu starten.
Als Erkenntnisgewinn meldet Tang, dass auch der Standardkernel durch Parallelisierung weiter beschleunigt werden könnte. So nutzen viele Treiber das mittlerweile zehn Jahre alte Async-init immer noch nicht und verschwenden Zeit beim Start. Ferner können viele Treiber durch optimierte Init-Funktionen weiter beschleunigt werden. So benötigt beispielsweise der SATA-Treiber knapp 200 ms für eine Initialisierung, obwohl keine Festplatte angeschlossen wurde. Als Lösungsvorschlag schlägt er deshalb vor, vor allem ältere Systeme zu überarbeiten.