19.7.2010 Linux trotz grub Fehlermeldung „kernel must be loaded before booting“ manuell booten

Wenn man einen Datenträger nicht auf einem anderen als dem Zielsystem bootfähig gemacht hat, passiert es oft, dass beim booten auf dem Zielsystem die folgende Fehlermeldung erscheint: kernel must be loaded before booting.

Ursache ist, dass der Kernel – das eigentliche Betriebssystem – aufgrund einer anderen Gerätezuordnung nicht gefunden werden kann. Als Lösung kann man einmalig den Kernel mit dem Bootloader grub manuell booten, z.B. so:

root (hd0,0)
kernel /boot/vmlinuz-2.6.32-22-generic ro root=/dev/sda1
initrd /boot/initrd-2.6.32-22-generic.img
boot

hd0,0 bedeutet dabei, dass von der ersten Partition der Festplatte gebootet werden soll, was ggf. angepasst werden muss. /boot/vmlinuz-2.6.32-22-generic ist ein Beispiel-Dateiname für einen Kernel. Hier am besten einfach /boot/vmlinuz- gefolgt von TAB eingeben, dann werden alle Kernel auf dem zuvor eingestellten Gerät aufgelistet. /dev/sda1 ist dann nach Linux Device-Filesystem-Namenskonvention wieder dasselbe wie zuvor schon hd0,0, evtl. muss hier auch /dev/hda1 stehen, oder eine ganz andere Partition – eben je nachdem von welcher Partition auf welchem Gerät man booten möchte. /boot/initrd-2.6.32-22-generic.img ist dann wieder beispielhaft das Init-Filesystem, passend zum vorher gewählten Kernel; auch hier kann wieder TAB helfen.

Wenn das System dann neu gebootet ist, kann man grub veranlassen, diese Werte fest in die Boot-Konfiguration zu schreiben:

sudo grub-install --recheck /dev/sda

Hier muss natürlich /dev/sda wieder durch das Gerät ersetzt werden, auf welchem grub installiert werden soll.

Beim nächsten Neustart sollte nun ohne manuellen Eingriff von dem Datenträger booten.

(Insbesondere da diese Anleitung leider von den konkreten Geräte-, Partitons- und Kernelnamen abhängig ist, kann ich leider keine Haftung übernehmen. Da jedoch lediglich der Bootloader und die grub-Config neu geschrieben wird, kann es unter normalen Umständen auch keinen echten Datenverlust geben.)