Sie haben nicht viele Informationen mit Protokollen und dergleichen bereitgestellt, um fortzufahren, aber ich vermute, dass dieser Fehler höchstwahrscheinlich darauf zurückzuführen ist, dass der Kernel durch ein IDE / SATA-Laufwerk verwirrt ist. Eine schnelle Google-Suche führte mich zu Link 1 , Link 2 , Link 3
Höchstwahrscheinlich eines der am häufigsten auftretenden Probleme (aber sobald Sie es gelöst haben, werden Sie es höchstwahrscheinlich nie wieder sehen):
Unable to mount root fs on unknown-block(0,0)
oder
VFS: Cannot open root device "sda3" or unknown-block(8,3)
Please append a correct "root=" boot option; here are the available partitions:
sda driver: sd
sda1 sda2
Die Ziffern 0,0
oder 8,3
können in Ihrem Fall unterschiedlich sein - es bezieht sich auf das Gerät, auf das der Kernel zugreifen möchte (und das fehlschlägt). Im Allgemeinen kann man sagen, dass der Kernel die Hardware nicht identifizieren kann, wenn die erste Ziffer 0 ist. Wenn es sich um eine andere Ziffer handelt (z. B. 8), kann das Dateisystem nicht identifiziert werden (es kann jedoch auf die Hardware zugegriffen werden).
Das Problem hierbei ist, dass der Kernel, den Sie booten, den von root=/dev/...
Ihnen angegebenen Parameter (innerhalb der Bootloader-Konfiguration) nicht in ein echtes, zugängliches Dateisystem übersetzen kann. Mehrere Gründe können zu einem solchen Fehler führen:
- In der Kernelkonfiguration fehlen Treiber für Ihren Festplattencontroller (Fälle 1, 4, 5).
- In der Kernelkonfiguration fehlen Treiber für den von Ihrem Festplattencontroller verwendeten Bus
- In der Kernelkonfiguration fehlen Treiber für das von Ihnen verwendete Dateisystem
- Das Gerät ist in Ihrem root = -Parameter falsch identifiziert (Fälle 2, 3).
Die Lösung des Problems ist einfach, wenn Sie den Grund kennen. Das ist höchstwahrscheinlich nicht der Fall. Hier ist eine kurze Überprüfung.
Öffnen Sie den Kernel-Konfigurationsassistenten (den Teil make menuconfig ), damit Sie die Kernel-Konfiguration entsprechend aktualisieren können.
- Überprüfen Sie, ob Sie den Bus / das Protokoll, den Ihr Festplattencontroller verwendet, integriert haben (und nicht als Modul).
- Dies ist höchstwahrscheinlich PCI-Unterstützung, SATA-Unterstützung (die unter der SCSI-Geräteunterstützung liegt), ...
- Überprüfen Sie, ob Sie Unterstützung für den von Ihnen verwendeten Festplattencontroller eingebaut haben (und nicht als Modul). Einer der häufigsten Fälle: Sie haben die Unterstützung für Ihr Festplattencontrollerprotokoll (IDE, SATA, SCSI, ...) ausgewählt, aber vergessen
, den Festplattencontrollertreiber selbst (wie Intel PIIX) auszuwählen. Versuchen Sie
den folgenden lscpi Befehl ausgeführt wird , und fügen Sie die Ausgabe auf
http://kmuto.jp/debian/hcl/ . Die Site zeigt Ihnen, welche Kerneltreiber Sie für Ihr System auswählen müssen. In der menuconfig können
Sie "/" eingeben, um die Suchfunktion zu öffnen, und den Treibernamen eingeben,
um herauszufinden, wo sie sich befindet.
# lspci -n
- Überprüfen Sie, ob Sie die von Ihnen verwendeten Dateisysteme (und nicht als Modul) unterstützt haben.
- Angenommen, Ihr Root-Dateisystem verwendet btrfs (was ich definitiv nicht empfehle), aber Sie haben es nicht ausgewählt oder als
Modul ausgewählt, dann wird der angezeigte Fehler angezeigt. Stellen Sie sicher, dass die Dateisystemunterstützung
im Kernel integriert ist.
Überprüfen Sie, ob der Kernel-Parameter für root=
auf die richtige Partition verweist.
Das ist nicht so dumm, wie es sich anhört. Wenn Sie mit einem Kernel gestartet werden, werden Ihre Festplatten möglicherweise als / dev / sda aufgelistet, während Ihr (konfigurierter) Kernel erwartet, dass sie / dev / hda sind. Dies liegt nicht daran, dass Kernel nicht miteinander übereinstimmen, sondern an den verwendeten Treibern: Ältere Treiber verwenden die hda-Syntax, neuere sda.
Versuchen Sie, hda mit sda zu wechseln (und hdb mit sdb und ...).
Außerdem geben aktuelle Kernel einen Überblick über die Partitionen, die sie auf dem Gerät gefunden haben. Wenn dies der Fall ist, können Sie möglicherweise feststellen, ob Sie eine Partition falsch ausgewählt haben (im Beispiel am Anfang dieses Abschnitts werden nur zwei Partitionen gefunden, während der Kernel angewiesen wurde, die dritte Partition zu starten). Wenn dies nicht der Fall ist, liegt dies höchstwahrscheinlich daran, dass der Kernel das Gerät zunächst nicht kennt (daher kann er nicht versuchen, Partitionen anzuzeigen).
Überprüfen Sie, ob der Kernel, der vom Bootloader gestartet wird, der richtige Kernel ist. Ich habe Leute gesehen, die nach dem Erstellen eines ersten Kernels (der nicht bootet) vergessen, dass sie mounten müssen, /boot
bevor sie den Kernel mit einem neuen überschreiben. Infolgedessen kopieren sie den Kernel in das Root-Dateisystem ( /
), während der Bootloader weiterhin erwartet, dass sich das Kernel-Image auf der /boot
Partition befindet.