Zwei Kernel parallel installieren: Unterschied zwischen den Versionen
(Die Überschrift "Das Verzeichnis /boot" wurde eingefügt, da der Text ab hier für beide Varianten gilt.) |
(Ergänzungen betreffend openSUSE 11.x, Löschung des doppelt vorhandenen ersten Satzes.) |
||
Zeile 1: | Zeile 1: | ||
{{Box Test|| | {{Box Test|| | ||
− | * [[openSUSE]] 10.2 | + | * [[openSUSE]] 10.2, 11.0, 11.1 |
* SUSE Linux 10.0 | * SUSE Linux 10.0 | ||
* SUSE Linux 9.3 | * SUSE Linux 9.3 | ||
}} | }} | ||
Autor: oc2pus | Autor: oc2pus | ||
− | |||
− | |||
Um mal mit einem kernel-of-the-day oder einem selbsterstellten Kernel rumzuspielen, sollte man sich einen kleinen Rettungsanker basteln. | Um mal mit einem kernel-of-the-day oder einem selbsterstellten Kernel rumzuspielen, sollte man sich einen kleinen Rettungsanker basteln. | ||
Zeile 40: | Zeile 38: | ||
Durch die Installation werden die Links <code>vmlinuz</code> und <code>initrd</code> im Verzeichnis <code>/boot</code> angelegt. D.h der zuletzt installierte Kernel wird immer unter dem Namen <code>vmlinuz</code> zu finden sein. | Durch die Installation werden die Links <code>vmlinuz</code> und <code>initrd</code> im Verzeichnis <code>/boot</code> angelegt. D.h der zuletzt installierte Kernel wird immer unter dem Namen <code>vmlinuz</code> zu finden sein. | ||
− | Unser <code>/boot</code> | + | Unser Verzeichnis <code>/boot</code> sollte nun so aussehen: |
ls -al /boot | ls -al /boot | ||
Zeile 69: | Zeile 67: | ||
Wichtig ist, zu kontrollieren, dass <code>vmlinuz</code> auf den neuesten installierten Kernel zeigt. Gleiches gilt für <code>initrd</code>. | Wichtig ist, zu kontrollieren, dass <code>vmlinuz</code> auf den neuesten installierten Kernel zeigt. Gleiches gilt für <code>initrd</code>. | ||
− | + | Bei älteren (open)SUSE-Versionen wird die Verknüpfung verwendet, daher ist der Eintrag für den neuen Kernel (<code>vmlinuz</code>) in der Regel bereits in der <code>/boot/grub/menu.lst</code> enthalten. Damit unser alter Kernel aber ebenfalls im GRUB-Menü ausgewählt werden kann, ist eine kleine Änderung an der <code>/boot/grub/menu.lst</code> erforderlich. Es muss ein zusätzlicher Eintrag für den alten Kernel erstellt werden. Für unser Beispiel sollten die Einträge in der <code>/boot/grub/menu.lst</code> so aussehen: | |
− | Damit unser | ||
− | |||
− | Für unser Beispiel sollten die Einträge in der <code>/boot/grub/menu.lst</code> so aussehen: | ||
title linux-kernel-of-the-day | title linux-kernel-of-the-day | ||
Zeile 82: | Zeile 77: | ||
initrd (hd0,0)/initrd-2.6.5-7.104-default | initrd (hd0,0)/initrd-2.6.5-7.104-default | ||
− | Nun kann man jederzeit einen neuen (experimentellen) Kernel installieren und hat den SuSE-default | + | Neuere openSUSE-Versionen schreiben nicht die Verknüpfung, sondern den vollständigen Dateinamen in die <code>/boot/grub/menu.lst</code>, daher muss zusätzlich zum vorhandenen Eintrag für den alten Kernel ein Eintrag für den neuen Kernel erstellt werden. |
+ | |||
+ | Nun kann man jederzeit einen neuen (experimentellen) Kernel installieren und hat den Kernel "SuSE-default" in der Hinterhand. | ||
---- | ---- | ||
[[Kernel|zurück zum Kernel]] | [[Kernel|zurück zum Kernel]] | ||
[[Category:Kernel]] | [[Category:Kernel]] |
Version vom 24. Juli 2009, 21:49 Uhr
Diese Beschreibung wurde mit folgenden Distributionen getestet: |
|
Autor: oc2pus
Um mal mit einem kernel-of-the-day oder einem selbsterstellten Kernel rumzuspielen, sollte man sich einen kleinen Rettungsanker basteln. D.h. man hat mehrere Kernel zur Auswahl und kann im Falle eines Falles einen funktionsfähigen Kernel zum Booten verwenden.
Erste Variante
Am einfachsten geht es, indem man ohne "den alten ohne Anker aus der rpm-db rauszuwerfen" (--justdb
in der zweiten Variante), und einfach den neuen gewünschten Kernel installiert (Tip von j.engelh):
rpm -ihv kernel-default-2.6.18.6-jen43.i586.rpm
Wenn dieser Kernel beim nächsten Reboot funktioniert, dann kann man den anderen Kernel mit folgendem Befehl entfernen:
rpm -e kernel-default-2.6.18.2-34
Und wer seinen Kernel selbst kompilieren will, der sollte sich das hervorragende HOWTO von gimpel anschauen:
Zweite Variante
Dazu wird zunächst der aktuelle Kernel aus der RPM-Datenbank entfernt.
rpm -e --justdb kernel-default
Die Dateien und Module des Kernels bleiben auf der Festplatte, nur der Datenbankeintrag verschwindet! Dies ist erforderlich, da sonst bei einem Kernel-Update genau dieses Dateien gelöscht würden und der neue Kernel installiert würde. Allerdings muss man den alten Kernel dann auch von Hand entfernen, wenn man diesen nicht mehr benötigt.
Nehmen wir an unser aktueller Kernel sei kernel-2.6.5-7.104-default
.
Da wir jetzt keinen RPM-Datenbank Eintrag mehr besitzen, können wir den neuen Kernel installieren. Entweder mit apt oder YaST oder via Kommandozeilen-Befehl rpm -i kernel-default-2.6.x-y-default.i586.rpm
.
Das Verzeichnis /boot
Durch die Installation werden die Links vmlinuz
und initrd
im Verzeichnis /boot
angelegt. D.h der zuletzt installierte Kernel wird immer unter dem Namen vmlinuz
zu finden sein.
Unser Verzeichnis /boot
sollte nun so aussehen:
ls -al /boot total 11246 drwxr-xr-x 4 root root 2048 Dec 10 07:03 . drwxr-xr-x 22 root root 512 Dec 10 08:06 .. -rw-r--r-- 1 root root 115852 Jul 28 20:57 Kerntypes-2.6.5-7.104-default -rw-r--r-- 1 root root 741449 Jul 28 20:50 System.map-2.6.5-7.104-default -rw-r--r-- 1 root root 740002 Dec 9 19:45 System.map-2.6.8-20041209164842-default lrwxrwxrwx 1 root root 1 Jun 7 2004 boot -> . -rw-r--r-- 1 root root 55554 Jul 28 20:57 config-2.6.5-7.104-default -rw-r--r-- 1 root root 57559 Dec 9 20:01 config-2.6.8-20041209164842-default drwxr-xr-x 2 root root 1024 Oct 14 08:23 grub lrwxrwxrwx 1 root root 35 Dec 10 07:03 initrd -> initrd-2.6.8-20041209164842-default -rw-r--r-- 1 root root 1383501 Aug 4 07:14 initrd-2.6.5-7.104-default -rw-r--r-- 1 root root 1385622 Dec 10 07:03 initrd-2.6.8-20041209164842-default drwx------ 2 root root 12288 Mar 11 2003 lost+found -rw-r--r-- 1 root root 84480 Jul 20 19:46 message -rw-r--r-- 1 root root 83147 Jul 2 2003 message.SuSEconfig.2003.07.09-14.54 -rw-r--r-- 1 root root 79374 Jul 28 20:58 symvers-2.6.5-7.104-i386-default.gz -rw-r--r-- 1 root root 79146 Dec 9 20:03 symvers-2.6.8-20041209164842-i386-default.gz -rw-r--r-- 1 root root 1738635 Jul 28 20:57 vmlinux-2.6.5-7.104-default.gz -rw-r--r-- 1 root root 1856926 Dec 9 20:01 vmlinux-2.6.8-20041209164842-default.gz lrwxrwxrwx 1 root root 36 Dec 10 07:00 vmlinuz -> vmlinuz-2.6.8-20041209164842-default -rw-r--r-- 1 root root 1469887 Jul 28 20:50 vmlinuz-2.6.5-7.104-default -rw-r--r-- 1 root root 1556730 Dec 9 19:45 vmlinuz-2.6.8-20041209164842-default
Wichtig ist, zu kontrollieren, dass vmlinuz
auf den neuesten installierten Kernel zeigt. Gleiches gilt für initrd
.
Bei älteren (open)SUSE-Versionen wird die Verknüpfung verwendet, daher ist der Eintrag für den neuen Kernel (vmlinuz
) in der Regel bereits in der /boot/grub/menu.lst
enthalten. Damit unser alter Kernel aber ebenfalls im GRUB-Menü ausgewählt werden kann, ist eine kleine Änderung an der /boot/grub/menu.lst
erforderlich. Es muss ein zusätzlicher Eintrag für den alten Kernel erstellt werden. Für unser Beispiel sollten die Einträge in der /boot/grub/menu.lst
so aussehen:
title linux-kernel-of-the-day kernel (hd0,0)/vmlinuz root=/dev/sda7 vga=788 initrd (hd0,0)/initrd
title linux-SuSE-default kernel (hd0,0)/vmlinuz-2.6.5-7.104-default root=/dev/sda7 vga=788 initrd (hd0,0)/initrd-2.6.5-7.104-default
Neuere openSUSE-Versionen schreiben nicht die Verknüpfung, sondern den vollständigen Dateinamen in die /boot/grub/menu.lst
, daher muss zusätzlich zum vorhandenen Eintrag für den alten Kernel ein Eintrag für den neuen Kernel erstellt werden.
Nun kann man jederzeit einen neuen (experimentellen) Kernel installieren und hat den Kernel "SuSE-default" in der Hinterhand.