Gentoo Logo

Gentoo-Linux Kernel-Upgrade-Guide

Inhalt:

1.  Einleitung

Der Kernel ist eines der wenigen Pakete, die einige Handarbeit erfordern, um das Upgrade zu vervollständigen. Portage wird die Kernelquellen für Sie downloaden und installieren, anschließend ist es jedoch Ihr Ding, den Kernel zu kompilieren, bevor irgendwelche Änderungen wirksam werden.

Obwohl dieser Leitfaden an Benutzern gerichtet ist, die von einem Kernel-Release zu einem anderen upgraden, ist er sicher auch für Anwender nützlich, die von einem Kernelpaket zu einem anderen migrieren.

In diesem Dokument wird gentoo-sources als Beispiel verwendet, jedoch gelten die hier dargestellten Instruktionen auch für andere Pakete unseres Baums.

2.  Warum den Kernel aktualisieren?

Im Allgemeinen bringt eine Aktualisierung von einem Kernel-Release zum nächsten keine maßgeblichen Unterschiede. Es gibt viele Gründe für eine Aktualisierung des Kernels. Einer ist es sich ein neues Features oder einen neuen Treiber zunutze zu machen, ein anderer ist es geschützt zu sein gegen eine Sicherheitsschwachstelle oder einfach um ein aktuelles und gesundes System zu behalten.

Auch wenn Sie nicht auf jede neue Kernel-Revision aktualisieren möchten - es ist es zu empfehlen, zumindest von Zeit zu Zeit eine Aktualisierung durchzuführen. Es wird allerdings dringend empfohlen, sofort ein Upgrade auf einen neuen Kernel zu machen, wenn durch das neue Release ein Sicherheitsproblem gelöst wird.

3.  Aktuellere Quellen mit Hilfe von Portage erhalten

Kernelquellen werden, wie jedes andere Paket, mit Hilfe des emerge Dienstprogramms aktualisiert. Dass Sie Ihren Kernel aktualisieren wollen wird wahrscheinlich dann der Fall sein, wenn die Aktualisierung in der Liste der World-Updates auftaucht.

Befehlsauflistung 3.1: Neue Kernelquellen erscheinen auf der Update-Liste

# emerge -Dup world
Calculating dependencies ...done!
[ebuild    NS ] sys-kernel/gentoo-sources-2.6.9-r2 [2.6.8-r5]

Notiz: Die Kennzeichnung "NS" in der Ausgabe oben meint, dass der neue Kernel in einem neuen SLot installiert wird. Die Quellen des alten Kernels bleiben erhalten, bis Sie sie manuell entfernen.

Sie können nun weitermachen und die Aktualisierung installieren, zum Beispiel:

Befehlsauflistung 3.2: Kernelquellen aktualisieren

# emerge -u gentoo-sources

Die Kernelquellen werden dann in ein Unterverzeichnis von /usr/src installiert. Obiges Beispiel installiert die neuen Kernelquellen in den Pfad /usr/src/linux-2.6.9-gentoo-r2.

4.  Den symbolischen Link /usr/src/linux aktualisieren

Für Gentoo muss der symbolischen Link /usr/src/linux auf die Quellen, die Sie momentan verwenden, verweisen.

Portage kann den symbolischen Link automatisch aktualisieren, wenn Sie eine neue Kernelquelle mit emerge installieren. Alles was Sie tun müssen ist, das symlink Flag zur USE-Variable in /etc/make.conf hinzuzufügen.

Befehlsauflistung 4.1: Beispiel der USE-Variable in /etc/make.conf

(Fügen Sie das symlink Keyword ein)
USE="symlink x86 3dnow 3dnowex X aac aalib adns alsa apache2"

Alternativ können Sie app-admin/eselect verwenden um den symbolischen Link anzupassen.

Befehlsauflistung 4.2: eselect für den symlink verwenden

(Installieren Sie eselect, wenn Sie es noch nicht haben)
# emerge eselect
(Eine Liste aller verfügbaren Kernel einsehen)
# eselect kernel list
Available kernel symlink targets:
  [1]   linux-2.6.9-gentoo-r1
  [2]   linux-2.6.9-gentoo-r2
(Auswählen des richtigen Kernels)
# eselect kernel set 1

Wenn Sie es wirklich selbst tun wollen, zeigt Ihnen das folgende Beispiel, wie man den Link auf linux-2.6.9-gentoo-r2 setzt:

Befehlsauflistung 4.3: Den Softlink /usr/src/linux aktualisieren

# cd /usr/src
# ln -sfn linux-2.6.9-gentoo-r2 linux

5.  Konfiguration, Kompilierung und Installation des neuen Kernel

Für jede dieser Optionen sollten Sie die Anleitungen aus dem Gentoo Handbuch lesen, die sich auf die Konfiguration des Kernels und die Konfiguration des Bootloaders beziehen. Folgend findet sich eine Übersicht der benötigten Aktionen:

Option 1: Automatisches Kernel-Setup mit genkernel

Wenn Sie Genkernel verwenden, müssen Sie lediglich die Schritte wiederholen, die Sie während der ersten Kernel-Installation bereits gemacht haben.

Starten Sie genkernel auf die übliche Art und Weise:

Befehlsauflistung 5.1: genkernel aufrufen

# genkernel all

Sie auch können weitere Parameter für andere genkernel-Funktionen angeben. Um zum Beispiel weitere Kernel-Optionen mit Hilfe von menuconfig angeben zu können und wenn Sie möchten, dass genkernel die Konfiguration Ihres grub-Bootloaders automatisch aktualisiert, starten Sie genkernel wie folgt:

Befehlsauflistung 5.2: genkernel mit einigen verbreiteten Optionen starten

# genkernel --menuconfig --bootloader=grub all

Für weiterführende Informationen lesen Sie bitte den Gentoo Linux Genkernel Guide oder das Gentoo Handbuch. Viele der Optionen können in der Konfigurationsdatei für genkernel, /etc/genkernel.conf, gesetzt werden.

Option 2: Manuelle Konfiguration

Öffnen Sie zunächst im Verzeichnisbaum der Kernelquellen das Dienstprogramm menuconfig.

Befehlsauflistung 5.3: menuconfig aufrufen

# cd /usr/src/linux
# make menuconfig

Wählen Sie die notwendigen Optionen für Ihre Hardware und Ihre Arbeitsumgebung aus. Für weitere Informationen zur Kernelkonfiguration lesen Sie bitte das Kapitel mit dem Namen Konfigurieren des Kernels des Gentoo Handbuchs.

Kompilieren Sie als nächstes Ihren Kernel und kopieren Sie ihn auf Ihre Boot-Partition. Folgen Sie wieder den Anweisungen im Gentoo Handbook im Kapitel Konfigurieren des Bootloaders. Wenn /boot auf einer separaten Partition ist, dann stellen Sie sicher dass diese mit mount eingebunden wurde, bevor Sie den kompilierten Kernel in das Verzeichnis kopieren! Wenn Sie dies nicht befolgen wird verhindert, dass Ihr System mit dem neuen Kernel startet. nicht, zuerst die /boot-Partition einzuhängen! Bei einer Erst-Installation wurde dies schon zu einem wesentlich früheren Zeitpunkt getan.

Befehlsauflistung 5.4: Kompilierung und Installation eines neuen Kernels

# make && make modules_install
# mount /boot
# cp arch/i386/boot/bzImage /boot/bzImage-2.6.9-gentoo-r2

Als Letztes sollten Sie Ihre Bootloader-Konfiguration auf den neuesten Stand bringen, indem Sie einen Eintrag für den neuen Kernel hinzufügen (den alten Eintrag noch nicht löschen!) und die /boot-Partition aushängen. Folgen Sie wieder den entsprechenden Anweisungen im Gentoo Handbuch.

6.  Externe Module erneut installieren

Wenn Sie Kernelmodule verwenden, die nicht im Baum der Kernelquellen enthalten sind, sondern an anderer Stelle im Portage-Baum bereitgestellt werden (z.B. ALSA-Treiber und NVIDIA- oder ATI-Grafiktreiber), müssen Sie diese nach Aktualisierung des Kernels erneut installieren. Dies wird einfach durch das erneute emergen der betreffenden Pakete erreicht. Lesen Sie für weitere Informationen das Kapitel Konfiguration des Kernel im Gentoo Handbuch.

Wir liefern Ihnen ein einfaches Tool (sys-kernel/module-rebuild), welches alle Kernelmodule erneut erstellt, die Sie mit separaten Ebuilds für den Kernel unter /usr/src/linux installiert haben. Die Benutzung ist sehr einfach. Nachdem sie es emerged haben führen sie einfach module-rebuild populate aus um die Datenbank mit einer Liste von Paketen zu füllen die neu gebaut werden müssen nachdem der Kernel aktualisiert wurde. Nachdem Sie damit fertig sind ihren Kernel zu upgraden oder neu zu kompilieren starten Sie module-rebuild rebuild, um die Treiber neu zu kompilieren, bevor Sie neustarten.

Für weitere Informationen führen Sie module-rebuild ohne irgendwelche Optionen aus um eine Liste von Parametern zu bekommen, die dem Programm übergeben werden können.

7.  Den neuen Kernel booten

Als Nächstes müssen Sie alle Applikationen schließen und Ihr System neu booten. Wenn Sie die obigen Anweisungen richtig befolgt haben, sollte das Menü des Bootloaders einen Eintrag für Ihren neuen Kernel enthalten. Wählen Sie den neuen Kernel und lassen Sie das System starten.

Hoffentlich bootet Ihr System mit dem neuen Kernel, so dass Sie sich anmelden und wie gewohnt arbeiten können. Wenn dies der Fall ist, dann ist das Upgrade abgeschlossen.

Falls Sie einen Fehler gemacht haben und das System mit dem neuen Kernel nicht bootet, dann starten Sie erneut und wählen den Eintrag des Bootloaders für den zuletzt bekannenten, funktionierenden Kernel. Sie können dann erneut bei Konfiguration, Kompilierung und Installation des neuen Kernel beginnen, um die entsprechenden Änderungen durchzuführen und Ihren Fehler zu korrigieren. In manchen Fällen (z.B. Sie haben einen Treiber für ein Audio Gerät, einen Ethernet Adapter, etc. vergessen) müssen Sie noch nicht einmal neu booten.

8.  Mehrere Kernel betreiben

Sie werden bemerkt haben, dass bei der Installation der Quellen eines neuen Kernel die Quellen des alten Kernel nicht entfernt werden. Dies ist beabsichtigt und erlaubt es, mehrere verschiedene Kernel nebeneinander zu betreiben.

Um zwischen mehreren Kernel zu wechseln, müssen Sie einfach nur die entsprechenden Kernelquellen im Verzeichnis /usr/src und das binäre bzImage auf Ihrer /boot-Partition belassen und durch Einträge in der Bootloader-Konfiguration darauf verweisen. Bei jedem Bootvorgang wird Ihnen dann eine Auswahl der möglichen Kernel durch Ihren Bootloader angeboten.

9.  Ältere Kernel entfernen

Nach dem letzten Abschnitt sind Sie möglicherweise mit Ihrem neuen Kernel glücklich sein und sehen keine Notwendigkeit darin, ältere Kernel zu behalten. Um einfach alle Quellen eines bestimmten Kernels außer des neuesten zu entfernen, können Sie sich die prune-Option von emerge zu Nutze machen. Wir führen das Beispiel mit den gentoo-sources fort:

Befehlsauflistung 9.1: Alte Versionen entfernen

# emerge -P gentoo-sources

In den meisten Fällen verbleiben temporäre Dateien, die während des Kompilierens verwendet wurden, im entsprechenden Unterverzeichnis von /usr/src. Diese können ohne Weiteres mit Hilfe von rm entfernt werden.

Des Weiteren können die Module, die von diesen Kernel verwendet werden, ohne Weiteres gelöscht werden. Dies geschieht durch das Löschen der zu den nicht mehr verwendeten Kernel gehörenden Verzeichnis-Bäume unter /lib/modules. Achten Sie darauf, keine Module, die zu einem noch verwendeten Kernel gehören, zu löschen!

Zu guter Letzt können Sie Ihre /boot-Partition einhängen und die bzImage Datei(en) des gelöschten Kernels entfernen. Sie sollten ebenfalls die Konfiguration Ihres Bootloaders ändern und dort die Einträge für die gelöschten Kernel entfernen.

10.  Fortgeschritten: Die alte .config für einen neuen Kernel verwenden

Manchmal kann man Zeit sparen, indem man die Konfiguration des alten Kernels heranzieht, um einen neuen Kernel zu konfigurieren. Beachten Sie aber, dass das im Allgemeinen gefährlich ist, weil es meist zu viele Änderungen zwischen Kernel-Versionen gibt, um dies als einen verlässlichen Weg zur Aktualisierung ansehen zu können.

Die einzige Situation, in der dieser Weg geeignet ist, ist, wenn man von einer Gentoo-Kernel-Ausgabe auf eine andere Gentoo-Kernel-Ausgabe aktualisiert. Zum Beispiel sind die Unterschiede zwischen gentoo-sources-2.6.9-r1 und gentoo-sources-2.6.9-r2 sehr gering, so dass es kein Problem ist, die unten beschriebene Methode zu verwenden. Nichtsdestotrotz ist es nicht ratsam, diese Methode für das in diesem Dokument verwendete Beispiel (Aktualisierung von 2.6.8 auf 2.6.9) zu verwenden. Zwischen diesen beiden offiziellen Versionen gibt es zu viele Unterschiede. Des Weiteren erhalten die User durch die unten beschriebene Methode zu wenig Information, wodurch sie oft Probleme bekommen, weil Optionen deaktiviert wurden, die sie eigentlich benötigen.

Damit Sie ihre alte .config wieder verwenden können, muss sie einfach kopiert werden. Anschließend führen Sie make oldconfig aus. Im folgenden Beispiel nehmen wir die Konfiguration von gentoo-sources-2.6.9-r1 und importieren sie nach gentoo-sources-2.6.9-r2.

Befehlsauflistung 10.1: Wiederverwenden der alten Konfiguration

# cd /usr/src/linux-2.6.9-gentoo-r2
# cp ../linux-2.6.9-gentoo-r1/.config .
# make oldconfig

Befehlsauflistung 10.2: Wiederverwenden der alten Konfiguration mit genkernel

# cd /etc/kernels
# cp kernel-config-x86-2.6.9-gentoo-r1 kernel-config-x86-2.6.9-gentoo-r2
# genkernel all

An diesem Punkt werden Sie gebeten, Einstellungen für die Konfigurations-Optionen einzugeben, die sich zwischen den Versionen geändert haben. Wenn Sie dies getan haben, können Sie den Kernel wie gewohnt kompilieren und installieren, ohne eine Konfiguration über menuconfig machen zu müssen.

Eine viel sicherere Upgrade-Methode ist es, die Konfigurationsdatei wie gerade gezeigt zu kopieren und dann einfach make menuconfig auszuführen. Dies vermeidet die soeben erwähnten Probleme von make oldconfig, da make menuconfig Ihre vorherige Konfiguration so weit wie möglich in das Menü lädt. Was Sie nun tun müssen, ist durch jede einzelne Option zu gehen und nach neuen Abschnitten, Entfernungen und so weiter zu schauen. Durch Benutzen von menuconfig erhalten Sie einen Kontext für alle neuen Änderungen und können ganz einfach die neuen Auswahlmöglichkeiten sowie deren Hilfebildschirme anschauen. Sie können dies sogar für Upgrades wie 2.6.8 zu 2.6.9 verwenden; stellen Sie sicher, dass Sie sich vorsichtig durch die Optionen lesen. Sobald Sie fertig sind, kompilieren und installieren Sie Ihren Kernel wie gewohnt.

11.  Probleme nach einem Kernel-Upgrade?

Bei der schnellen Entwicklung des Linux-Kernel ist es unvermeidlich, dass manche Änderungen, die von einem Kernel-Release zum nächsten gemacht wurden, ein paar Probleme verursachen. Sollten Sie Probleme mit der neuesten Version der von Gentoo unterstützten Kernel haben, berichten Sie uns bitte von diesen Problemen.



Drucken

Seite aktualisiert 22. Juni 2007

Die Originalversion dieser Übersetzung wird nicht länger gepflegt

Zusammenfassung: Dieses Dokument beschreibt das Verfahren eines Kernel-Upgrades von einem Release auf ein anderes.

Daniel Drake
Autor

Thomas Gier
Übersetzer

Jan Hendrik Grahl
Korrektor

Stefan Becker
Übersetzer

Donate to support our development efforts.

Copyright 2001-2014 Gentoo Foundation, Inc. Questions, Comments? Contact us.