4.2 Einen Kernel auswählen


Der Kernel ist der Teil des Betriebssystems, der Hardwarezugriff , Prozesskontrolle und die gesamte Systemkontrolle ermöglicht. Der Kernel hat die Unterstützung für Ihre Geräte, deshalb ist es wichtig einen für Ihr System auszuwählen.

Slackware liefert mehr als ein Dutzend vorkompilierte Kernel aus denen Sie auswählen können, jeder mit einer Standardauswahl an Treibern und zusätzlich ein paar speziellen Treibern. Sie können einen der vorkompilierten Kernel ausführen oder selbst einen Kernel aus den Sourcen kompilieren. Wie auch immer, sie müssen Sicherstellen, das Ihr Kernel die Hardware Ihres Systems unterstützt.

4.2.1 Das /kernels Verzeichnis auf der Slackware CD-ROM


Die vorkompilierten Kerne sind im /kernels Verzeichnis auf der Slackware CD-ROM oder auf FTP Servern im Hauptverzeichnis von Slackware. Die verfügbaren Kernel ändern sich gelegentlich mit erscheinen neuer Versionen, weshalb die dort abgelegte Dokumentation die zuverlässigste Quelle dazu ist. Das /kernels Verzeichnis hat für jeden verfügbaren Kernel ein Unterverzeichnis. Diese Unterverzeichniss sind nach der zugehörigen Bootdiskette benannt:

Datei Zweck
System.map Die Systemkarten Datei für diesen Kernel
bzImage Das aktuelle Kernelabbild
config Die Konfigurationsdatei für diesen Kernel


Um einen Kernel zu verwenden, kopieren Sie die System.map und config Dateien in Ihr /boot Verzeichnis und kopieren das Kernelabbild nach /boot/vmlinuz. Führen sie /sbin/lilo(8) aus um LILO für Ihren neuen Kernel zu installieren und starten Sie das System neu. Das ist alles um einen neuen Kernel zu installieren.

Kernel die mit einem .i enden sind IDE Kernel. Das heisst, sie Unterstützen keine SCSI-Geräte. Kernel die mit einem .s enden sind SCSI-Kernel. Sie enthalten die komplette IDE-Unterstützung der .i Kernel und SCSI-Unterstützung.

4.2.2 Einen Kernel aus dem Quellcode kompilieren


Die Frage: "Soll ich einen Kernel für mein System kompilieren?" wird oft von Einsteigern gestellt. Die Antwort darauf ist immer Vielleicht. Es gibt wenige Fälle in denen es nötig ist einen Kernel speziell für Ihr System zu kompilieren. Die meisten Benutzer können einen der vorkompilierten Kernel nehmen um ein voll, lauffähiges System zu haben. Sie werden einen neuen Kernel kompilieren wollen, wenn sie auf eine Version upgraden wollen, die noch nicht für Slackware angeboten wird, oder wenn sie Ihre Kernelsourcen mit Unterstützung für spezielle Geräte gepatcht haben, die nicht im offiziellen Kernel enthalten sind. Jeder mit einem SMP System wird sicherlich einen Kernel mit SMP Unterstützung kompilieren wollen. Auch finden es viele Benutzer nützlich den Kernel mit Optimierungen für Ihren Prozessor zu kompilieren.

Einen eigenen Kernel zu kompilieren ist nicht schwer. Der erste Schritt ist zu überprüfen ob Sie die Kernelquelltexte auf Ihrem System installiert haben. Stellen sie Sicher, das die Pakete der K-Abteilung installiert sind. Sie sollten ausserdem Sicherstellen, das die D-Abteilung installiert ist, besonders der C compiler, GNU make und die GNU binutils. Generelll ist es gut die komplette D-Abteilung installiert zu haben, wenn Sie planen irgendwelche Entwicklung zu machen. Sie könnnen auch den aktuellen Kernelquelltext von einem der offiziellen Serfer herunterladen: http://www.kernel.org/mirrors

4.2.2.1 Linux Kernel Version 2.4.x kompilieren


% su -
Password:
# cd /usr/src/linux


Der erste Schritt ist, die Kernelsourcen in ihren Lieferzustand zu bringen. Wir erreichen dies durch den Befehl (Anmerkung: vielleicht möchten sie die Konfiguration .config sichern, denn der Befehl wird diese ohne Warnung löschen):

# make mrproper


Jetzt können Sie den Kernel für Ihr System konfigurieren. Der aktuelle Kernel bietet drei Möglichkeiten dies zu tun. Die erste ist das original, text-basierte Frage und Antwort System. Es stellt einen Haufen Fragen und bildet daraus die Konfigurationsdatei. Das Problem mit dieser Variante ist, dass bei Fehler von vorne begonnen werden muss. Die Variante, die die meisten Leute bevorzugen ist die Menügeführte. Letztlich gibt es noch ein X-basierendes Kernelkonfigurationsprogramm. Wählen Sie was Sie möchten und verwenden sie den entsprechenden Befehl:

# make config           (text-basierende Frage&Antwort Version)
# make menuconfig       (menügeführte, text-basierende Version)
# make xconfig          (X-basierende Version, stellen Sie sicher, das Sie in X sind)


Abbildung 4-1. Kernelkonfigurationsmenü
image

Einsteiger werden sicherlich menuconfig als die einfachste Variante bevorzugen. Es sind Hilfetexte enthalten, die die verschiedenen Teile des Kernel beschreiben. Nachdem der Kernel konfiguriert ist, verlassen Sie das Konfigurationsprogramm. Es wird die nötigen Konfigurationsdateien schreiben. Jetzt können sie die Sourcen auf einen bau vorbereiten:

# make dep
# make clean


Der nächste Schritt kompiliert den Kernel. Versuchen Sie zuerst den nachfolgenden bzImage Befehl.

# make bzImage


Dies wird einige Zeit, abhängig von Ihrer CPU-Leistung, dauern. Während des Vorgangs werden sie Compiler-Meldungen sehen. Nachdem das Kernelabbild erstellt ist, werden Siel alle Teile die als Module gewählt wurden erstellen wollen.

# make modules


Jetzt können Sie den Kernel und die Module die Sie kompiliert haben installieren. Um den Kernel auf einem Slackware System zu installieren, sollten folgende Befehle ausgeführt werden:

# mv /boot/vmlinuz /boot/vmlinuz.old
# cat arch/i3386/boot/bzImage > /boot/vmlinuz
# mv /boot/System.map /boot/System.map.old
# cp System.map /boot/System.map
# make modules_install


Ausserdem sollten Sie die Datei /etc/lilo.conf ändern und einen Abschnitt zum booten des alten Kernel hinzufügen, für den Fall, dass der neue nicht läuft. Nachdem Sie das getan haben, führen sie /sbin/lilo aus um den neuen Boot-Abschnitt zu installieren. Jetzt können Sie mit Ihrem neuen Kernel neu starten.

4.2.2.2 Linux Kernel Version 2.6.x


Das Kompilieren eines 2.6er Kernel ist nur ein Wenig anders als eines 2.4er oder 2.2er Kernel, aber es ist wichtig das Sie die Unterschiede verstehen, bevor sie Scheitern. Es ist nicht mehr nötig make dep und make clean auszuführen. Auch ist die Ausgabe beim Kompilieren nicht mehr so ausführlich. Das Ergebnis ist ein Bauvorgang, der einfach zu verstehen ist, aber auch einige Tücken hat. Wenn Sie Probleme haben den Kernel zu bauen, ist es wärmstens empfohlen die Ausführlichkeit wieder einzuschalten. Das geschieht durch einfaches anhängen von V=1 an den bau. Dies erlaubt ihnen mehr Informationen zu sammeln, die einem Kernelentwickler oder einem freundlichen Geek der Ihnen hilft ermöglichen Ihr Problem zu lösen.

# make bzImage V=1


4.2.3 Kernel Module nutzen


Kernel Module sind ein anderer Name für Gerätetreiber die einem laufenden Kernel übergeben werden können. Sie erlauben die von Ihrem Kernel unterstützte Hardware zu erweitern ohne einen anderen Kernel nehmen oder einen eigenen kompilieren zu müssen.

Module können ausserdem jederzeit geladen oder enfernt werden, auch wenn das System läuft. Das macht es Administratoren einfacher, das Upgraden bestimmter Treiber zu wechseln. Ein neues Modul kann kompiliert, das Alte entfernt und das Neue geladen werden ohne das System neu starten zu müssen.

Module sind auf Ihrem System in /lib/modules/kernelversion gespeichert. Sie können beim booten durch die rc.modules Datei geladen werden. Diese Datei ist sehr gut Kommentiert und bietet Beispiele für gängige Hardware. Um eine Liste der Module zu bekommen, die gerade aktiv sind, benutzen Sie den Befehl lsmod(1):

# lsmod
Module                  Size  Used by
parport_pc              7220   0 
parport                 7844   0  [parport_pc]


Sie sehen hier, das ich nur das Modul für die Parallele Schnittstelle geladen habe. Um ein Modul zu entfernen benutzt man den rmmod(1) Befehl. Module können mit den Befehlen modprobe(1) oder insmod(1) geladen werden. modprobe ist normalerweise Sicherer, weil es jedes Modul lädt, das von dem Modul das Sie laden möchten gebraucht wird.

Viele Benutzer laden oder entfernen nie Module per Hand. Sie benutzen den kernel autoloader zum verwalten der Module. Standardmässig benutzt Slackware kmod in seinen Kernels. kmod ist eine Kerneloption die dem Kernel ermöglicht Module zu laden die benötigt werden. Für mehr Informationen über kmod und wie es konfiguriert wird, schauen Sie in /usr/src/linux/Documentation/kmod.txt. Dafür benötigen Sie das Kernel Sourcen Paket oder einen heruntergeladenen Kernel von http://kernel.org.

Mehr Informationen finden sie in den man Seiten für jeden Befehl und in der rc.modules Datei.
Valid XHTML :: Valid CSS: :: Powered by WikkaWiki