Hallo Ronny,
On Thu, Jan 12, 2012 at 19:00:11 +0100, Ronny Seffner wrote:
Gegeben ist ein Intelboard mit USB und FireWire, na beiden Schnittstellentypen stecken je eine externe Festplatte. Intern am SATA gibt es drei Festplatten. Das Betriebssystem (debian) hat nur eine Partition /dev/sda2, kein gesondertes /boot usw. Bootloader ist der grub 1,98 (also 2?) unter debian squeeze.
Und das Rootfilesystem ist auf einer der internen SATA-Platten?
Steckt beim Anschalten die USB-Platte am Rechner, lädt das grub-Menü, ich kann in dessen "shell" verifizieren, dass die richtige Platte "vorn" ist und wenn ich den Kern starte erhalte ich ne Kernelpanic:
... kernel panic - not syncing: vfs: unable to mount root fs on unknown-block(0,0) ...
Ohne USB-Platte alles kein Problem.
Eigentlich sollte Dich das initramfs in eine busybox-Shell schicken, wenn es das Rootfilesystem nicht findet. Hast Du einen eigenen Kernel ohne initramfs gebaut?
BTW, haben die extern ansteckenden Platten auch jeweils einen Bootloader installiert?
Die Idee: grub könnte die Platten ja anders sortiert sehen, als der zu startende Kern. Also habe ich mich für UUID entschieden. Das ging genau einmal und ich kann nicht sagen in welcher Konstellation, sagen wir also, das geht gar nicht.
Mich wundert, dass Squeeze das UUID-basierte mounten bei Dir nicht eh per Default benutzt hat. Bei mir tut es das.
Wie sah es aus, wenn das Rootfilesystem mit der UUID-Methode nicht gefunden wurde? Auch Kernel Panic?
Nun möchte ich aber unbedingt trotz der USB-Platte das System starten können ohne manuell das USB-Kabel zu ziehen und nach dem booten wieder zu stecken.
Man koennte Einfluss auf die Erstellung des initramfs nehmen und die Module fuer USB-Storage und Firewire-Storage dort blacklisten.
Warum geht UUID aus dem grub nicht, in der fstab steht es doch auch schon?
Die fstab ist im initramfs noch gar nicht zugreifbar. Das initramfs soll ja erst das Rootfilesystem finden und mounten, bevor es dann mit dem eigentlichen init-Prozess weitergeht. Das initramfs kann sich nur an die Kernel Commandline halten und die dort uebergebene UUID auf allen Blockdevices suchen. Warum das bei Dir im Fehlerfall mit einer Kernel Panic endet, ist mir unklar. Der Fallback ist wie gesagt eigentlich eine Emergency Shell.
Gruss, Chris