Zurück Weiter Inhalt

2. Übersicht über die Bootprompt-Parameter

In diesem Abschnitt wird Software genannt, die zur Weiterleitung von Kernel-Bootparametern zum Kernel selbst verwendet werden kann. Es wird ebenfalls erklärt, wie die Parameter ausgeführt werden, welchen Beschränkungen sie unterliegen und wie sie zu jedem passenden Gerät, für das sie bestimmt sind, weitergeleitet werden.

Man sollte unbedingt beachten, daß innerhalb eines Bootparameters keine Leerstellen verwendet werden sollten, nur zwischen getrennten Parametern. Mehrere Werte für einen Parameter müssen durch ein Komma getrennt werden und zwar wiederum ohne Leerstellen. Siehe folgende Beispiele:

ether=9,0x300,0xd0000,0xd4000,eth0  root=/dev/hda1            *RICHTIG*
ether = 9, 0x300, 0xd0000, 0xd4000, eth0  root = /dev/hda1    *FALSCH*

2.1 LILO (LInux LOader)

LILO (LInux LOader), von Werner Almesberger, ist der am häufigsten verwendete. Er hat die Fähigkeit, verschiedene Kernel zu booten und speichert die Konfigurationsinformation als Klartext-Datei. Die meisten Distributionen werden mit LILO als Default-Boot-Loader ausgeliefert. LILO kann DOS, OS/2, Linux, FreeBSD, etc. ohne Schwierigkeiten booten und ist zudem äußerst flexibel.

Eine typische Konfiguration wird kurz nach dem Systemstart LILO stoppen und folgendes ausgeben: LILO:. Der Anwender hat dann einige Sekunden für einen beliebigen Eintrag Zeit. Erfolgt kein Eintrag wird das Default-System gebootet. Typische Systemnamen, die in den LILO-Konfigurationsdateien verwendet werden, sind linux und backup und msdos. Falls ein Bootparameter eingegeben werden soll, wird man dies an dieser Stelle tun, nachdem man den Systemnamen, von dem LILO booten soll, eingegeben hat. Folgendes Beispiel soll dies verdeutlichen:

LILO: linux root=/dev/hda1

LILO ist hervorragend dokumentiert und für die hier diskutierten Bootparameter ist das LILO-Kommando append= von großer Bedeutung, wenn man zur LILO config-Datei einen ständigen Bootparameter hinzufügen will. Man muß einfach nur etwas wie

append = "foo=bar"
an die /etc/lilo.conf-Datei anhängen. Dies kann entweder an die höchste Ebene der config-Datei eingefügt werden und somit für alle Sektoren gelten, oder es soll nur für einen einzigen Systemabschnitt gelten, dann wird es innerhalb eines image=-Sektors eingefügt. Eine ausführliche Beschreibung erhält man in der LILO-Dokumentation.

2.2 LoadLin

Ein anderer weitverbreiteter Linux-Loader ist `LoadLin'. Dieser ist ein DOS-Programm, das die Fähigkeit besitzt, einen Linux-Kernel vom DOS-Prompt aus zu starten (mit Bootparametern), vorausgesetzt, bestimmte Ressourcen stehen zur Verfügung. Dies ist ein Vorteil für alle, die Linux von DOS aus starten wollen.

Es ist ebenfalls sehr nützlich, wenn man bestimmte Hardware besitzt, welche den zur Verfügung stehenden DOS-Treiber benötigt, um die Hardware in einen bekannten Zustand zu bringen. Ein gutes Beispiel sind die Soundblaster kompatiblen Soundkarten, welche den DOS-Treiber benötigen, um ein paar geheimnisvolle Register ziehen zu können, um die Karte in einen SB-kompatiblen Modus zu bringen. Das Booten von DOS mit dem zur Verfügung stehenden Treiber und das anschließende Laden von Linux mit Loadlin vom DOS-Prompt aus verhindert das Zurückschalten der Karte in den vorherigen Zustand, was beim erneuten Booten der Fall wäre. So jedoch bleibt die Karte in einem SB-kompatiblen Modus und ist somit unter Linux verwendbar.

Es gibt auch noch andere Programme, die zum Booten von Linux verwendet werden können. Auf dem lokalen Linux-FTP-Server erhält man unter system/Linux-boot/ die komplette Liste aller verfügbaren Programme.

2.3 Das Hilfsprogramm ``rdev''

Es gibt einige Kernel-Bootparameter, deren Standardwerte in mehreren Bytes im Kernel-Image selbst gespeichert werden. Es gibt ein Hilfsprogramm namens rdev, das auf den meisten Systemen installiert ist und das weiß, wo sich diese Werte befinden und wie sie geändert werden können. Dieses Hilfsprogramm kann auch Dinge ändern, die kein Kernel-Bootparameter-Äquivalent besitzen, wie z.B. der standardmäßig verwendete Grafik-Modus.

Das Hilfsprogramm rdev wird gewöhnlich auch swapdev, ramsize, vidmode und rootflags genannt. Diese Namen zeigen die 5 Änderungsmöglichkeiten durch rdev an: das Root-Device, das Swap-Device, die RAM-Disk-Parameter, der Standard-Grafik-Modus sowie die readonly/readwrite-Einstellung vom Root-Device.

Weitere Informationen über rdev erhält man nach Eingabe von rdev -h oder durch die Lektüre der bereitgestellten Manpage (man rdev).

2.4 Sortierung der Parameter durch den Kernel

Die meisten Bootparameter sind folgendermaßen strukturiert:

name[=value_1][,value_2]...[,value_11]

name ist hierbei ein einzigartiges Schlüsselwort, das Aufschluß darüber gibt, für welchen Teil des Kernels die entsprechenden Werte (falls überhaupt) bestimmt sind. Mehrere Bootparameter werden als Liste nach obigem Format ausgegeben, wobei die einzelnen Parameter durch Leerzeichen getrennt sind. Man beachte das tatsächliche Limit von 11. Der bestehende Code kann nur 11 durch Kommas getrennte Parameter pro Schlüsselwort verarbeiten. In ungewöhnlich komplizierten Fällen kann man jedoch dasselbe Schlüsselwort mit 11 zusätzlichen Parametern erneut benutzen, vorausgesetzt, die Setup-Funktion unterstützt dies. Man beachte auch, daß der Kernel die Liste in maximal 10 Ganzzahlen- Parameter und eine anschließende Zeichenfolge unterteilt. Das heißt, man kann nicht wirklich 11 Ganzzahlen bereitstellen, höchstens durch Konvertierung des 11ten Parameters von einer Zeichenkette in eine Ganzzahl im Treiber selbst.

Die Sortierung findet hauptsächlich in linux/init/main.c statt. Zuerst überprüft der Kernel, ob der Parameter zu einem der besonderen gehört, wie root=, ro, rw, oder debug. Die Bedeutung dieser `special arguments' wird im weiteren Verlauf dieser Dokumentation beschrieben.

Der Kernel geht dann durch eine Liste von Setup-Funktionen (zu finden im bootsetups-Array), um zu sehen, ob die entsprechende Zeichenkette (wie z.B. foo) mit einer Setup-Funktion (foo_setup()) für ein bestimmtes Gerät oder einen Teil des Kernels verbunden ist. Würde man dem Kernel die Zeile foo=3,4,5,6,bar übergeben, dann würde dieser den bootsetups-Array durchgehen, um herauszufinden, ob `foo' registriert ist. Falls ja, würde er die Setup-Funktion, die mit `foo' (foo_setup()) verbunden ist, aufrufen und dieser die Ganzzahlen-Parameter 3, 4, 5 und 6 übergeben, wie auf der Kernel- Kommandozeile angegeben. Darüberhinaus würde er ebenfalls die Zeichenkette bar übergeben.

2.5 Umgebungsvariablen bestimmen.

Alles, was aussieht wie foo=bar und nicht als Setup-Funktion akzeptiert wird, wie oben beschrieben, wird dann als festzusetzende Umgebungsvariable interpretiert. Ein (sinnloses?) Beispiel wäre die Verwendung von TERM=vt100 als Bootparameter.

2.6 Weitergabe von Parametern zum `init'-Programm

Alle verbleibenden Parameter, die nicht vom Kernel aufgegriffen und nicht als Umgebungsvariablen interpretiert wurden, werden dann zum ersten Prozeß weitergeleitet. Dieser ist normalerweise das init-Programm. Der am häufigsten zum init-Prozeß weitergeleitete Parameter ist das Wort single, welches init anweist, den Rechner im Ein-Benutzer-Modus zu booten und die üblichen Dämonen nicht zu starten. Um herauszufinden, welche Parameter von der auf Ihrem System installierten Version von init akzeptiert werden, lesen Sie bitte die entsprechende Manpage.


Zurück Weiter Inhalt