Handbuch:SPARC/Installation/Kernel

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

Other languages:
Deutsch • ‎English • ‎español • ‎français • ‎polski • ‎русский • ‎українська • ‎中文(中国大陆)‎ • ‎日本語 • ‎한국어
SPARC Handbuch
Installation
Über die Installation
Auswahl des Mediums
Konfiguration des Netzwerks
Vorbereiten der Festplatte(n)
Installation des Stage Archivs
Installation des Basissystems
Konfiguration des Kernels
Konfiguration des Systems
Installation der Tools
Konfiguration des Bootloaders
Abschluss
Arbeiten mit Gentoo
Portage-Einführung
USE-Flags
Portage-Features
Initskript-System
Umgebungsvariablen
Arbeiten mit Portage
Dateien und Verzeichnisse
Variablen
Mischen von Softwarezweigen
Zusätzliche Tools
Eigener Portage-Tree
Erweiterte Portage-Features
Netzwerk-Konfiguration
Zu Beginn
Fortgeschrittene Konfiguration
Modulare Vernetzung
Drahtlose Netzwerke
Funktionalität hinzufügen
Dynamisches Management


Installation der Quellen

Der Linux Kernel ist der Kern, um den herum alle Distributionen gebaut sind. Er ist die Schicht zwischen den Benutzerprogrammen und der Systemhardware. Gentoo bietet seinen Benutzern verschiedene Kernel-Quellen. Eine komplette Liste mit einer Beschreibung finden Sie auf der Kernel Übersichtsseite.

Bei sparc-basierten Systemen empfiehlt Gentoo das sys-kernel/gentoo-sources Paket.

Wählen Sie eine passende Kernel-Quelle und installieren Sie diese mit emerge:

root #emerge --ask sys-kernel/gentoo-sources

Dies installiert die Quellen des Linux Kernel im Verzeichnis /usr/src/, in welchem ein symbolischer Link namens linux auf die installierten Kernel-Quellen zeigt:

root #ls -l /usr/src/linux
lrwxrwxrwx    1 root   root    12 Oct 13 11:04 /usr/src/linux -> linux-3.16.5-gentoo

Jetzt ist es Zeit, die Kernel-Quellen zu konfigurieren und zu kompilieren. Dafür gibt es zwei Ansätze:

  1. Der Kernel wird manuell konfiguriert und gebaut.
  2. Sie verwenden das Werkzeug genkernel, um den Linux Kernel automatisch zu bauen und zu installieren.

Wir erklären hier die manuelle Konfiguration als Standardwahl, weil dies der beste Weg ist, eine Umgebung zu optimieren.

Standard: Manuelle Konfiguration

Einleitung

Einen Kernel manuell zu konfigurieren wird oft als die schwierigste Aufgabe gesehen, die ein Linux Benutzer jemals durchzuführen hat. Nichts ist weiter von der Wahrheit entfernt. Nach der Konfiguration einiger Kernel werden Sie sich nicht mehr daran erinnern, dass es jemals schwer war. ;)

Eine Sache ist jedoch wahr: um einen Kernel manuell konfigurieren zu können, ist es wichtig, das System zu kennen. Die meisten Informationen erhalten Sie durch das Programm lspci, das im Paket sys-apps/pciutils enthalten ist.

root #emerge --ask sys-apps/pciutils
root #lspci
root #lspci -v
Notiz
Innerhalb der chroot-Umgebung können Sie jegliche pcilib-Warnung (wie pcilib: cannot open /sys/bus/pci/devices) ignorieren, die lspci auswerfen könnte.

Eine weitere Quelle von Systeminformationen ist lsmod. Diese Anweisung zeigt Ihnen, welche Kernel-Module die Installations-CD verwendet. Dies liefert gute Hinweise darauf, was im Kernel aktiviert werden sollte.

Gehen Sie in das Kernel Quellverzeichnis und führen Sie make menuconfig aus. Dies wird eine menübasierte Konfigurationsmaske starten.

root #cd /usr/src/linux
root #make menuconfig

Die Linux Kernel-Konfiguration hat viele, viele Abschnitte. Wir listen zunächst einige Optionen auf, die aktiviert werden müssen (ansonsten wird Gentoo nicht funktionieren, oder ohne zusätzliche Veränderungen nicht richtig funktionieren). Wir haben im Gentoo Wiki auch einen Gentoo Kernel-Konfigurationsleitfaden, der weiterhelfen könnte.

Aktivieren der benötigten Optionen

Stellen Sie sicher, dass jeder Treiber, der zum Booten des Systems notwendig ist (wie z.B. SCSI-Controller, usw.), direkt in den Kernel kompiliert ist (nicht als Modul). Andernfalls wird das System nicht in der Lage sein, komplett zu booten.

Als Nächstes wählen Sie den genauen Prozessor-Typ. Es wird auch empfohlen, die MCE-Funktion zu aktivieren (wenn verfügbar), so dass Benutzer bei Hardwareproblemen benachrichtigt werden können. Auf einigen Architekturen (wie z.B. X86_64) werden diese Fehler nicht über dmesg, sondern auf /dev/mcelog ausgegeben. Dies erfordert das Paket app-admin/mcelog.

Wählen Sie auch Maintain a devtmpfs file system to mount at /dev, damit kritische Gerätedateien bereits früh im Boot-Prozess verfügbar sind (CONFIG_DEVTMPFS and CONFIG_DEVTMPFS_MOUNT):

KERNEL devtmpfs-Unterstützung aktivieren
Device Drivers --->
  Generic Driver Options --->
    [*] Maintain a devtmpfs filesystem to mount at /dev
    [ ]   Automount devtmpfs at /dev, after the kernel mounted the rootfs

Überprüfen Sie, dass SCSI disk Unterstützung aktiviert wurde (CONFIG_BLK_DEV_SD):

KERNEL SCSI disk Unterstützung aktivieren
Device Drivers --->
   SCSI device support  --->
      <*> SCSI disk support

Gehen Sie nun zu den Dateisystemen (File Systems) und aktivieren Sie die Dateisysteme, die Sie verwenden. Kompilieren Sie das Dateisystem, das als Root-Dateisystem verwendet wird, nicht als Modul. Andernfalls wird das Gentoo-System nicht in der Lage sein, die Root-Partition einzuhängen. Wählen Sie ebenfalls Virtual memory und /proc file system. Wählen Sie eine oder mehrere Dateisysteme, die Sie auf Ihrem System verwenden wollen (CONFIG_EXT2_FS, CONFIG_EXT3_FS, CONFIG_EXT4_FS, CONFIG_MSDOS_FS, CONFIG_VFAT_FS, CONFIG_PROC_FS, and CONFIG_TMPFS):

KERNEL Auswahl notwendiger Dateisysteme
File systems --->
  <*> Second extended fs support
  <*> The Extended 3 (ext3) filesystem
  <*> The Extended 4 (ext4) filesystem
  <*> Reiserfs support
  <*> JFS filesystem support
  <*> XFS filesystem support
  <*> Btrfs filesystem support
  DOS/FAT/NT Filesystems  --->
    <*> MSDOS fs support
    <*> VFAT (Windows-95) fs support
 
Pseudo Filesystems --->
    [*] /proc file system support
    [*] Tmpfs virtual memory file system support (former shm fs)

Wenn PPPoE für die Internetverbindung, oder ein Einwahl-Modem verwendet wird, aktivieren Sie die folgenden Optionen (CONFIG_PPP, CONFIG_PPP_ASYNC, and CONFIG_PPP_SYNC_TTY):

KERNEL Auswahl der Treiber für PPPoE
Device Drivers --->
  Network device support --->
    <*> PPP (point-to-point protocol) support
    <*>   PPP support for async serial ports
    <*>   PPP support for sync tty ports

Die beiden Komprimierungsoptionen schaden nicht, werden aber auch nicht unbedingt benötigt. Ebenso wenig wie die PPP over Ethernet Option, die vielleicht nur von ppp benötigt wird, wenn 'kernel mode PPPoE' konfiguriert wird.

Vergessen Sie nicht, die Unterstützung von Netzwerkkarten (Ethernet oder Wireless-LAN) zu aktivieren.

Die meisten Systeme haben auch mehrere Prozessorkerne zur Verfügung. Daher ist es wichtig, Symmetric multi-processing support zu aktivieren (CONFIG_SMP):

KERNEL SMP-Unterstützung aktivieren
Processor type and features  --->
  [*] Symmetric multi-processing support
Notiz
In Mehrkernsystemen zählt jeder Kern als ein Prozessor.

Wenn Sie USB-Eingabegeräte (wie Tastatur oder Maus) oder andere USB-Geräte verwenden, vergessen Sie nicht, diese ebenfalls zu aktivieren (CONFIG_HID_GENERIC and CONFIG_USB_HID, CONFIG_USB_SUPPORT, CONFIG_USB_XHCI_HCD, CONFIG_USB_EHCI_HCD, CONFIG_USB_OHCI_HCD):

KERNEL USB-Unterstützung für Eingabegeräte aktivieren
Device Drivers --->
  HID support  --->
    -*- HID bus support
    <*>   Generic HID driver
    [*]   Battery level reporting for HID devices
      USB HID support  --->
        <*> USB HID transport layer
  [*] USB support  --->
    <*>     xHCI HCD (USB 3.0) support
    <*>     EHCI HCD (USB 2.0) support
    <*>     OHCI HCD (USB 1.1) support


Architekturspezifische Optionen

Aktivieren Sie die korrekte Bus-Unterstützung:

KERNEL SBUS/ UPA Aktivierung
Console drivers --->
  Frame-buffer support --->
    [*] SBUS and UPA framebuffers             
      [*] Creator/Creator3D support     (Only for UPA slot adapter used in many Ultras)
    [*] CGsix (GX,TurboGX) support      (Only for SBUS slot adapter used in many SPARCStations)

Aktivieren Sie OBP-Unterstützung:

KERNEL OBP-Unterstützung aktivieren
Misc Linux/SPARC drivers --->
  [*]  /dev/openprom device support

Aktivieren Sie SCSI-spezifische Unterstützung:

KERNEL SCSI-specifische Unterstützung aktivieren
SCSI support --->
  SCSI low-level drivers --->
    <*> Sparc ESP Scsi Driver             (Only for SPARC ESP on-board SCSI adapter)
    <*> PTI Qlogic, ISP Driver            (Only for SBUS SCSI controllers from PTI or QLogic)
    <*> SYM53C8XX Version 2 SCSI support  (Only for Ultra 60 on-board SCSI adapter)

Um die Netzwerkkarte zu unterstützen, wählen Sie eines der Folgenden:

KERNEL Netzwerkunterstützung aktivieren
Network device support --->
  Ethernet (10 or 100Mbit) --->
    <*> Sun LANCE support                   (Only for SPARCStation, older Ultra systems, and as Sbus option)
    <*> Sun Happy Meal 10/100baseT support  (Only for Ultra; also supports "qfe" quad-ethernet on PCI and Sbus)
    <*> DECchip Tulip (dc21x4x) PCI support (For some Netras, like N1)
  Ethernet (1000Mbit) --->
    <*> Broadcom Tigon3 support (Modern Netra, Sun Fire machines)

Mit einer 4-Port Ethernet Maschine (10/100 oder 10/100/1000) ist die Port-Reihenfolge anders als bei denen von Solaris benutzten. Verwenden Sie sys-apps/ethtool um den Port Link Status zu überprüfen.

Wenn Sie einen qla2xxx Festplattencontroller verwenden, installieren Sie sys-block/qla-fc-firmware und fügen Sie Unterstützung für das Laden externer Firmware hinzu.

KERNEL Externe Firmware aktivieren
Device Drivers  --->
   Generic Driver Options  --->
   ()  External firmware blobs to build into the kernel binary
   ()  Firmware blobs root directory

Stellen Sie "External firmware blobs" auf ql2200_fw.bin und "Firmware blobs root directory" auf /lib/firmware/.

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:

root #make && make modules_install
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 der Anleitung zu /etc/portage/make.conf, mit der Variable MAKEOPTS.

Wenn der Kernel mit dem Kompilieren fertig ist, überprüfen Sie die Größe der resultierenden Datei:

root #ls -lh arch/sparc/boot/image
-rw-r--r--    1 root     root         2.4M Oct 25 14:38 image

Wenn die (unkomprimierte) Größe einen Wert größer als 7,5 MB hat, konfigurieren Sie den Kernel erneut bis diese Grenze nicht mehr überschritten wird. Ein Weg dies zu erreichen ist die meisten Kernel-Treiber als Module zu kompilieren. Falls Sie dies ignorieren, kann es zu einem nicht bootenden Kernel führen.

Falls der Kernel nur ein bisschen zu groß ist, können Sie versuchen ihn mit dem Befehl strip ein bisschen zu verkleinern.

root #strip -R .comment -R .note arch/sparc/boot/image

Kopieren Sie das Kernelabbild am Ende in das Verzeichnis /boot/.

root #cp arch/sparc/boot/image /boot/kernel-3.16.5-gentoo


Optional: initramfs bauen

In bestimmten Fällen ist es notwendig, ein initramfs (Ausgangsdateisystem im Arbeitsspeicher) zu bauen. Der häufigste Grund dafür ist, dass wichtige System-Verzeichnisse (wie /usr/ oder /var/) auf separaten Partitionen liegen. Diese Partitionen können mit Hilfe der Werkzeuge, die im initramfs Verfügbar sind, eingehängt werden.

Ohne initramfs besteht ein großes Risiko, dass das System nicht richtig bootet, da die Werkzeuge, die für das Einhängen der Dateisysteme verantwortlich sind, Informationen benötigen, die sich auf den einzuhängenden Dateisystemen befinden. Ein initramfs zieht die notwendigen Dateien in ein Archiv, welches genutzt werden kann nachdem der Kernel gebootet hat, aber noch bevor die Kontrolle an das Init-Tool übergeben wird. Skripte auf dem initramfs stellen dann sicher, dass die Partitionen richtig eingehängt sind, bevor das System mit dem Booten fortfährt.

Zur Installation eines initramfs installieren Sie zunächst das Paket sys-kernel/genkernel. Im Anschluss daran lassen Sie das Tool ein initramfs erzeugen:

root #emerge --ask sys-kernel/genkernel
root #genkernel --install initramfs

Um im initramfs Unterstützung für bestimmte Systeme zu aktivieren, wie LVM oder RAID, fügen Sie die entsprechenden Optionen an den genkernel Aufruf hinzu. Siehe genkernel --help für weitere Informationen. Im nächsten Beispiel aktivieren wir die Unterstützung für LVM und Software-RAID (mdadm)

root #genkernel --lvm --mdadm --install initramfs

Das initramfs wird in /boot/ gespeichert. Die resultierende Datei kann einfach durch Auflisten der mit initramfs beginnenden Dateien gefunden werden:

root #ls /boot/initramfs*

Fahren Sie nun beim Abschnitt Kernel-Module fort.

Alternative: genkernel verwenden

Wenn eine manuelle Konfiguration für Sie zu abschreckend aussieht, empfehlen wir die Nutzung von genkernel. Dies wird den Kernel automatisch konfigurieren und bauen.

genkernel konfiguriert den Kernel fast identisch zu der Art, wie ein Installations-CD Kernel konfiguriert wird. Wenn Sie genkernel verwenden, um einen Kernel zu bauen, wird die gesamte Hardware erst zur Bootzeit erkannt, genau so wie die Installations-CD das macht. Weil genkernel keine manuelle Kernel-Konfiguration benötigt, ist es eine ideale Lösung für jene Benutzer, denen unwohl beim Kompilieren ihres eigenen Kernels ist.

Schauen wir uns nun an, wie man genkernel verwendet. Installieren Sie als erstes das Paket sys-kernel/genkernel:

root #emerge --ask sys-kernel/genkernel

Editieren Sie die Datei /etc/fstab, so dass die Zeile, die als zweites Feld /boot/ beinhaltet, im ersten Feld auf das richtige Device zeigt. Wenn Sie dem Partitionierungs-Beispiel aus diesem Handbuch folgen, ist dieses Device wahrscheinlich mit einem ext2 Dateisystem. Dann würde der Eintrag in der Datei in etwa wie folgt aussehen:

root #nano -w /etc/fstab
DATEI /etc/fstabKonfiguration des /boot Einhängepunktes
/boot	ext2	defaults	0 2
Notiz
Bei der Gentoo Installation wird die Datei /etc/fstab später nochmals konfiguriert. Die /boot Einstellung wird aber bereits jetzt benötigt, da die Anwendung genkernel aus dieser Konfiguration liest.

Kompilieren Sie jetzt die Kernel-Quellen, indem Sie genkernel all ausführen. Seien Sie sich aber bewusst, dass der Vorgang einige Zeit in Anspruch nehmen wird, da genkernel einen Kernel kompiliert, der fast alle Hardware unterstützt!

Notiz
Wenn die Boot-Partition nicht ext2 oder ext3 als Dateisystem verwendet, könnte es notwendig sein, den Kernel manuell mit genkernel --menuconfig all zu konfigurieren. Hierbei müssen Sie Unterstützung für das Dateisystem der Boot-Partition direkt im Kernel (also nicht als Modul) hinzuzufügen. Benutzer von LVM2 werden vermutlich ebenfalls --lvm als Argument hinzufügen wollen.
root #genkernel all

Wenn genkernel fertig ist, wird ein Kernel, ein voller Satz Module und ein initial ram filesystem (initramfs) erstellt worden sein. Wir verwenden den Kernel und die initrd bei der Konfiguration des Boot-Loader später in dieser Anleitung. Schreiben Sie sich die Namen des Kernels und der initrd auf, da Sie diese Information benötigen, wenn die Boot-Loader Konfigurationsdatei bearbeitet wird. Die initrd wird sofort nach dem Booten gestartet, um die automatische Hardware-Erkennung durchzuführen (wie bei der Installations-CD). Danach wird das "richtige" System gestartet.

root #ls /boot/kernel* /boot/initramfs*

Kernel-Module

Konfigurieren der Module

Notiz
Beim Booten werden folgende Kernel-Module automatisch geladen:
  • Kernel-Module für Hardware, die erkannt wird (über udev)
  • Kernel-Module, die explizit angegeben wurden.
Exotische Hardware wird manchmal nicht automatisch erkannt. In diesem Fall ist es notwendig, die erforderlichen Kernel-Module explizit anzugeben. Es schadet nicht, die Kernel-Module, die von udev automatisch geladen werden, zusätzlich explizit anzugeben.

Konfigurieren Sie die Module, die beim Booten automatisch geladen werden sollen, in /etc/modules-load.d/*.conf Dateien. In jeder Zeile wird ein Modul angegeben. Zusätzliche Optionen für die Module sollten in /etc/modprobe.d/*.conf Dateien konfiguriert werden.

Um alle verfügbaren Module anzuzeigen, können Sie den folgenden find Befehl ausführen. Vergessen Sie nicht, "<Kernelversion>" mit der Version des Kernels zu ersetzen, den Sie gerade kompiliert haben:

root #find /lib/modules/<Kernelversion>/ -type f -iname '*.o' -or -iname '*.ko' | less

Um beispielsweise automatisch das Modul 3c59x.ko zu laden (ein Treiber für eine bestimmte 3Com Netzwerkkarten-Familie), editieren Sie die Datei /etc/modules-load.d/network.conf und fügen Sie den Modulnamen ein. Der genaue Dateiname in /etc/modules-load.d/ ist für den Loader unwichtig.

root #mkdir -p /etc/modules-load.d
root #nano -w /etc/modules-load.d/network.conf
DATEI /etc/modules-load.d/network.confLaden des 3c59x Moduls erzwingen
3c59x

Setzten Sie die Installation mit der Konfiguration des Systems fort.

Optional: Firmware installieren

Einige Treiber benötigen die Installation von zusätzlicher Firmware auf dem System, bevor sie funktionieren. Dies ist häufig bei Netzwerkkarten, und insbesondere bei WLAN Interfaces der Fall. Auch moderne Video-Chips von Herstellern wie AMD, NVidia und Intel benötigen häufig externe Firmware-Dateien, selbst oder gerade wenn sie mit Open-Source Treibern angesteuert werden. Die meiste Firmware befindet sich im Paket sys-kernel/linux-firmware:

root #emerge --ask sys-kernel/linux-firmware