Kernel Panic - non sincronizzato: VFS: impossibile montare root fs su unknown-block (0,0)


97

Dopo aver tentato di aggiornare dalla 10.10 alla 11.04, tutto sembrava andare bene fino al riavvio. Questo messaggio di errore è ciò che viene visualizzato:

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

Come lo ripariamo?


1
I tuoi problemi potrebbero non avere nulla a che fare con il tuo sistema principale, ma piuttosto con il tuo media di installazione (chiavetta USB) ... ➪ vedi qui: askubuntu.com/a/632636/479118
Frank Nocke

Non riesco a pubblicare una risposta poiché non ho abbastanza rappresentante, ma quando ho riscontrato questo problema l'ho risolto avviando su una chiavetta USB live, montando le partizioni principali ed EFI , abilitando la rete ed eseguendo sudo apt-get install linux-image-genericl'aggiornamento alla versione più recente kernel.
Owen il

Risposte:


84

Manca l'initramfs per quel kernel. Scegli un altro kernel dal menu di GRUB sotto Opzioni avanzate per Ubuntu ed esegui sudo update-initramfs -u -k versionper generare initrd per version(sostituire versioncon la stringa di versione del kernel come 4.15.0-36-generic) quindi sudo update-grub.


2
cosa succede se viene mostrato il panico del kernel quando si seleziona l'opzione del kernel univoca esistente per quel sistema operativo (in uno scenario multi-boot), come si fa ad avviare update-initramfs?
Knocte,

3
@Dew, scarso commento ...
psusi

2
@knocte, vedi la risposta di Tomeu Roig.
psusi,

1
Sembra una risposta scadente ma è la verità!
user3215

2
Non riesco a inserire Ubuntu Systemo Recovery Mode, come posso eseguire quel comando per verificare se funziona?
Casper,

53

Inizia con un livecd, apri un terminale

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 

e ora puoi creare update-initramfse aggiornare-grub senza errori.

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

Se non conosci la tua versione. Uso:

dpkg --list | grep linux-image

E basta aggiornare Grub.

update-grub2

Riavvia il tuo sistema.


1
Ho aggiunto sudo mount --bind /dev/pts /mnt/dev/ptse sudo mount --bind /sys /mnt/sysnella mia modifica; senza questo, si è update-grub2lamentato.
Hbf,

4
come posso scoprire l' esatto version ?
Knocte,

1
Nessuno dei punti di montaggio esiste oltre il primo / dev / sdax se si utilizza EFI.
Paul Gregoire,

@knocte prova a ls /mnt/bootcercare l'ultima versione del kernel. Oppure, se si vuole fare in modo corretto, leggere il menuentry 'Ubuntu'da/mnt/boot/grub/grub.cfg
Ciro Santilli新疆改造中心法轮功六四事件

Ha funzionato su Ubuntu 14.04! Il initrdmancava /boot. La domanda è: come è possibile che il file sia semplicemente scomparso? Non ho fatto nulla che sembrava pericoloso.
Ciro Santilli 新疆 改造 中心 法轮功 六四 事件

22

Nella mia situazione il problema era che /bootera al 100% della capacità, quindi gli ultimi 2 aggiornamenti del kernel non erano stati completati correttamente, quindi al riavvio quando GRUB2 ha selezionato l'ultimo kernel, non è riuscito.

Ho risolto il problema avviando il kernel più vecchio installato e rimuovendo alcuni kernel inutilizzati usando aptitude. Usando aptitude , dopo che è avvenuta la disinstallazione, dpkg ha provato automaticamente a configurare i pacchetti rotti e questa volta ha avuto successo.


3
Questo era il più vicino alla mia soluzione; solo l'esecuzione dpkg --configure -aera sufficiente per innescare l'hook update-initramfs e riparare il kernel rotto.
Simmetrico

Vuoi dire che avevi una /bootpartizione separata, vero?
Ciro Santilli 新疆 改造 中心 法轮功 六四 事件

1
Era un server installato prima del mio arrivo, ed era configurato con / boot sulla propria partizione e aggiornamenti automatici
sheepeatingtaz,

3
Puoi usare sudo apt-get autoremoveper rimuovere i vecchi kernel in caso di esaurimento dello spazio /boot.
Florian Brucker,

Ho avviato un kernel più vecchio, fatto un sudo apt-get autoremove, riavviato di nuovo (kernel più vecchio), poi ho fatto un sudo apt-get dist-upgrade, e ha funzionato. Questo era su una piccola macchina di prova che ho. Stesso problema però, 100%/boot
jmlumpkin

19

Nel caso in cui ciò accadesse dopo un aggiornamento del kernel interrotto (ad es. Arresto anomalo del sistema durante aptitude safe-upgrade),

  1. avviare con un kernel più vecchio e
  2. corri dpkg --configure -a.

Questo completerà l'aggiornamento, inclusa la configurazione delle impostazioni di avvio come spiega psusi .


1

I messaggi di avvio del kernel indicano quali dischi è possibile utilizzare

Ad esempio, se nel mio test di installazione della macchina virtuale Linux 4.17 sostituisco il corretto root=/dev/vdacon root=/dev/vdbl'ultimo messaggio è:

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

Tuttavia , alcune righe sopra, mostra i messaggi di tipo:

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

che sostanzialmente mi dice chiaramente che vdbnon è stato trovato, ma che esiste un file /dev/vdache può essere letto a causa del virtio_blkdriver ( CONFIG_VIRTIO_BLK=y).


0

Oltre alle istruzioni di Tomeu, prima di chroot dovevo:

sudo mount --bind /dev /mnt/dev

Inoltre, dopo il chroot:

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

( Capito da qui. )


1
Tomeu già accennato il montaggio /devsu /mnt/dev.
Lekensteyn,


0

Ho riscontrato questo problema perché la mia partizione / boot era piena, quindi i miei aggiornamenti del kernel non erano riusciti. Sono riuscito a risolvere questo problema avviando da un vecchio kernel nel menu di GRUB.

Quando sono riuscito ad avviare ho iniziato a eliminare i vecchi kernel, ma ero riuscito a ottenere alcuni problemi di dipendenza, quindi prima ho dovuto disinstallare il pacchetto linux-server

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

Quindi ho riavviato e tutto funzionava bene!

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.