Kernel Panic, YOU Update incl. Kernel-Patch
Hallo Thomas Hertweck, Hallo Liste. Mit Thomas meine ich Thomas Hertweck, denn beim Googeln habe ich Dein Howto zu Kernels gesehen, also kannst Du vielleicht bescheid wissen, wie mir zu Helfen ist. Nachdem ich gestern erstmal YOU unter 9.0 dazu bringen musste sich überhaupt mit dem Netz zu verbinden, habe ich das was an Patches da war größtenteils installiert. Zumindest das was sicherheitsrelevant war. Darunter war auch ein Kernel-Patch, bei dessen Beschreibung es auch explizit empfolen wurde, ihn zu installieren. So tat ich das und danach habe ich auch /sbin/lilo aufgerufen wie empfohlen. Bei diesem Aufruf kam dann auch schon die erste Warnung "Warning: LB32 assumed!". Weiss nicht ob sie früher schon mal vorgekommen ist oder nicht. Dann aber hat lilo beide Kernels (* und fail_safe) geladen und ich konnte ein reboot starten wie in der Patch-Beschreibung empfohlen. Das war's dann. Jetzt gibt es ein Boot-Problem. Das System meldet kmod: failed to exec /sbin/modprobe -s -k block-major-8, errno = 2 [.. jede menge failed-fehler ...] Kernel panic [..] und dann noch irgendwas von "root-option" etc. Dabei sieht die lilo.conf meines erachtens richtig aus. Weiter unten ist sie. Das System hat ein IDE-RAID - System an einem Promise Controller und die Platten sind sda3 und sdb3. Es wird wohl der SCSI-Adapter-Treiber sein. Den habe ich auf Diskette und musste ihn auch bei der SuSE installation am Anfang dazuladen. Was passiert wenn ich in lilo.conf boot=/dev/sda3 setze? Wird das RAID-System damit umgangen und kann das System auf einer Platte laufen? Zerstört es nicht die Integrität des RAID-Systems wenn es später wieder normal über den SCSI-Treiber läuft? Altes Kernel war wahrscheinlich (Standard SuSE 9.0 Proffes.): 2.4.21-99 Jetzt ist folgender in /boot: vmlinuz-2.4.21-303-smp4G Sowohl die Standard-Bootkonfiguration als auch die failsafe wollen nicht. Meine Fragen sind recht einfach. Kann man den SCSI-Treiber irgendwie zur Bootzeit von der Diskette laden? Oder vielleicht in den Kernel reinkompilieren? Mit Knoppix vielleicht? Wenn zu umständlich, dann würde ich gerne den alten Kernel wieder herausholen. Werden irgendwo Backup-Kopien von YOU angelegt? Ich habe leider keinen direkten zugrif auf den Rechner, aber jemanden der machen kann was ich sage. Deswegen brauche ich die einfachste Lösung um den rechner irgendwie wieder zu starten bis ich selbst wieder ran kann. Im /etc/boot - Ordner sind folgende Dateien. Ich glaube der alte Kernel ist nicht mehr dabei. backup_mbr 512 B boot.0800 512 B config-2.4.21-303-smp4G 50,1 KB initrd 368,8 KB initrd-2.4.21-303-smp4G 368,8 KB Kerntypes-2.4.21-303-smp4G 142,1 KB map 112,5 KB message 63,3 KB System.map-2.4.21-303-smp4G 627,7 KB vmlinux-2.4.21-303-smp4G.gz 1,4MB vmlinuz 1,2MB vmlinuz-2.4.21-303-smp4G 1,2MB Ich hoffe da lässt sich noch was machen. So etwas kann doch nicht ernst bei einem Online-Update-Feature passieren oder? Danke /etc/lilo.conf message = /boot/ message timeout=80 default = linux boot=/dev/sda image=/boot/vmlinuz ###Don´t change this comment - YaST2 indentifier: original name: ### label=linux initrd=/boot/initrd optional root=/dev/sda3 vga=0x31a append="splash=silent desktop showopts" image=/boot/vmlinuz ###Don´t change this comment - YaST2 indentifier: original name: ### label=failsafe initrd=/boot/initrd optional root=/dev/sda3 vga=normal append="showopts ide=nodma apm=off acpi=off nosmp noapic maxcpus=0 3" image=/boot/memtest.bin ###Don´t change this comment - YaST2 indentifier: original name: ### label=speichertest optional append= ""
Artur Cichosz wrote:
[...] Nachdem ich gestern erstmal YOU unter 9.0 dazu bringen musste sich überhaupt mit dem Netz zu verbinden, habe ich das was an Patches da war größtenteils installiert. Zumindest das was sicherheitsrelevant war. Darunter war auch ein Kernel-Patch, bei dessen Beschreibung es auch explizit empfolen wurde, ihn zu installieren. So tat ich das und danach habe ich auch /sbin/lilo aufgerufen wie empfohlen. Bei diesem Aufruf kam dann auch schon die erste Warnung "Warning: LB32 assumed!".
Das hiess sicher "LBA32 assumed". LBA steht fuer Logical Block Address und ist eine Adressierungsmethode fuer Festplatten.
[...] Jetzt gibt es ein Boot-Problem. Das System meldet
kmod: failed to exec /sbin/modprobe -s -k block-major-8, errno = 2 [.. jede menge failed-fehler ...] Kernel panic [..] und dann noch irgendwas von "root-option" etc.
Dabei sieht die lilo.conf meines erachtens richtig aus. Weiter unten ist sie. Das System hat ein IDE-RAID - System an einem Promise Controller und die Platten sind sda3 und sdb3.
Es wird wohl der SCSI-Adapter-Treiber sein. Den habe ich auf Diskette und musste ihn auch bei der SuSE installation am Anfang dazuladen.
Was ist bei Dir passiert? Aus meiner Sicht das Folgende: Du brauchst zum Ansprechen Deines RAIDs einen Treiber, der nicht im Kernel selbst enthalten ist, sondern als externes Modul vorliegt. Dieser Treiber fehlt nun beim neuen Kernel (in der initrd), den Du installiert hast, dementsprechend kann Dein System nicht mehr booten, weil es das RAID nicht erkennt und die Root-Partition daher nicht findet und mounten kann.
[...] Sowohl die Standard-Bootkonfiguration als auch die failsafe wollen nicht.
Logisch. Ohne passenden Treiber wird keine Einstellung mit dem neuen Kernel booten.
[...] Kann man den SCSI-Treiber irgendwie zur Bootzeit von der Diskette laden?
Das wird Dir nur helfen, wenn der Treiber auch zum Kernel passt. Ansonsten laesst er sich nicht nutzen, selbst wenn Du ihn laden koenntest.
Oder vielleicht in den Kernel reinkompilieren? Mit Knoppix vielleicht? Wenn zu umständlich, dann würde ich gerne den alten Kernel wieder herausholen. Werden irgendwo Backup-Kopien von YOU angelegt?
Du kannst versuchen, ueber die SuSE DVD zu booten, dort muesste sich ein externer Treiber theoretisch laden lassen, auch von Diskette (genau wie bei der Installation; danach aber das System von Festplatte booten, evtl. geht es dann). Falls Du so Dein System wieder zum Laufen bekommst und Booten kannst, musst Du das externe Modul fuer den neuen Kernel auf der Festplatte verfuegbar machen (evtl. fuer den neuen Kernel compilieren) und in die initrd einbauen. Beim Einsatz von closed-source Treibern, die zum Booten noetig sind (wie bei Dir), sollte man mit Kernel-Updates sehr vorsichtig sein und neue Kernel nicht per YOU installieren, sondern erst einmal parallel zum alten, wie im angesprochenen Howto beschrieben. Geht naemlich etwas schief, hat man sich selbst ausgeschlossen...
[...] Im /etc/boot - Ordner sind folgende Dateien. Ich glaube der alte Kernel ist nicht mehr dabei.
Das korrekte Verzeichnis ist /boot, nicht /etc/boot.
[...] So etwas kann doch nicht ernst bei einem Online-Update-Feature passieren oder?
Erklaerung siehe oben.
[...] message = /boot/ message timeout=80 default = linux boot=/dev/sda image=/boot/vmlinuz
###Don´t change this comment - YaST2 indentifier: original name: ### label=linux initrd=/boot/initrd optional root=/dev/sda3 vga=0x31a append="splash=silent desktop showopts" image=/boot/vmlinuz
###Don´t change this comment - YaST2 indentifier: original name: ### label=failsafe initrd=/boot/initrd optional root=/dev/sda3 vga=normal append="showopts ide=nodma apm=off acpi=off nosmp noapic maxcpus=0 3" image=/boot/memtest.bin
###Don´t change this comment - YaST2 indentifier: original name: ### label=speichertest optional append= ""
Diese lilo.conf ist definitiv inkorrekt. So laedt zum Beispiel die failsafe Option den Speichertest (image=/boot/memtest.bin) und die Speichertest Option ist unbrauchbar (da leer). Zu den RAID-Sachen kann ich wenig sagen, ich halte fuer den Privatgebrauch absolut nichts von einem RAID0, schon gar nicht mit einem Pseudo-RAID-Controller a la Promise... Vielleicht kann Dir ja die RAID-Fragen jemand anderes beantworten. Cheers, Th.
Hallo Thomas, danke für die Antwort, wollte si wirklich nicht erzwingen in keinster Art :) Thomas Hertweck schrieb:
[...] Was ist bei Dir passiert? Aus meiner Sicht das Folgende: Du brauchst zum Ansprechen Deines RAIDs einen Treiber, der nicht im Kernel selbst enthalten ist, sondern als externes Modul vorliegt. Dieser Treiber fehlt nun beim neuen Kernel (in der initrd), den Du installiert hast, dementsprechend kann Dein System nicht mehr booten, weil es das RAID nicht erkennt und die Root-Partition daher nicht findet und mounten kann. [...]
Das war zumindest größstenteils klar :)
Das wird Dir nur helfen, wenn der Treiber auch zum Kernel passt. Ansonsten laesst er sich nicht nutzen, selbst wenn Du ihn laden koenntest.
Es wurde doch nur ein Sicherheits-Patch von meinem alten Kernel gemacht. Wenn der Unterschied dabei so gravierend wurde, dass der alte Treiber nicht mehr funktioniert, dann hatte ich wohl besonders viel Pech. Ich habe immer noch Hoffnung, dass es nicht so ist. Den Treiber habe ich auf der Platte im Verzeichnis /lib/modules/2.4.21-99... Habe ihn dann ins Verzeichnis /lib/modules/2.4.21-303... des neuen Kernels mit der Hoffnung, es würde reichen - tut es aber nicht. Also werde ich das mit Booten von CD versuchen, wie Du auch vorschlägst und den Treiber im initrd installieren. Habe mich gestern noch durch den Blick ins Handbuch daran erinnert, dass man über die CD das installierte System booten kann. Da stand aber nicht wie man die initrd von Hand ergänzt. Ich habe Sie natürlich nicht gesichert, weil ich mich leider auf YOU verlassen habe. Eigentlich wäre logisch, dass er alle Treiber aus der alten in die neue initrd übernimmt, oder zumindest die alten nur umbenennt anstatt sie zu löschen. Da war eine Menge Beschreibung bei dem Patch dabei aber auch kein Wort darüber, dass man irgendwas sichern sollte. Wie kann ich den Treiber also jetzt von Hand in die initrd installieren? Wenn es nach dann immer noch nicht geht, dann werde ich sehen ob ich von Dell die Treiber Sourcen bekomme und den Treiber neu - kompilieren kann.
[...] Beim Einsatz von closed-source Treibern, die zum Booten noetig sind (wie bei Dir), sollte man mit Kernel-Updates sehr vorsichtig sein und neue Kernel nicht per YOU installieren, sondern erst einmal parallel zum alten, wie im angesprochenen Howto beschrieben. Geht naemlich etwas schief, hat man sich selbst ausgeschlossen... [...]
Genau. Diese Nachricht ist zwar wichtig in Handbüchern aber könnte auch rot und blinkend beim YOU-Update erscheinen bevor man ein Kernel-Patch anwählen kann. Es gibt immer eine Falle in die ich füher oder Später reintrete :)
[...] Diese lilo.conf ist definitiv inkorrekt. So laedt zum Beispiel die failsafe Option den Speichertest (image=/boot/memtest.bin) und die Speichertest Option ist unbrauchbar (da leer). [...]
Tja, die ist aber kein Stück von Hand editiert mit der ausnahme der default - Einstellung
[...] Zu den RAID-Sachen kann ich wenig sagen, ich halte fuer den Privatgebrauch absolut nichts von einem RAID0, schon gar nicht mit einem Pseudo-RAID-Controller a la Promise... Vielleicht kann Dir ja die RAID-Fragen jemand anderes beantworten. [...]
Na ja - solche Meinungen habe ich schon an vielen Stellen gesehen. Die Sache ist, dass es kein Privatgebrauch ist sondern unser interner Agentur-File-Server und ein Komplett-Server von Dell. Da war RAID ein muss und einigermassen Preiswert sollte es auch sein :) deswegen Promise. Schönes Wochenende Artur
Artur Cichosz wrote:
[...] Den Treiber habe ich auf der Platte im Verzeichnis /lib/modules/2.4.21-99... Habe ihn dann ins Verzeichnis /lib/modules/2.4.21-303... des neuen Kernels mit der Hoffnung, es würde reichen - tut es aber nicht.
Alles, was zum Booten benoetigt wird, muss entweder fest in den Kernel compiliert sein, oder in die Initial Ramdisk aufgenommen werden. Erst wenn das Root-Filesystem naemlich gemountet wurde, koennen auch weitere Module von Festplatte (nach)geladen werden.
[...] Da stand aber nicht wie man die initrd von Hand ergänzt.
"man mkinitrd" oder "mkinitrd -h"
[...] Eigentlich wäre logisch, dass er alle Treiber aus der alten in die neue initrd übernimmt, oder zumindest die alten nur umbenennt anstatt sie zu löschen.
Das System kann nicht einfach die alte initrd verwenden, weil Kernel-Module normalerweise explizit zur Kernel-Version passen muessen. Sonst koennen sie nicht geladen werden. Die Module, die in die initrd wandern, sind in /etc/sysconfig/kernel gelistet. Man kann theoretisch auch ueber die Kommandozeile bei mkinitrd die Module angeben, YOU bzw. das SuSE-System bezieht die Namen jedoch aus hier angegebener Konfigurationsdatei. Je nachdem, wie signifikant der Patch war oder ob es sich gar um einen komplett neuen Kernel gehandelt hat, kann das alte Modul funktionieren, oder eben auch nicht.
[...] Wie kann ich den Treiber also jetzt von Hand in die initrd installieren?
Wenn Du irgendwie Zugriff auf das RAID-System bekommst, dann ueber mkinitrd und entsprechende Kommandozeilen-Optionen, siehe oben.
[fehlerhafte lilo.conf]
Tja, die ist aber kein Stück von Hand editiert mit der ausnahme der default - Einstellung
Ist beim Kopieren in die Email etwas schief gegangen? Was ich in der Mail gesehen habe, erscheint mir jedenfalls suspekt. Cheers, Th.
participants (2)
-
Artur Cichosz
-
Thomas Hertweck