Hallo,
vorab möchte ich Anmerken, daß ich kein Kernelexperte bin, und es daher sein kann, daß die ganze Idee hier in die völlig falsche Richtung geht. Bein Kernelkompilieren (mit initrd) ist mir aufgefallen, daß ein Teil des Kernels sowieso als Modul nachgeladen wird. Jetzt möchte ich einen Standardkernel verwenden und habe überlegt, ob sich die Bootzeit nicht dadurch verkürzen läßt alle nicht benötigten Module einfach beim Booten zu überspringen. Dennoch möchte ich die Module zwecks hotpluging prinzipiell behalten. Also erste Frage: wie setzt man so etwas möglichst automatisiert um (man müßte wahrscheinlich die lsmod Ausgabe mit der Liste der vorhandenen Module vergleichen)? 2. lassen sich die Module noch dynamisch nachladen (ich glaube mit udev) falls ich sie in die /etc/modprobe.d/blacklist eingetragen habe? 3. bringt das ganze überhaupt etwas? Vielen Dank schonmal fürs Lesen
Bootzeit durch Modul Blacklist verkürzen?
Re: Bootzeit durch Modul Blacklist verkürzen?
udev sucht passende Module aus, unbenötigte für nicht vorhandene Hardware werden nicht geladen.
Sonderfall initrd:
Beim Setzen von MODULES=most werden viele Treiber in die initrd kopiert, was sich beim Booten bis zum Mounten der root-Partition vielleicht in wenigen Sekunden bemerkbar macht,
siehe die Kernelzeiten bei der Ausgabe von dmesg.
Einschränken läßt sich das mit der Option MODULES=dep, oder extrem mit MODULES=list.
Beim letzten MUSST Du wissen, was Du tust.
Der Nachteil dabei ist eine Spezialisierung auf den jeweiligen Rechner,
und mühseliger, wenn zBsp das Mainboard durchbrennt.
Bei MODULES=most dagegen wird in den allerallermeisten Fällen das System nach dem Mainboardwechsel einfach laufen,
mehr noch, wenn zudem LABEL oder UUID statt device-Angaben für die Partitionen verwendet wurden.
Die blacklist wird nur verwendet, um bekanntermaßen problematische Module auszuschließen,
zBsp bei Verwendung alternativer Treiber.
Bemerkbare Bootzeitverkürzung wird durch Parallelisierung der später laufenden Startskripte erreicht.
Ich rate davon ab, bei meinen Versuchen mit initng habe ich die komplette Bootzeit um vielleicht 20s auf ~ 1min verkürzt.
Darin sind immer noch ~ 25 s für das BIOS - nicht verkürzbar, dann der Kernel bis zum root-Mount einige Sekunden, danach das eigentliche System.
Problem dabei sind geänderte/angepaßte Bootskripte -> schwierigere Fehlerbehebung.
Besser scheinen mir die Möglichkeiten von suspend-to-ram oder suspend-to-disk.
Schön wenn dabei die Hardware mitspielt, siehe die Threads zu sich verweigernden Grafikkarten, USB-Geräten und und und,
wofür es jedoch meist Walkarounds gibt.
Sonderfall initrd:
Beim Setzen von MODULES=most werden viele Treiber in die initrd kopiert, was sich beim Booten bis zum Mounten der root-Partition vielleicht in wenigen Sekunden bemerkbar macht,
siehe die Kernelzeiten bei der Ausgabe von dmesg.
Einschränken läßt sich das mit der Option MODULES=dep, oder extrem mit MODULES=list.
Beim letzten MUSST Du wissen, was Du tust.
Der Nachteil dabei ist eine Spezialisierung auf den jeweiligen Rechner,
und mühseliger, wenn zBsp das Mainboard durchbrennt.
Bei MODULES=most dagegen wird in den allerallermeisten Fällen das System nach dem Mainboardwechsel einfach laufen,
mehr noch, wenn zudem LABEL oder UUID statt device-Angaben für die Partitionen verwendet wurden.
Die blacklist wird nur verwendet, um bekanntermaßen problematische Module auszuschließen,
zBsp bei Verwendung alternativer Treiber.
Bemerkbare Bootzeitverkürzung wird durch Parallelisierung der später laufenden Startskripte erreicht.
Ich rate davon ab, bei meinen Versuchen mit initng habe ich die komplette Bootzeit um vielleicht 20s auf ~ 1min verkürzt.
Darin sind immer noch ~ 25 s für das BIOS - nicht verkürzbar, dann der Kernel bis zum root-Mount einige Sekunden, danach das eigentliche System.
Problem dabei sind geänderte/angepaßte Bootskripte -> schwierigere Fehlerbehebung.
Besser scheinen mir die Möglichkeiten von suspend-to-ram oder suspend-to-disk.
Schön wenn dabei die Hardware mitspielt, siehe die Threads zu sich verweigernden Grafikkarten, USB-Geräten und und und,
wofür es jedoch meist Walkarounds gibt.
mfg rendegast
-----------------------
Viel Eifer, viel Irrtum; weniger Eifer, weniger Irrtum; kein Eifer, kein Irrtum.
(Lin Yutang "Moment in Peking")
-----------------------
Viel Eifer, viel Irrtum; weniger Eifer, weniger Irrtum; kein Eifer, kein Irrtum.
(Lin Yutang "Moment in Peking")
Re: Bootzeit durch Modul Blacklist verkürzen?
hi,
Was hotplug angeht musst du für jedes Stück deiner Hardware entscheiden, ob sich udev nur dafür lohnt. Wenn du z.B. udev nur dafür brauchen würdest, die Firmware für die WLAN-Karte zu laden, kannst du stattdessen auch ein simples Hotplug-Script verwenden. Andererseits kann udev auch ohne initrd das Hotplugging übernehmen, bremst dann aber den Boot-Vorgang nicht aus.
Auf die Art (und mit ein wenig sysvinit-Optimierung) braucht mein Rechner vom Grub-Prompt bis zum Kommandozeilen-Login weniger als 2 Sekunden, und das mit einer 500MHz-CPU...
Das muss nicht sein, du kannst (fast) alle Module auch fest einkompilieren. Wenn du das konsequent durchziehst, brauchst du keine initrd und vor allem kein udev mehr. Das spart wesentlich mehr Boot-Zeit als nur einzelne Module gesondert zu behandeln. Das System ist in beiden Fällen nur noch für deine spezielle Hardware zu gebrauchen, also warum nicht gleich richtig zuschlagen.ozz hat geschrieben:Bein Kernelkompilieren (mit initrd) ist mir aufgefallen, daß ein Teil des Kernels sowieso als Modul nachgeladen wird.
Was hotplug angeht musst du für jedes Stück deiner Hardware entscheiden, ob sich udev nur dafür lohnt. Wenn du z.B. udev nur dafür brauchen würdest, die Firmware für die WLAN-Karte zu laden, kannst du stattdessen auch ein simples Hotplug-Script verwenden. Andererseits kann udev auch ohne initrd das Hotplugging übernehmen, bremst dann aber den Boot-Vorgang nicht aus.
Auf die Art (und mit ein wenig sysvinit-Optimierung) braucht mein Rechner vom Grub-Prompt bis zum Kommandozeilen-Login weniger als 2 Sekunden, und das mit einer 500MHz-CPU...
Beware of programmers who carry screwdrivers.
Re: Bootzeit durch Modul Blacklist verkürzen?
hallo,
danke erstmal für die schnellen Antworten.
@cosmac: prinzipiell gebe ich Dir recht. Ich werde das auch mal wieder angehen, wenn ich die Muße dazu finde. Dennoch sehe ich bei einem Desktop das Problem, daß man dann ja jedesmal ein Modul nachkompilieren muß, sobald irgendwer mit seiner usb-Kamera vorbeikommt, etc... Ich werde mich aber auf jeden Fall mal genauer mit udev auseinandersetzen.
@rendegast: Dein Post geht auf jeden Fall in die Richtung, wie ich das ausprobieren wollte. initng scheint wirklich noch Kinderkrankheiten zu haben, habe ich jetzt in mehreren Posts gelesen. Die Idee übertrifft aber natürlich die der linearen Abarbeitung, und ich denke mal, sobald das stabil läuft wird es sowieso "mitgeliefert". Wenn ich das richtig sehe müßte MODULES=dep auch laufen ohne ein ein neues initramfs zu erstellen. Werde dann einfach mal den dmesg Vergleich starten. Ich gehe mal davon aus, daß für den Fall MODULES=list es für die Systemwiederherstellung reichen sollte eine Sicherheitskopie von der initrd.img zu machen. Werde den Erfolg oder Mißerfolg posten.
Vielen Dank für die Hilfe.
danke erstmal für die schnellen Antworten.
@cosmac: prinzipiell gebe ich Dir recht. Ich werde das auch mal wieder angehen, wenn ich die Muße dazu finde. Dennoch sehe ich bei einem Desktop das Problem, daß man dann ja jedesmal ein Modul nachkompilieren muß, sobald irgendwer mit seiner usb-Kamera vorbeikommt, etc... Ich werde mich aber auf jeden Fall mal genauer mit udev auseinandersetzen.
@rendegast: Dein Post geht auf jeden Fall in die Richtung, wie ich das ausprobieren wollte. initng scheint wirklich noch Kinderkrankheiten zu haben, habe ich jetzt in mehreren Posts gelesen. Die Idee übertrifft aber natürlich die der linearen Abarbeitung, und ich denke mal, sobald das stabil läuft wird es sowieso "mitgeliefert". Wenn ich das richtig sehe müßte MODULES=dep auch laufen ohne ein ein neues initramfs zu erstellen. Werde dann einfach mal den dmesg Vergleich starten. Ich gehe mal davon aus, daß für den Fall MODULES=list es für die Systemwiederherstellung reichen sollte eine Sicherheitskopie von der initrd.img zu machen. Werde den Erfolg oder Mißerfolg posten.
Vielen Dank für die Hilfe.
-
- Beiträge: 19
- Registriert: 01.03.2009 21:32:34
Re: Bootzeit durch Modul Blacklist verkürzen?
Würde insserv statt initng benutzten, denke da ist die Gefahr kleiner, dass was
schief geht.
http://wiki.debian.org/BootProcessSpeedup
schief geht.
http://wiki.debian.org/BootProcessSpeedup
Re: Bootzeit durch Modul Blacklist verkürzen?
Kleiner Nachtrag. Die Option modules=dep bringt bei mir einen Zeitvorteil von etwa 8 bis 10 Sekunden. Werde die insserv Option auch mal ausprobieren. Danke für den Tipp.