Handbook:MIPS/Blocks/Kernel/de

From Gentoo Wiki
Jump to:navigation Jump to:search
This page is a translated version of the page Handbook:MIPS/Blocks/Kernel and the translation is 100% complete.


Vorbereitung der Konfiguration

Wichtig
Auf dem Origin 200/2000, Indigo2 Impact (R10000), Octane/Octane2 und O2 wird ein 64-Bit Kernel zum Booten dieser Systeme benötigt. emergen Sie sys-devel/kgcc64 für diese Maschinen, um einen Cross-Compiler zum Bau von 64-Bit Kernels zu erzeugen.

Viele der unterstützten Systeme haben Beispiel .configs, die sich in den Kernel-Quellen verstecken. Nicht alle Systeme haben Konfigurationen, die auf diese Weise verteilt werden. Diejenigen bei denen das aber so ist, können durch Verwendung der in der Tabelle unten aufgeführten Befehle konfiguriert werden.

System Konfigurations-Befehl
Cobalt Servers make cobalt_defconfig
Indy, Indigo2 (R4k), Challenge S make ip22_defconfig
Origin 200/2000 make ip27_defconfig
Indigo2 Impact (R10k) make ip28_defconfig
O2 make ip32_defconfig

Jedes der Gentoo Installations-Images hat eine Kernel Konfigurations-Option als Teil des eigenen Images, erreichbar über /proc/config.gz. Dies kann in vielen Fällen verwendet werden. Es ist allerdings am besten, wenn die Kernel-Quellen dem gerade laufenden Kernel sehr ähnlich sind. Um es zu entpacken, starten Sie es einfach durch zcat, wie unten gezeigt.

root #zcat /proc/config.gz > .config
Wichtig
Diese Kernel-Konfiguration ist für ein Netboot Image. Das heißt es wird ein Root-Dateisystem Image irgendwo in der Nähe erwartet. Entweder als Verzeichnis für initramfs oder ein Loopback-Gerät für initrd. Wenn Sie make menuconfig ausführen vergessen Sie nicht in den allgemeinen Einstellungen die Optionen für initramfs zu deaktivieren.

Anpassen der Konfiguration

Sobald eine Konfiguration gefunden ist, laden Sie sie in das Kernel Quellverzeichnis und benennen Sie sie in .config um. Führen Sie dort make oldconfig aus, um alles auf den auf den aktuellen Stand zu bringen, entsprechend den Anweisungen oben. Passen Sie die Konfiguration vor dem Kompilieren an.

root #cd /usr/src/linux
root #cp /path/to/example-config .config
root #make oldconfig

Drücken Sie bei jeder Eingabeaufforderung einfach Enter um vorerst die Standardeinstellungen zu akzeptieren ...

root #make menuconfig
Wichtig
Im Kernel Hacking Abschnitt gibt es die Option "Are You Using A Cross Compiler?". Dies weist die Kernel Makefiles an "mips-linux-" (oder mipsel-linux ... etc.) gcc voranzustellen und als Befehl beim Kompilieren des Kernels. Dies sollte trotz Cross-Compilierung ausgeschaltet sein. Geben Sie das Präfix stattdessen mit der Variablen CROSS_COMPILE an, wenn ein Cross-Compiler aufgerufen werden muss. Wie im nächsten Abschnitt gezeigt.
Wichtig
Es gibt auf Octane Systemen ein bekanntes Problem mit JFS und ALSA, auf denen ALSA nicht funktioniert. Angesichts des experimentellen Charakters von JFS auf MIPS wird zurzeit empfohlen die Nutzung von JFS zu vermeiden.

Kompilieren und installieren

Mit beendeter Konfiguration ist es an der Zeit den Kernel zu kompilieren und zu installieren. Schließen Sie die Konfiguration und starten Sie den Kompiliervorgang:

Notiz
Geben Sie auf 64-Bit Maschinen CROSS_COMPILE=mips64-unknown-linux-gnu- (oder auf Little-Endian Systemen mips64el-...) an, um den 64-Bit Compiler zu nutzen.

Um nativ zu kompilieren:

root #make vmlinux modules modules_install

Passen Sie das "mips64-unknown-linux-gnu-" zur Cross-Kompilierung für den Zielcomputer entsprechend an:

root #make vmlinux modules modules_install CROSS_COMPILE=mips64-unknown-linux-gnu-

Wenn Sie auf einer anderen Maschine kompilieren (wie beispielsweise einem x86 Rechner), verwenden Sie die folgenden Befehle um den Kernel zu kompilieren und die Module in ein bestimmtes Verzeichnis zu installieren zur Übertragung auf die Zielmaschine.

root #make vmlinux modules CROSS_COMPILE=mips64-unknown-linux-gnu-
root #make modules_install INSTALL_MOD_PATH=/somewhere
Wichtig
Wenn Sie einen 64-Bit Kernel für den Indy, Indigo2 (R4k), Challenge S und O2 kompilieren, verwenden Sie anstelle von vmlinux das vmlinux.32 Target. Ansonsten wird die Maschine nicht booten können. Dies ist ein Workaround des Problems, das das PROM nicht das ELF64 Format versteht.
root #make vmlinux.32
Notiz
Es ist möglich parallele Builds durch make -jX zu aktivieren. Wobei X die Anzahl der Tasks ist, die der Build-Prozess parallel starten darf. Dies ist ähnlich wie die Anleitung zu /etc/portage/make.conf, mit der MAKEOPTS Variable.

Die Zeilen oben erzeugen vmlinux.32, das der finale Kernel ist.

Wenn der Kernel mit dem Kompilieren fertig ist, kopieren Sie das Kernel Abbild nach /boot/.

Notiz
Der Bootloader auf Cobaltservern erwartet ein komprimiertes Kernel Abbild. Denken Sie daran die Datei mit gzip -9 zu komprimieren, sobald Sie sich im Verzeichnis /boot/ befindet.
root #cp vmlinux /boot/kernel-3.16.5-gentoo

Für Cobaltserver komprimieren Sie das Kernel Abbild:

root #gzip -9v /boot/kernel-3.16.5-gentoo