Bootvorgang beschleunigen

aus PUG, der Penguin User Group
Wechseln zu: Navigation, Suche

Die Flexibilität eines GNU/Linux-Systems erlaubt u.a. den lästigen Startvorgang zu verkürzen. Einige Möglichkeiten werden hier aufgezeigt und warten auf Erweiterung...

VORSICHT: Die nachfolgenden Vorgehensweisen sind mit größter Vorsicht anzuwenden, es wird wohl einen Grund geben, warum die Distributoren die Tipps nicht schon selbst eingeführt haben. Eine funktionierende Knoppix-CD/-DVD sollte man als Frickler zum Rückgängigmachen sowieso zur Hand haben. Also: im Zweifelsfall lieber ein paar Sekunden länger auf die Vollendung des Boot-Prozesses warten.


Analyse

optisch Im Ablauf des Bootvorgangs sind Wartezeiten schon mit blossem Auge erkennbar, zumindest auf heute veralteten Maschinen, die sich jedoch noch hervorragend für Linux eignen.

Bootlog Zumindest auf SuSE-Distributionen bereits lange gang und gäbe, kann das Aufzeichnen (logging) des vollständigen Bootvorgangs mit echo 'BOOTLOGD_ENABLE=Yes' > /etc/default/bootlogd (Danke an Rainer Trusch/Wouter Verhelst) eingeschaltet werden. Den Rest liefert dmesg|less.

Bootchart ([1]) Zum Aufzeichnen und späteren grafischen Auswerten des zeitlichen Ablaufs des Bootvorgangs. Die Programmläufe werden von einem Java-Prgramm oder per Upload auf ein Web-Formular als Grafik-Datei in einem Gantt-Diagramm (bekannt aus der Projektverwaltung) auf die Zeitachse aufgetragen. So können bereits visuell Verzögerungen erkannt werden.


Beschleunigung

angepassten Kernel backen Da der Kernel einen grossen Anteil am Zeitbedarf des Bootvorgangs hat, trägt ein an die eingebaute Hardware angepasster, zurechtgestutzer "Selbstgebackener" zur Bootbeschleunigung bei.

Services Nicht benötigte Services sollten abgeschaltet oder deinstalliert und dessen Start-scripte entfernt werden (in Debian aptitude: Pakete im Status c oder i mit _ zur komplett-Entfernung markieren und mit g ausführen). Nebenbei erhöht man so die Sicherheit des gesamten Systems.

readahead ...bekannt vom Ubuntu-Projekt, lädt Dateien, die in einer Liste aufgeführt sind, in den Speicher, um sie bei späterem Gebrauch schneller zur Verfügung zu haben.

hotplug Bootlogs können herangezogen werden, um die Ausgaben von hotplug zu analysieren: die Module, die von hotplug mit Status "loaded successfully" bezeichnet werden, können als eigene Zeile in /etc/modules eingegeben werden und werden somit bei jedem booten geladen. Damit können einige hotplug-subsysteme per HOTPLUG_RC_<subsystem>=no in /etc/defaults/hotplug abgeschaltet werden, allen voran das zeitraubende pci-hotplug-subsystem. In vielen Systemen ist PCI (noch) nicht hotplug-fähig eingerichtet.

udev Ab Kernel 2.6.12, besser noch 2.6.15, sollte udev statt hotplug eingesetzt werden, das u.a. beim Booten performanter ist. Die Datei /etc/modules kann entsprechend gekürzt werden.

display-manager Der Startzeitpunkt des display-managers kann auch vorverlegt werden. Dazu muss nur für runlevel X in /etc/rcX.d/ der Dateiname von kdm/gdm/xdm auf eine niedrigere Zahl gesetzt werden.
An alle: dies ist auf zwei Systemen mit Debian Sid, kdm und KDE erfolgreich gelaufen, es werden Erfahrungsberichte von anderen Systemen benötigt.

runit Dieser init-Ersatz führt ein neues, paralleles Startverfahren für die Services ein.
Da
1. zumindest Debian runit-scripte nicht automatisch einrichtet, also Debian keine vollständige Unterstützung bietet und
2. die Services Analyse bei einem per Beschleunigung "Services" (s.o.) einen geringen Anteil an der gesamten Verlangsamung haben
wurde dies zugunsten anderer Projekte nicht getestet.
An alle: vieleicht hat sich ja jemand mal die Arbeit gemacht, für alle benötigten Services die runit-scripte herunterzuladen/neu zu schreiben und möchte hier seinen Erfahrungsbericht abgeben.

Netzwerk Gerade hier gibt es oft lange Wartezeiten, wenn z.B. ein Gateway nicht erreichbar ist. Meist passiert das, wenn eine Netzanwendung eine DNS Anfrage macht und auf eine Antwort wartet, gerade bei SMTP Services (z.B. Sendmail/Postfix) ist das häufig zu beobachten. In diesem Fall ist die Verwendung von /etc/hosts durch eine passende Einstellung der /etc/nsswitch.conf oder notfalls hardcodierte IP-Adressen in Betracht zu ziehen. Das funktioniert allerdings nur, wenn es "irgendwo" einen Smarthost gibt, denn sonst versucht Sendmail ggf. vorliegende Mails direkt zu verschicken, was ohne DNS nicht sinnvoll machbar ist. Ggf. kann man Sendmail auch mit "&" starten, dann läuft das Startskript im Hintergrund und der Rest des System kann weiter booten. Dies kann jedoch zu unerwünschten Seiteneffekten führen, wenn andere Services einen betriebsbereiten Sendmail erwarten.

Kleine Anmerkung: Sendmail wurde hier nur als Synonym für einen beliebigen MTA verwendet, das gilt natürlich auch alles für qmail, Exim, Postfix u.A.


Links