Angeregt wurde ich zu diesem Artikel durch die Tatsache, daß portage beim Kernel-Update unter GentooLinux mittlerweile 4 Kernelsourcetrees auf meinem System installiert hat und ich irgendwie der Meinung bin, einer reicht völlig aus.
Irgendwann macht man mal einen „emerge sync“ und stellt hinterher fest, es gibt eine neue Version der gentoo-sources (der Kernelquellen unter Gentoo). Portage installiert nun fleißig immer die neue Version neben die alte ohne diese zu löschen.
Wie aber geht man vor, wenn man jeweils nur eine Version auf seinem System haben möchte?
In diesem Artikel wird immer vom Paket gentoo-sources gesprochen. Mit den anderen Kernelpaketen funktioniert das natürlich genauso.
Der besseren Verständlichkeit wegen wird der update des Kernelpaketes gentoo-sources-2.4.19-r7 auf gentoo-sources-2.4.22-r11 beschrieben. Für andere Versionen funktioniert es analog.
Installation des neuen Kernels
Jetzt den neuen Kernel zu installieren ist relativ einfach. Entweder man führt ein „emerge -u world“ aus oder installiert das package direkt mit „emerge -u gentoo-sources“.
Zunächst wird der neue Kernel aus das Linux-Verzeichnis verlinkt.
rm linux
ln -sf linux-2.4.19-gentoo-r11 linux
Code-Sprache: CSS (css)
Danach kopiere ich mir meist meine .config Datei (in der die Kernelkonfiguration liegt) in das neue Kernelverzeichnis.
cp /usr/src/linux-2.4.19-gentoo-r11/.config /usr/src/linux
Nun folgt die übliche Kernelkompilation:
make xconfig (zum Vornehmen von neuen Einstellungen)
bzw. make oldconfig (zum einlesen der alten Konfiguration)
make dep
make clean
make bzImage
make modules
make modules_install
mv /boot/bzImage /boot/bzImage.old
cp arch/i386/boot/bzImage /boot
Jetzt sollte auf jeden Fall ein reboot durchgeführt werden, um zu prüfen, ob alles geklappt hat. Falls nicht kann man mit einer bootdisk oder der CD neu starten und den alten Kernel wieder aktivieren, indem man ihn wieder umbenennt. Zumindest funktioniert, das wenn man grub als bootloader konfiguriert hat.
Neuinstallation anderer Systemkomponenten
Damit die Kernelmodule für die Fritz-Card DSL wieder richtig gefunden werden, muß fcdsl neu installiert werden. Dies erreicht man mit einem einfachen
emerge fcdsl
Spezielle Grafikkartentreiber müssen eventuell auch neu installiert werden. Auch hier gilt einfach nochmal emergen. Beispielsweise bei den ATI-Drivers mit emerge ati-drivers. Man sollte nicht vergessen die entsprechenden Umgebungsvariablen zu setzen. Im Fall der ATI-Drivers und einer ATI Radeon Karte geht das mit
VIDEO_CARDS="radeon" emerge xfree-drm
emerge ati-drivers
Bei eine NVIDIA Karte mit
emerge nvidia-kernel
Ähnlich verhält es sich beim Alsa Sounddriver hier muß ebenfalls die entsprechende Variable gesetzt sein.
env ALSA_CARDS='emu10k1' emerge alsa-driver
Hat man die SVGALIB installiert empfiehlt es sich mit
emerge svgalib
die Bibliothek neu zu übersetzen, da sonst das Kernelmodul fehlt.
Verwendet man lirc um mit einer Fernbedienung oder ähnlichem zu arbeiten, so muss auch dieses Paket neu installiert werden.
emerge lirc
Entfernen des alten Kernels
Den alten Kernel entfernt man mit
emerge -C =gentoo-sources-2.4.19-r11
Danach steht das Verzeichnis aber meist noch unter /usr/src/linux-2.4.19-gentoo-r11 und enthält jede Menge Dateien, die beim build erzeugt wurden. Das Verzeichnis kann man löschen. Die alten Module liegen unter /lib/modules/2.4.19-gentoo-r11. Dieses Verzeichnis kann auch gelöscht werden.