Kernel und QEMU: Root-Fs-Fehler kann nicht gemountet werden

7

Ich versuche, eine Distribution im Image der virtuellen Festplatte mit einem benutzerdefinierten Kernel auszuführen, damit ich den Kernel experimentieren und debuggen kann. Ich folgte diesem Beispiel , um ein Disk-Image zu erstellen und dann Debian darauf zu installieren. Jetzt habe ich versucht, die Distribution mit dem folgenden Befehl auszuführen: -

qemu-system-i386 -hda debian.img -kernel ../linux-3.6.11/arch/i386/boot/bzImage -append "root=/dev/sda1"

Zu meiner Enttäuschung gibt es einfach eine Kernel-Panik-nicht-Synchronisierung: VFS: Root-Fs können nicht auf Unbekannt-Block gemountet werden (8,1) . Wie kann ich das Problem beheben? Bin ich beim Kernel-Debugging auf dem richtigen Weg?

PaulDaviesC
quelle

Antworten:

4

Ich glaube nicht, dass Sie sofort mit dem Debuggen des Kernels beginnen müssten. Diese Fehlermeldung bedeutet, dass der Kernel die angeforderte Partition nicht bereitstellen kann /. Dies würde zum Beispiel passieren, wenn Sie ihm ein leeres Disk-Image geben (meine Vermutung ist, dass dies Ihr Fall ist) - der Kernel in der VM sieht ein nicht partitioniertes Laufwerk, es gibt kein /dev/sda1gerechtes /dev/sda. Um dies zu beheben, befolgen Sie die Anweisungen in der von Ihnen verwendeten Anleitung. Laden Sie ein bootfähiges ISO-Image herunter und installieren Sie damit das System im VM-Image. Wenn Raw - Disk - Bild verwendet wird, kann es direkt partitioniert wird mit Programmen wie gdisk, fdiskoder parted.

Eine andere Möglichkeit ist, dass Sie dort versuchen, ein Dateisystem zu mounten, für das der Kernel keinen Treiber hat. Dies geschieht normalerweise, wenn ein Kernel verwendet wird, der die meisten Treiber in ladbaren Modulen auf initrd hat und der initrd nicht geladen ist (daher kann der Kernel das jeweilige Dateisystem nicht verstehen).

Peterph
quelle
Ich habe debian auf dem Festplatten-Image debian.img installiert. Und der Kernel sagt, dass er die Partitionen sda, sda1, sda2 und sda5 identifiziert hat. Wenn das Problem beim Treiber liegt, wie kann ich es beheben?
PaulDaviesC
@PaulDC Versuchen Sie, einen anderen Kernel zu starten. Wenn Sie eine vollständige Installation von Debian durchführen würden, würde ich erwarten, dass auch der Kernel installiert wurde. Daher sollte es möglich sein, die VM überhaupt ohne die -kernelOption aufzurufen, da das VM-BIOS das installierte System sofort wie ein echtes BIOS starten kann - durch Laden des Bootloaders vom MBR (oder der EFI-Partition, obwohl das UEFI) Unterstützung in Qemu / KVM ist noch ziemlich neu (AFAIK).
Peterph
1
@PaulDC Übrigens können Sie den Kernel auch anweisen, sich an der seriellen Schnittstelle anzumelden und die VM so zu konfigurieren, dass die virtuelle serielle Schnittstelle in eine Datei (Pipe, was auch immer - siehe -serialOption in der QEMU-Manpage) umgeleitet wird , um die genaue Nachricht abzufangen. Und posten Sie es hier natürlich zur weiteren Überprüfung. :)
Peterph
Ja, ich habe vergessen, die initrd zu laden.
Psusi