2008-06-22, Rev. 1.6Gentoo Linux Genkernel Leitfaden
Dieser Leitfaden versucht eine Referenz für alle Funktionen, die von
genkernel unterstützt werden, zu liefern.
Gentoo Linux Genkernel Leitfaden
1.
Einleitung
1.1 Grundprinzip
Genkernel ist ein Hilfsprogramm, welches Benutzern, die sich nicht mit der
Kompilierung eines Kernels auskennen, hilft, indem es diesen Prozess
automatisiert. Es kann Ihnen helfen einen Kernel zu erstellen, der ähnlich
denen auf der Gentoo Installations-CD ist, welche dafür vorgesehen sind, die
Hardware-Konfiguration Ihres Systems automatisch zu erkennen. Einige Benutzer
könnten auch daran interessiert sein, genkernel für Hardware, welche
Initalisierung und einen funktionierenden Kernel benötigt, bevor das System
hochfährt, zu benutzen. Da genkernel automatisch Ihre Kernelmodule kompiliert,
können Sie Hardware benutzen, welche bestimmte Modulparameter benötigt, um
ordnungsgemäß zu funktionieren.
1.2 Zielgruppe
Wenn Sie sich nicht mit der Kompilierung eines Kernels auskennen oder einfach
Ihre Hardware-Konfiguration nicht kennen, ist genkernel ein sehr nützliches
Werkzeug. Es wurde hergestellt, um Ihnen die Qual der Kernelkompilierung
abzunehmen, und unterstützt standardmäßig die meiste Hardware.
Wenn Sie jedoch wissen, welche Treiber Ihr System benötigt, können Sie weiterhin
die Zeit, die für die Kernelkompilation benötigt wird, reduzieren. Dies ist
möglich, da Sie genkernel anweisen können, nur Treiber, die für Ihre Hardware
relevant sind, zu erstellen. In den meisten Fällen ist die Anzahl der
erforderlichen Treiber kleiner (ebenso die Zeit zur Kompilation des Kernels)
als die, die die standardmäßige Konfiguration anbietet.
1.3 Genkernel installieren
Um genkernel zu erhalten, führen Sie emerge genkernel auf einer
Kommandozeile aus. Falls Sie die Gentoo
Reference Platform (GRP) benutzen, vergessen Sie nicht binäre Pakete
durch Übergabe des -k Parameters an emerge zu installieren. Da die
GRP eine ältere Version von genkernel besitzt, können die Flags unterschiedlich
sein. Konsultieren Sie genkernel --help in diesem Falle, um Hilfe zu
erhalten, wie die Version von genkernel auf Ihrem System zu benutzen ist.
2.
Mit genkernel arbeiten
2.1 Wie genkernel zu benutzen ist
Obwohl es mehrere Wege gibt, genkernel auszuführen, wird die einfachste Methode
durch genkernel all. Hier wird eine generelle Konfiguration, welche für
für die meisten Systeme gut funktioniert, verwendet. Wie bereits erwähnt ist
diese Methode nicht ohne Nachteile; die meisten Module, die erstellt werden,
sind für den durchschnittlichen Benutzer nutzlos und erhöhen die Kompilierzeit.
Es folgt ein effizienterer Ansatz, der durch das Überreichen bestimmter Flags
and genkernel als root zu erhalten ist:
Befehlsauflistung
1.1: Ausführen von genkernel (mit Flags)
# genkernel --splash --no-install --no-clean --menuconfig all
Der obige Befehl bewirkt, dass genkernel einen Kernel mit aktiviertem
Framebuffersplash (--splash), der manuell installiert werden muss
(--no-install), erzeugt. Während der Kernel-Quellbaum vorbereitet wird,
wird genkernel es unterlassen, jegliche bereits bestehende Objektdateien im
Quellbaum zu entfernen (--no-clean). Ein menü-betriebenes
Konfigurationswerkzeug wird dargestellt, welches dem Benutzer ermöglicht, die
Module auszuwählen, welche für das System gebaut werden sollen
(--menuconfig).
Es gibt noch andere Flags, welche das Verhalten von genkernel beeinflussen.
Zum Beispiel bewirkt das Ersetzen von --no-install durch --install
eine automatische Installation des Kernels im /boot Verzeichnis.
Durch Benutzen des --mountboot Flags wird es genkernel erlaubt, die
/boot Partition automatisch zu mounten, falls dies erforderlich
ist.
Nicht vergessen, genkernel wurde erstellt, um die Kernelkompilation leicht und
stressfrei zu machen. Aus diesem Grund bietet genkernel einige Flags an, welche
diesen Vorgang erleichtern. Zum Beispiel gibt es Flags, welche bei der
Kernelkonfiguration helfen, während andere die eigentliche Kompilation
beeinflussen. Einige Flags helfen sogar den Kompilationsprozess zu debuggen.
Für diejenigen, die an weiterer Optimierung interessiert sind, gibt es Flags,
welche das Zusammenbauen, Verpacken und sogar die Kernel-Initialisierung
betreffen.
Der Rest dieses Kapitels untersucht die Funktionalität verschiedener Flags und
vorhandener Aktionen für genkernel. Einige der Flags haben Varianten, welche
die gegenteilige Operation durchführen. Diese tragen das Prefix
no- und deren Effekte stehen in eckigen Klammern, [].
2.2 Konfigurationsflags
Die folgenden Konfigurationsflags helfen Ihnen vor der Kompilation zu
entscheiden, welche Funktionen im Kernel aktiviert oder deaktiviert werden
sollen. Sie können sogar entscheiden, ob die Konfigurationsdatei, die während
dieses Prozesses erstellt wird, gespeichert werden soll oder nicht. Dies sind
die primären Konfigurationsflags:
-
--no-menuconfig: Aktiviert [oder deaktiviert] den
Befehl make menuconfig (welcher ein interaktives, menübasiertes
Kernelkonfigurationswerkzeug aufruft) bevor der Kernel gebaut wird.
-
--gconfig: Stellt ein Kernelkonfigurationswerkzeug bereit, welches
von den GTK+ Bibliotheken abhängt. Der Vorteil dieser Option ist der, dass
die meisten Benutzer es einfacher und klarer finden, den Kernel mit diesem
Werkzeug zu konfigurieren, da es auf dem X-windowing-System beruht. Der
Nachteil dieser Option ist der, dass Sie das X-windowing-System
benötigen, um sie zu benutzen. Sie wird nicht auf der Kommandozeile
funktionieren.
-
--xconfig: Stellt ein Kernelkonfigurationswerkzeug bereit, welches
von den QT-Bibliotheken abhängt. Der Vorteil dieser Option ist der, dass
die meisten Benutzer es einfacher und klarer finden, den Kernel mit diesem
Werkzeug zu konfigurieren, da es auf dem X-windowing-System beruht. Der
Nachteil dieser Option ist der, dass Sie das X-windowing-System
benötigen, um sie zu benutzen. Sie wird nicht auf der Kommandozeile
funktionieren.
-
--no-save-config: Speichert die Kernelkonfiguration
[nicht] in eine Datei im Verzeichnis /etc/kernels/ für
späteren Gebrauch.
2.3 Kompilationsflags
Die folgenden Flags beeinflussen die eigentliche Kompilation:
-
--kerneldir=/pfad/zu/quellen/: Gibt einen alternativen
Pfad zu den Kernelquellen an. Dieser ist standardmäßig
/usr/src/linux/.
-
--kernel-config=/pfad/zu/konfigurationsdatei: Gibt
eine alternative Konfigurationsdatei an. Diese ist standardmäßig
/pfad/zu/quellen/.config.
-
--module-prefix=/pfad/zu/verzeichnis-preifx/: Gibt ein
Prefix zu dem Verzeichnis an, in dem die Kernelmodule installiert werden.
Dieser ist standardmäßig /lib/modules/.
-
--no-clean: Aktiviert [oder deaktivert] den Befehl
make clean bevor der Kernel kompiliert wird. Der make clean
Befehl entfernt alle Objektdateien und Abhängigkeiten vom Kernel-Quellbaum.
-
--no-mrproper: Aktiviert [oder deaktiviert] den Befehl
make mrproper bevor der Kernel kompiliert wird. make mrproper
entfernt, wie make clean, alle Objektdateien und Abhängigkeiten vom
Kernel-Quellbaum. Jedoch werden auch alle bereits bestehenden
Konfigurationsdateien (in /pfad/zu/quellen/.config oder
/pfad/zu/quellen/.config.old) vom Kernel-Quellbaum entfernt.
-
--oldconfig: Führt den Befehl make oldconfig aus, welcher
versucht, Konfigurationsinformationen für die Systemarchitektur von einem
generischen Skript in /usr/share/genkernel/ zu sammeln. Dies
ist ein nicht-interaktives Skript; es werden keine Benutzereingaben
erwartet. Wenn --oldconfig in Verbindung mit --clean benutzt
wird, wird das letztere Flag negiert. Dies resultiert in der Aktivierung
des --no-clean Flags.
-
--callback="echo hello": Ruft die angegebenen Argumente
(in diesem Fall echo hello) auf, nachdem der Kernel und die
relevanten Module gebaut worden sind, aber bevor das initrd-Abbild erstellt
wird. Dies kann nützlich sein, wenn Sie ein externes Modul in das
initrd-Abbild einfügen wollen, indem Sie die relevanten Objekte mit Hilfe
der Callback-Funktion emergen und dann eine Modulgruppe genkernel neu
definieren.
-
--no-install: Aktiviert [oder deaktiviert] den Befehl
make install, welcher Ihren neuen Kernel, die Konfigurationsdatei,
das initrd-Abbild und die Systemmap auf Ihre gemountete Boot-Partition
installieren wird. Jegliche kompilierte Module werden ebenfalls installiert.
-
--no-initrdmodules: Unterlässt es jegliche Module in das
von genkernel erstellte initrd-Abbild zu kopieren. Dieses Flag ist eine
Aussnahme bezüglich des no- Präfixes; das Weglassen dieses Präfixes
erstellt ein ungültiges genkernel-Flag.
-
--genzimage: Erstellt das initrd-Abbild vor dem Kernel-Abbild.
(Dieser Hack gilt momentan nur für PPC Pegasos Systeme.)
2.4 Compiler-Flags
Die folgenden Flags werden von genkernel unterstützt und werden während der
Kernel gebaut wird an die passenden Applikationen übergeben. Diese Flags
betreffen den Compiler, der für den Kernelkompilationsprozess genutzt
wird, wenn auch auf einer viel tieferen Ebene.
-
--kernel-cc=someCompiler: Dies spezifiziert den Compiler,
welcher während des Kernelkompilationsprozesses tätig ist.
-
--kernel-ld=someLinker: Dies spezifiziert den Linker, welcher
während des Kernelkompilationsprozesses tätig ist.
-
--kernel-as=someAssembler: Dies spezifiziert den Assembler,
welcher während des Kernelkompilationsprozesses tätig ist.
-
--kernel-make=someMake: Dies spezifiziert eine Alternative
zum Werkzeug GNU make, welche während des Kernelkompilationsprozesses
tätig ist.
-
--utils-cc=someCompiler: Dies spezifiziert den Compiler,
welcher während des Kernelkompilationsprozesses tätig ist.
-
--utils-ld=someLinker: Dies spezifiziert den Linker, welcher
während des Kernelkompilationsprozesses tätig ist.
-
--utils-as=someAssembler: Dies spezifiziert den Assembler,
welcher während des Kernelkompilationsprozesses tätig ist.
-
--utils-make=someMake: Dies spezifiziert eine Alternative
zum Werkzeug GNU make, welche während des Kernelkompilationsprozesses
tätig ist.
-
--makeopts=-jX: Gibt die Anzahl gleichzeitiger Prozesse an,
die das Werkzeug make implementieren kann, während der Kernel (und andere
Dinge) kompiliert werden. Die Variable 'X ist eine Zahl, die man
durch Addition von 1 zur Anzahl der vom System verwendeten CPUs erhält.
Für ein System mit einer CPU ist das entsprechende Flag -j2; ein
System mit zwei CPUs verwendet -j3 und so weiter. (Ein System mit
einem Prozessor, welcher die Hyper-Threading™ (HT) Technologie
unterstützt, kann das Flag -j3 verwenden, sofern Unterstützung
für Symmetric Multi-Processing (SMP) im Kernel aktiviert ist.)
2.5 Flags zur Fehlersuche
Die Benutzung von Flags zur Fehlersuche während des Kernelkompilationsprozesses
kontrolliert die Menge der Informationen, die ausgegeben werden, als auch die
Präsentation dieser Daten.
-
--debuglevel=verblevel: Kontrolliert die Intensität der
Informationen, die vom Kernel geliefert werden. Die Variable
verblevel ist eine Zahl zwischen 0 und 5. Eine '0' bedeutet minimale
Ausgabe, während '5' so viel Informationen über genkernels Aktivitäten
wie möglich anbietet.
-
--debugfile=/pfad/zu/ausgabedatei: Ignoriert den Wert,
der durch das Argument --debuglevel gesetzt wurde, und schickt
alle von genkernel produzierten Daten zur Fehlersuche an die
angegebene Ausgabedatei, welche standardmäßig unter
/var/log/genkernel.log zu finden ist.
-
--no-color: Aktiviert [oder deaktiviert] die gefärbte Ausgabe
der Informationen, indem es Escapesequenzen verwendet.
2.6 Initialisierungsflags
Die folgenden Flags werden benutzt, um bestimmte Effekte während des Hochfahrens
des Systems zu erreichen. Einige dieser Flags sind vor allem für kunstvolle
Leute, während andere erforderlich sind, um bestimmte Funktionen auf dem System
zu aktivieren.
-
--no-splash: Aktiviert [oder deaktiviert] Framebuffer-Splash Unterstützung im initrd-Abbild, welches genkernel erstellt. Um das
standardmäßige Theme, welches fbsplash benutzt, zu überschreiben, benutzen
Sie --splash=BevorzugtesTheme (wobei BevorzugtesTheme
der Titel eines Verzeichnisses im Verzeichnis /etc/splash/
ist).
-
--splash-res=BevorzugteAuflösung: Dieses Flag erlaubt Ihnen
auszuwählen, welche Auflösungen des Splash-Screens in der initrd während
des Hochfahrens des Systems unterstützt werden. Dies ist aus zwei Gründen
nützlich: Zum einen können Sie nur die Auflösung(en), die für Ihr System
relevant sind, auswählen. Zum anderen vermeiden Sie eine unnötige Erhöhung
des Festplattenplatzes, der von der initrd benötigt wird (da die initrd
die Auflösungen, die für Ihr System nicht relevant sind, nicht unterstützen
muss). Jedoch kann es sein, dass Sie dieses Flag weglassen wollen, falls der
Kernel für eine Installations-CD kompiliert wird; dies erlaubt
Splash-Unterstützung für alle möglichen Auflösungen.
-
--do-keymap-auto: Erzwingen der Auswahl der Keymap während der
Boot-Sequenz.
-
--lvm2: Fügt Unterstützung für Logical Volume Management
(LVM2) aus statischen Binärdateien hinzu, falls dies für das System
verfügbar ist. Relevante (statische) LVM2-Binärdateien werden kompiliert,
wenn Sie nicht verfügbar sind. Stellen Sie sicher, dass Sie das Paket lvm2
mit emerge lvm2 installieren, bevor Sie dieses Flag aktivieren.
Schauen Sie sich außerdem noch einmal die Gentoo LVM2 Installation an.
-
--evms2: Fügt Unterstützung für Enterprise Volume Management System
(EVMS2) hinzu, falls dies für das System verfügbar ist. Stellen Sie
sicher, dass Sie das Paket evms2 mit USE=static emerge evms2
installieren, bevor Sie dieses (genkernel-)Flag aktivieren. (Das
Weglassen des USE=static Flags während der Installation des
Paketes wird fehlschlagen die benötigten statischen Binärdateien
einzubinden.)
-
--dmraid: Fügt Unterstützung für DMRAID hinzu;
das Werkzeug, welches RAID-Mapping durch Benutzung des device-mapper
Subsystems des Kernel erstellt. DMRAID entdeckt, aktiviert, deaktiviert und
stellt Eigenschaften von Software-RAID-Sets (z.B. ATARAID) und enthaltenen
DOS-Partitionen dar.
-
--luks: Fügt Unterstützung für Linux Unified Key Setup, oder kurz
LUKS, hinzu. Dies ermöglicht Ihnen, ein durch LUKS verschlüsseltes Gerät zu
benutzen, welches das Root-Dateisystem enthält. Am Bootloader setzen Sie
dann das verschlüsselte Gerät als Wert von crypt_root (und real_root soll
das unverschlüsselte Gerät sein, welches LUKS erstellt).
-
--linuxrc=/pfad/zu/Ihrer/linuxrc: Gibt eine vom Benutzer erstellte
linuxrc an — ein Skript, welches während des Hochfahrens des
Kernels und vor dem eigentlichen Boot-Prozess initialisiert wird. (Ein
standardmäßiges Skript linuxrc sollte im Verzeichnis
/usr/share/genkernel/ zu finden sein.) Dieses Skript erlaubt
Ihnen, einen kleinen, modularisierten Kernel zu booten und die Treiber, die
vom System (als Module) benötigt werden, zu laden.
-
--cachedir=/pfad/zu/alt/verzeichnis/: Überschreibt den
standardmäßigen Ort des Caches, der während des Kompilierens des Kernels
genutzt wird.
-
--tempdir=/pfad/zu/neuem/tempverzeichnis/: Gibt den Ort des
temporären Verzeichnisses an, das von genkernel während des Kompilierens
des Kernels genutzt wird.
-
--unionfs: Fügt Unterstützung für das Unification File
System zum initrd-Abbild hinzu.
2.7 Verschiedene Flags
Die folgenden Flags werden von genkernel unterstützt, passen allerdings in
keine der anderen Kategorien:
-
--mountboot: Erkennt, ob das Verzeichnis /boot auf
einer separaten Partition gemountet werden muss. Es durchsucht das Skript
/etc/fstab nach Anweisungen, wie die Boot-Partition in ein
Dateisystem (falls nötig) gemountet wird.
-
--kernname=NickName: Erlaubt Ihnen, den Namen des Kernel-
und initrd-Abbilds in /boot/ zu modifizieren, so dass die
erstellten Abbilder kernel-NickName-version und
initramfs-NickName-version heißen.
2.8 Mögliche Aktionen
Eine Aktion weist genkernel an, was es bauen soll. Zurzeit werden die folgenden
Aktionen unterstützt:
-
initrd: Nur das initrd-Abbild erzeugen
-
bzImage: Nur das Kernel-Abbild erzeugen
-
kernel: Nur das Kernel-Abbild und die Module erzeugen
-
all: Erzeugt alles — das initrd-Abbild, das Kernel-Abbild und
die Module.
Die letzte aktion, all, wird für die meisten Benutzer empfohlen, da sie
alles, was für einen funktionieren Kernel benötigt wird, erstellt. Denken Sie
dran, eine Aktion sagt genkernel nur, was es zu erstellen hat,
nicht was es installieren soll.
2.9 Bootloader Konfiguration
Drei oder vier Veränderungen an Ihrer Bootloaderkonfigurationen sollten
angewandt werden, damit genkernel mit Ihrem Bootloader funktioniert.
-
Fügen Sie root=/dev/ram0 und init=/linuxrc zu den
Kernelparametern, die an das Kernelabbild übergegeben werden, hinzu.
-
Fügen Sie zum Beispiel real_root=/dev/hda3 zu den Kernelparametern,
welche an das Kernelimage übergeben werden, hinzu, wenn
/dev/hda3 Ihre Root Partition enthält.
-
Wenn Sie splash verwenden, fügen Sie eine passende Moduszeile wie
vga=0x317 zu den Kernelparametern, die an das Kernelimage übergeben
werden, hinzu. Außerdem noch splash=verbose oder
splash=silent, abhängig von der Detailreiche, die Sie von Ihrem
Bootloader benötigen.
-
Fügen Sie die Informationen zum initrd-Abbild hinzu, so wie Ihr Bootloader
sie benötigt. Betrachten Sie das Kapitel über die Bootloader
Konfiguration des Gentoo-Handbuchs für Detail, wie Sie Ihren
Bootloader über die initrd in Kenntnis setzen.
3.
Konfigurationsoptionen
3.1 Bearbeiten von /etc/genkernel.conf
Das Überreichen von Flags an genkernel über die Kommandozeile kann mühsam sein,
vor allem wenn Sie ein Dutzend Flags haben:
Befehlsauflistung
1.1: Ausführen von genkernel (überladen mit Flags)
# genkernel --debuglevel=5 --no-color --no-mrproper --clean --splash \
--kerneldir=/path/to/alternate/kernel/sources --install --menuconfig \
--kernel-config=/path/to/preferred/configfile --save-config --mountboot all
Zum Glück gibt es eine Konfigurationsdatei, in welcher die meisten grundlegenden
Optionen gegebenenfalls gesetzt (oder geändert) werden können. Es folgt eine
Auflistung der bedeutendsten Optionen:
-
MENUCONFIG=[yes|no]: Diese Option entspricht dem von genkernel
genutzten Flag --menuconfig, welches den Befehl make
menuconfig anwendet, um ein kommandozeilenbasierendes
Konfigurationswerkzeug aufzurufen. Um dieses Werkzeug automatisch während
der Kernelkonfiguration über dieses Skript aufzurufen, setzen Sie diese
Option auf 'yes', ansonsten wählen Sie 'nein'.
-
CLEAN=[yes|no]: Diese Option auf 'yes' zu setzen ist
gleichwertig zur Benutzung des Flags --clean und ruft den Befehl
make clean auf, um Objektdateien und Abhängigkeiten aus dem
Kernelquellbaum zu entfernen. Diese Option auf 'no' zu setzen, bewirkt das
Gegenteil — es entspricht dem Flag --no-clean, welches den
Befehl make clean deaktiviert und das Flag --no-mrproper
impliziert — also den Befehl make mrproper aufhebt.
-
MRPROPER=[yes|no]: Diese Option auf 'yes' zu setzen ist
gleichwertig zur Benutzung des Flags --mrproper und ruft den Befehl
make mrproper auf, welcher den Kernelquellbaum von jeglichen
Konfigurationsdateien befreit. 'no' zu wählen bewirkt das gleiche wie
wie Benutzung von genkernels Flag --no-mrproper, welches den
Befehl make mrproper deaktiviert.
-
MOUNTBOOT=[yes|no]: Diese Option auf 'yes' zu setzen ist
gleichwertig zum Flag --mountboot und mountet (falls nötig) das
Verzeichnis /boot/ zur Kompilierzeit automatisch. Falls
das Verzeichnis /boot/ auf einer separaten Partition liegt,
ziehen Sie es in Erwägung, diese Option zu aktivieren; so müssen Sie sich
später einen (notwendigen) Schritt weniger merken.
-
SAVE_CONFIG=[yes|no]: Nachdem der Kernel konfiguriert worden
ist, werden die ausgewählten Optionen als .config im
Kernelquellbaum gespeichert. Dieses Skript kann während der nächsten
Kernelkompilation überschrieben oder sogar aus dem Kernelquellbaum gelöscht
werden. Hier 'yes' auszuwählen ist gleichwertig zur Benutzung des
Flags --save-config und speichert alle während der
Kernelkonfiguration gewählten Optionen als Skript in das Verzeichnis
/etc/kernels/. 'no' behält den status quo bei.
-
USECOLOR=[yes|no]: Diese Option auf 'yes' zu setzen ist
gleichwertig zum Flag --color, welches die Ausgabe von genkernel
färbt, um die Fehlersuche (falls erforderlich) zu erleichtern.
-
DEBUGLEVEL=[0|1|2|3|4|5]: Durch diese Option lässt sich die
Detailreiche der von genkernel erstellten Ausgabe regeln — diese
Option mit --debuglevel=0 auf '0' zu setzen, unterdrückt jegliche
Ausgabe von genkernel; --debuglevel=5 stellt dem Benutzer die
vollständige Ausgabe von genkernel zur Verfügung.
Durch eine angemessene Auswahl der Flags in /etc/genkernel.conf
können Sie die Anzahl der Flags, die Sie genkernel über die Kommandozeile
übergeben, halbieren.
Befehlsauflistung
1.2: Ausführen von genkernel (mit Flags), nach Bearbeitung von genkernel.conf
# genkernel --splash --kerneldir=/pfad/zu/alternativen/kernel/quellen \
--kernel-config=/pfad/zu/bevorzugter/konfigurationsdatei --install all
Beide Vorgehensweisen erzeugen dasselbe Ergebnis, allerdings speichert die
letztere die meisten Optionen in einem Skript, das zu einem späteren Zeitpunkt
bearbeitet werden kann.
4.
Booten über das Netzwerk mit genkernel
4.1 Booten über das Netzwerk von einer Installations-CD
Das Werkzeug genkernel kann Kernel- und initrd-Abbilder erzeugen, die die
Unterstützung für das Booten über ein Netzwerk (im folgenden netbooting
genannt) unterstützen. Mit etwas Glück sollten Sie in der Lage sein, irgendeinen
Computer in die von der Installations-CD bereitgestellte Umgebung netbooten zu
können.
Der Trick liegt in genkernels Skript linuxrc: Es wird versuchen die
Installations-CD mit Hilfe von NFS zu netmounten. Ab dann können die
Init-Skripte der Installations-CD übernehmen, als wäre die CD lokal
verfügbar.
4.2 Erstellen von Kernel und Initrd-Abbildern mit Unterstützung für Netbooting
Um die Unterstützung für Netbooting zu aktivieren, binden Sie die folgenden
Optionen während der Kernelkonfiguration ein:
|
Die Unterstützung für Netbooting mit genkernel ist experimentell und kann Fehler
enthalten.
|
Zuerst muss der Kernel die Treiber für Ihre Netzwerkkarte (NIC) enthalten.
Normalerweise werden die Treiber für solche Geräte als Module kompiliert. Für
Netbooting müssen solche Treiber jedoch direkt in den Kernel einkompiliert
(also nicht als Module) sein.
Befehlsauflistung
2.1: Konfigurieren eines 2.6.x Kernels um den NIC-Treiber zu unterstützen
Device Drivers --->
Networking Support --->
Ethernet (10 or 100Mbit) --->
[*] Ethernet (10 or 100Mbit)
<*> der Treiber für Ihre Netzwerkkarte
Als nächstes schlagen wir vor, dass Sie die Optionen IP: kernel level
autoconfiguration und IP: DHCP support aktivieren. Dies vermeidet
einen nicht erforderlichen zusätzlichen Aufwand, da die IP-Adresse und der
NFS-Pfad zu der Installations-CD auf einem DHCP-Server konfiguriert werden
können. Dies bedeutet natürlich, dass die Kernelkommandozeile für jede
Maschine konstant bleibt — was sehr wichtig für etherbooting ist.
Befehlsauflistung
2.2: Konfigurieren eines 2.6.x Kernels um DHCP zu unterstützen
Device Drivers --->
Networking Support --->
Networking options
[*] TCP/IP networking--->
[*] IP: kernel level autoconfiguration
[*] IP: DHCP support
Zusätzlich sollten sie noch SquashFS aktivieren, da die meisten modernen
Gentoo-Installations-CDs dies benötigen. Die Unterstützung für SquashFS ist
in den "normalen" Kernelquellbaum nicht eingebunden. Um SquashFS zu aktivieren,
wenden Sie die benötigen Patche auf den "normalen" Kernelquellbaum an oder
installieren Sie gentoo-sources.
Befehlsauflistung
2.3: Konfigurieren des Kernels um SquashFS zu unterstützen
File systems--->
Miscellaneous filesystems --->
[*] SquashFS 2.X - Squashed file system support
Sobald der Kompilationsprozess abgeschlossen ist, erstellen Sie einen
komprimierten Tarball (tar.gz), der die Kernelmodule enthält. Dieser
Schrittt ist nur erforderlich, wenn die Version Ihres Kernels nicht der Version
des Kernel-Abbilds auf der Installations-CD entspricht.
Befehlsauflistung
2.4: Erstellen eines komprimierten Tarballs, der die Kernelmodule enthält
# cd
# tar -cf /tmp/modules-X.Y.Z.tar.gz /lib/modules/X.Y.Z/
Abhängig von Ihrem Bootmechanismus über das Netzwerk müssen Sie nun einige
der folgenden Schritte durchführen:
Befehlsauflistung
2.5: Erstellen eines Boot-Abbilds
# emerge mknbi
# cd /boot
# mkelf-linux -params="root=/dev/ram0 init=/linuxrc ip=dhcp" kernel... initrd... > etherboot.img
# emerge sparc-utils
# cd /boot
# elftoaout kernel... -o kernel.aout
# piggyback64 kernel.aout System.map-... initrd-...
# mv kernel.aout openboot.img
Endlich können sie diesen Kernel auf ihren TFTP-Server kopieren. Die Details
dazu sind von der Architektur abhängig und würden den Rahmen dieses Leitfadens
sprengen. Ziehen Sie hierzu die Dokumentation zu Ihrer Plattform zu Rate.
4.3 NFS Setup
Um einen NFS-Share aufzusetzen, der die Installations-CD enthält, benutzen Sie
das loop-Gerät, um das ISO-Abbild zu mounten und dann die Inhalte der CD in den
NFS-Share zu kopieren. Als nettes Extra extrahieren genkernels initrd-Skripte
alle tar.gz Dateien im Verzeichnis /nfs/livecd/add/. Alles, was Sie
hier tun müssen, ist das Archiv modules-X.Y.Z.tar.gz in das Verzeichnis
/nfs/livecd/add/ zu kopieren.
Befehlsauflistung
3.6: Vorbereiten des NFS-Shares
# mount /tmp/gentoo-livecd.iso /mnt/cdrom -o loop
# cp -p /mnt/cdrom /nfs/livecd
# umount /mnt/cdrom
# mkdir /nfs/livecd/add
# cp /tmp/modules-X.Y.Z.tar.gz /nfs/livecd/add
4.4 DHCP Setup
Die netboot-Abbilder werden Ihren DHCP-Server sowohl nach einer IP als auch
nach einem root-path fragen. Beide können pro Host angegeben werden, indem man
eine MAC-Adresse benutzt, um die Maschinen zu identifizieren:
Befehlsauflistung
4.7: Beispiel-Setup einer dhcpd.conf auf Client-Seite
...
host netbootableMachine {
hardware ethernet 11:22:33:44:55:66;
fixed-address 192.168.1.10;
option root-path "192.168.1.2:/nfs/livecd";
}
...
4.5 Netbooting Anweisungen
Netbooting selbst ist sehr plattform-spezifisch. Der wichtigste Teil ist die
Parameter ip=dhcp und init=/linuxrc auf der Kernelkommandozeile
anzugeben, da diese die Netzwerkschnittstelle aktivieren und das initrd-Skript
anweisen, die Installations-CD über NFS zu mounten. Hier sind einige
plattform-spezifische Tipps:
Befehlsauflistung
5.8: Netbooting Anweisungen
ok boot net ip=dhcp init=/linuxrc
DEFAULT gentoo
TIMEOUT 40
PROMPT 1
LABEL gentoo
KERNEL kernel-X.Y.Z
APPEND initrd=initrd-X.Y.Z root=/dev/ram0 init=/linuxrc ip=dhcp
5.
Fazit
5.1 Automatisieren oder nicht automatisieren?
Der Sinn von genkernel ist es, einen (einfacheren) alternativen Weg zu der
zeitaufwendigen Kernelkompilation anzubieten. Wie immer haben Sie die freie
Wahl, ob Sie den Kernelkompilationsprozess automatisieren wollen oder nicht.
Die Inhalte dieses Dokuments sind, sofern nicht explizit
anders genannt, unter der Creative Commons -
Namensnennung / Weitergabe Lizenz lizenziert. Die Gentoo Name and Logo
Usage Guidelines treffen zu.
|