Kernel Panic - nicht synchronisierbar: VFS: Root-Fs können nicht auf unknown-Block gemountet werden (0,0)

97

Beim Versuch, von 10.10 auf 11.04 zu aktualisieren, schien alles bis zum Neustart gut zu laufen. Diese Fehlermeldung erscheint:

Kernel Panic - not syncing: VFS: Unable to mount root fs on unknown-block(0,0)

Wie beheben wir das?

Jeffrywith1e
quelle
1
Ihre Probleme haben möglicherweise nichts mit Ihrem Hauptsystem zu tun, sondern mit Ihrem Installationsmedium (USB-Stick) ... ... siehe hier: askubuntu.com/a/632636/479118
Frank Nocke
Ich kann keine Antwort schreiben, da ich nicht genug Repräsentanten habe, aber als ich dieses Problem bekam, habe ich es gelöst, indem ich von einem Live-USB-Stick gebootet, die Haupt- und EFI-Partitionen gemountet , das Netzwerk aktiviert und das sudo apt-get install linux-image-genericUpgrade auf die neueste Version ausgeführt habe Kernel.
Owen

Antworten:

83

Ihnen fehlen die initramfs für diesen Kernel. Wählen Sie einen anderen Kernel aus dem GRUB-Menü unter " Erweiterte Optionen für Ubuntu" und führen Sie ihn aus sudo update-initramfs -u -k version, um die initrd für zu generieren version(ersetzen Sie sie versiondurch die Kernel-Versionszeichenfolge wie 4.15.0-36-generic) sudo update-grub.

Psusi
quelle
2
Was passiert, wenn die Kernel-Panik angezeigt wird, wenn die eindeutige Kernel-Option für dieses Betriebssystem ausgewählt wird (in einem Multi-Boot-Szenario)? Wie wird update-initramfs gestartet?
Knocte
3
@ Tau, schlechter Kommentar ...
Psusi
2
@knocte, Siehe Tomeu Roigs Antwort.
Psusi
1
Es sieht aus wie eine schlechte Antwort, aber es ist die Wahrheit!
User3215
2
Ich kann nicht eingeben Ubuntu Systemoder Recovery Modewie kann ich diesen Befehl ausführen, um zu testen, ob er funktioniert?
Casper
53

Beginnen Sie mit einer Live-CD, öffnen Sie ein Terminal

sudo fdisk -l
sudo mount /dev/sdax /mnt
sudo mount --bind /dev /mnt/dev
sudo mount --bind /dev/pts /mnt/dev/pts
sudo mount --bind /proc /mnt/proc
sudo mount --bind /sys /mnt/sys
sudo chroot /mnt 

und jetzt kannst du update-initramfsgrub fehlerfrei machen und updaten.

update-initramfs -u -k 2.6.38-8-generic (or your version)

Wenn Sie Ihre Version nicht kennen. Verwenden:

dpkg --list | grep linux-image

Und aktualisiere einfach Grub.

update-grub2

Starten Sie Ihr System neu.

Tomeu Roig
quelle
1
Ich habe hinzugefügt sudo mount --bind /dev/pts /mnt/dev/ptsund sudo mount --bind /sys /mnt/sysin meinem edit; ohne dies, update-grub2beschwerte sich.
Hbf
4
wie kann ich das genau herausfinden version?
Knocte
1
Keiner der Mount-Punkte existiert nach dem ersten / dev / sdax, wenn Sie EFI verwenden.
Paul Gregoire
@knocte versuche ls /mnt/bootnach der neuesten Kernel-Version zu suchen. Oder wenn Sie es richtig machen wollen, lesen Sie die menuentry 'Ubuntu'von/mnt/boot/grub/grub.cfg
Ciro Santilli新疆改造中心法轮功六四事件
Arbeitete auf Ubuntu 14.04! Das hat initrdgefehlt /boot. Die Frage ist: Wie ist es möglich, dass die Datei einfach verschwunden ist? Ich habe nichts getan, was gefährlich schien.
Ciro Santilli新疆改造中心法轮功六四事件
22

In meiner Situation war das Problem /boot100% ausgelastet, sodass die letzten 2 Kernel-Aktualisierungen nicht erfolgreich abgeschlossen wurden. Daher schlug der Neustart fehl, als GRUB2 den neuesten Kernel auswählte.

Ich habe das Problem behoben, indem ich den ältesten installierten Kernel gebootet und einige nicht verwendete Kernel mit aptitude entfernt habe. Mit aptitude hat dpkg nach der Deinstallation automatisch versucht, die defekten Pakete zu konfigurieren. Diesmal war es erfolgreich.

Schafeatingtaz
quelle
3
Dies war meiner Lösung am nächsten; Nur ausgeführt zu werden, dpkg --configure -areichte aus, um den Hook update-initramfs auszulösen und den defekten Kernel zu reparieren.
Symmetric
Sie meinen, Sie hatten eine separate /bootPartition, oder?
Ciro Santilli
1
Es war ein Server, der vor meiner Ankunft eingerichtet wurde, und er wurde mit / boot auf seiner eigenen Partition und unbeaufsichtigten Upgrades
konfiguriert
3
Mit können Sie sudo apt-get autoremovealte Kernel entfernen, falls Ihnen der Speicherplatz ausgeht /boot.
Florian Brucker
Ich habe einen älteren Kernel gebootet, einen ausgeführt sudo apt-get autoremove, erneut gebootet (älterer Kernel) und dann einen ausgeführt sudo apt-get dist-upgrade, und das hat funktioniert. Dies war auf einer kleinen Testmaschine, die ich habe. Gleiche Ausgabe, 100%/boot
jmlumpkin
19

Falls dies nach einem abgebrochenen Kernel-Update passiert ist (zB Systemabsturz während aptitude safe-upgrade),

  1. booten mit einem älteren Kernel und
  2. rennen dpkg --configure -a.

Damit ist das Upgrade abgeschlossen, einschließlich der Konfiguration der Starteinstellungen, wie von psusi erläutert .

Raphael
quelle
1

Die Kernel-Boot-Meldungen geben an, welche Festplatten Sie verwenden können

Wenn zum Beispiel in meinem Test Linux 4.17 virtuelle Maschine Setup ich die richtigen ersetzen root=/dev/vdamit root=/dev/vdbder letzten Nachricht ist:

---[ end Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(0,0)-

Doch vor ein paar Zeilen, zeigt es Nachrichten vom Typ:

VFS: Cannot open root device "vdb" or unknown-block(0,0): error -6
Please append a correct "root=" boot option; here are the available partitions:
fe00          524288 vda
 driver: virtio_blk

das sagt mir im grunde gleich, dass vdbdas nicht gefunden wurde, aber dass es eine /dev/vdagibt, die aufgrund des virtio_blktreibers gelesen werden kann ( CONFIG_VIRTIO_BLK=y).

Ciro Santilli ist ein Schauspieler
quelle
0

Zusätzlich zu Tomeus Anweisungen musste ich vor chroot:

sudo mount --bind /dev /mnt/dev

Zusätzlich nach der Chroot:

cp -r /usr/lib/i386-linux-gnu/pango /usr/lib/

( Habe das von hier. )

Jason
quelle
1
Tomeu erwähnte bereits die Montage /devan /mnt/dev.
Lekensteyn
0

Dieses Problem trat auf, weil meine / boot-Partition voll war und meine Kernel-Updates fehlgeschlagen waren. Ich habe es geschafft, dies durch Booten von einem alten Kernel im GRUB-Menü zu beheben.

Als ich es schaffte zu booten, habe ich angefangen, alte Kernel zu bereinigen, aber ich hatte es geschafft, einige Abhängigkeitsprobleme zu bekommen, so dass ich zuerst das Linux-Server-Paket deinstallieren musste

apt-get remove linux-server
apt-get update
apt-get -f install
apt-get upgrade

Dann habe ich neu gestartet und alles hat gut funktioniert!

Christopher Käck
quelle