Hardware scan on boot ausschalten

Welches Modul/Treiber für welche Hardware, Kernel compilieren...
Antworten
Maverick83
Beiträge: 20
Registriert: 03.12.2007 15:31:57

Hardware scan on boot ausschalten

Beitrag von Maverick83 » 13.12.2007 15:46:44

Hallo Zusammen

Ich bitte um Verschiebung wenn das hier der falsche Thread ist.
Wie kann ich den Hardwarescan beim booten ausschalten?
An meinem System wird sich in der nächsten Zeit nichts mehr ändern und ich möchte den Bootvorgang so weit wie möglich beschleunigen.

Danke für Eure Ideen

Michi

storm
Beiträge: 1581
Registriert: 01.05.2004 13:21:26
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: DE

Re: Hardware scan on boot ausschalten

Beitrag von storm » 13.12.2007 18:11:39

Maverick83 hat geschrieben: Ich bitte um Verschiebung wenn das hier der falsche Thread ist.
Du meinst die falsche Kategorie! Ist sie aber nicht - sagen wir mal, das Thema berührt einige Kategorien.
Wie kann ich den Hardwarescan beim booten ausschalten?
An meinem System wird sich in der nächsten Zeit nichts mehr ändern und ich möchte den Bootvorgang so weit wie möglich beschleunigen.
Was meinst du denn mit Scan? Grob gesagt, gibt es zwei größere Teilbereiche beim booten: vor init - nach init.
Vor dem laden von init wird der Kernel geladen, die Hardware erfasst und eingebunden (So weit wie möglich). Da gibt es nicht viel Spielraum zum Beschleunigen. Wenn du einem distri-Kernel fährst, wäre der erste Schritt das Erstellen eines eigenen Kernels. (Es wurde auch schon von den kernel-devs diskutiert, ob und wie man vielleicht mal parallel Subsysteme laden kann, aber das dauert wohl noch etwas).
Nach dem Starten von init kommt dann der Teil, der mehr Potential zur Optimierung hat. Einerseits durch Parallelisierung des Startens von DIensten (zB upstart) oder das Entfernen von DIensten, die du eh nicht benötigst. Auch kannst du dir mal alternative init-System (runit, initng, ...) anschauen, da gab es hier auch schon ein paar Threads zu.

ciao, storm
drivers/ata/libata-core.c: /* devices which puke on READ_NATIVE_MAX */

Maverick83
Beiträge: 20
Registriert: 03.12.2007 15:31:57

Beitrag von Maverick83 » 13.12.2007 21:26:23

Hallo storm
Vor dem laden von init wird der Kernel geladen, die Hardware erfasst und eingebunden
Genau das (die Hardware erfasst) habe ich gemeint. Das System muss ja nicht jedesmal die gnaze Hardware erfassen, es ändert sich ja nie etwas daran.

Muss man das beim erstellen des Kernels einstellen oder kann man das auch nachträglich machen?

Die Scripte habe ich bereits ausgemistet.

storm
Beiträge: 1581
Registriert: 01.05.2004 13:21:26
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: DE

Beitrag von storm » 13.12.2007 22:35:43

Maverick83 hat geschrieben:Genau das (die Hardware erfasst) habe ich gemeint. Das System muss ja nicht jedesmal die gnaze Hardware erfassen, es ändert sich ja nie etwas daran.
Ich geh mal davon aus, du meinst die bei dir vorhandene Hardware, richtig? Das ist leider nicht ganz so einfach. Nur weil du als User nichts dran änderst, heißt das ja nicht, dass sich nicht doch etwas ändern kann. Der kernel kann auch nicht einfach annehmen, dass sich ein Gerät/eine Schnittstelle noch da befindet, wo sie beim letzten Mal war. Und du willst ja sicher auch funktionierende Hardware, also sollte schon geprüft werden, ob ein Gerät richtig initialisiert wurde.
Außerdem beansprucht das eigentliche Scannen/Erkennen von Geräten nicht wirklich so viel Zeit (zB im Vergleich mit dem Laden von Treibern etc.). Und vor allem: was sind ein paar Sekunden weniger, wenn der Rechner ein paar Stunden oder noch mehr läuft?
Was du möchtest, läuft eher auf suspend to ram raus. Vielleicht bringt auch eine solid state disk oder hybrid-Platte an der Stelle etwas, aber die kosten atm noch ganz ordentlich.
Muss man das beim erstellen des Kernels einstellen oder kann man das auch nachträglich machen?
Nachträglich [eher] nicht. Das ist beim Kernel-Konfigurieren zu machen. Deswegen oben auch der Hinweis, dass der erste Schritt das Erstellen eines eigenen Kernels wäre.

ciao, storm
drivers/ata/libata-core.c: /* devices which puke on READ_NATIVE_MAX */

Maverick83
Beiträge: 20
Registriert: 03.12.2007 15:31:57

Beitrag von Maverick83 » 14.12.2007 08:21:13

Okey gut, das klingt alles logisch.

Macht es zeitlich einen Unterschied, wenn ich die Treiber statisch zum Kernel linke und nicht als Modul?
Die Treiber müssen ja so oder so geladen werden, egal ob als Modul oder im Kernel, mach ich da einen Denkfehler?

cosmac
Beiträge: 4576
Registriert: 28.03.2005 22:24:30

Beitrag von cosmac » 14.12.2007 12:34:43

hi,

die einzelnen Bytes eines Treibers müssen natürlich so oder so
geladen werden. Fest eingebaute werden aber alle mit einem
einzigen Plattenzugriff zusammen mit dem Kernel geladen, das
kostet maximal ein paar Tausendstel Sekunden mehr.

Ein Modul per /etc/modules zu laden ist etwas aufwendiger:
- / öffnen, etc suchen
- etc/ öffnen, modules suchen
- modules lesen
- / öffnen, lib suchen
- usw., jedes Unterverzeichnis bis zum modul.ko
- modul laden
und jedes Verzeichnis und jede Datei kostet einen Plattenzugriff.
Module verlängern das Booten also messbar - ob man den
Unterschied allerdings merkt...

Wenn du einen eigenen Kernel baust, schalt mal die Option
PRINTK_TIME ein (Kernel hacking -> Show timing information on
printks). Dann siehst du genau, was Kernel-seitig Zeit kostet.

Eine ganz andere Bremse ist der Framebuffer. Damit muss der
Text der Boot-Meldungen Pixel für Pixel per Software erzeugt und
gescrollt werden, meistens auch noch viel mehr als 25 Zeilen.
Ohne Framebuffer macht das die VGA-Hardware. Alternativ kann
man mit dem Boot-Parameter 'quiet' die Meldungen abschalten.
Beware of programmers who carry screwdrivers.

Antworten