Gentoo-Linux Kernel-Upgrade-Guide
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 |
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 |
# emerge eselect
# eselect kernel list
Available kernel symlink targets:
[1] linux-2.6.9-gentoo-r1
[2] linux-2.6.9-gentoo-r2
# 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.
Die Inhalte dieses Dokuments sind unter der Creative Commons -
Namensnennung / Weitergabe Lizenz lizenziert.
|