Panique du noyau - pas de synchronisation: VFS: impossible de monter le fs root sur un bloc inconnu (0,0)


98

Après avoir essayé de passer de 10h10 à 11h04, tout semblait aller bien jusqu'au redémarrage. Ce message d'erreur est ce qui apparaît:

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

Comment pouvons-nous résoudre ce problème?


1
Vos problèmes n’auront peut- être rien à voir avec votre système principal, mais plutôt avec votre support d’installation (clé USB) ... ➪ voir ici: askubuntu.com/a/632636/479118
Frank Nocke

Je ne peux pas poster de réponse car je n'ai pas assez de représentants, mais quand j'ai eu ce problème, je l'ai résolu en démarrant sur une clé USB active, en montant les partitions principale et EFI , en activant la mise en réseau et en exécutant la sudo apt-get install linux-image-genericmise à niveau vers la dernière version. noyau.
Owen

Réponses:


84

Il vous manque les initramfs pour ce noyau. Choisissez un autre noyau dans le menu GRUB sous Options avancées pour Ubuntu et exécutez-le sudo update-initramfs -u -k versionpour générer l'initrd pour version(remplacez versionpar la chaîne de version du noyau telle que 4.15.0-36-generic) puis sudo update-grub.


2
Que se passe-t-il si la panique du noyau est affichée lors de la sélection de l'option de noyau unique qui existe pour ce système d'exploitation (dans un scénario à démarrage multiple), comment peut-on lancer update-initramfs?
knocte

3
@Dew, pauvre commentaire ...
psusi

3
@knocte, voir la réponse de Tomeu Roig.
psusi

1
Cela ressemble à une mauvaise réponse mais c'est la vérité!
user3215

2
Je ne peux pas entrer Ubuntu Systemou Recovery Mode, comment puis-je exécuter cette commande pour vérifier si cela fonctionne?
Casper

53

Commencez avec un livecd, ouvrez un 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 

et maintenant vous pouvez créer update-initramfset mettre à jour grub sans erreur.

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

Si vous ne connaissez pas votre version. Utilisation:

dpkg --list | grep linux-image

Et juste mettre à jour Grub.

update-grub2

Redémarrez votre système.


1
J'ai ajouté sudo mount --bind /dev/pts /mnt/dev/ptset sudo mount --bind /sys /mnt/sysdans mon édition; sans cela, update-grub2s'est plaint.
Hbf

5
Comment puis-je trouver l' exact version ?
knocte

1
Si vous utilisez EFI, aucun des points de montage n'existe au-delà du premier / dev / sdax.
Paul Grégoire

@knocte essayez de ls /mnt/bootrechercher la dernière version du noyau. Ou si vous voulez le faire correctement, lire le menuentry 'Ubuntu'de/mnt/boot/grub/grub.cfg
Ciro Santilli新疆改造中心法轮功六四事件

Travaillé sur Ubuntu 14.04! Il initrdmanquait à /boot. La question est: comment est-il possible que le fichier ait tout simplement disparu? Je n'ai rien fait qui semblait dangereux.
Ciro Santilli a annoncé le

22

Dans ma situation, le problème était que /bootsa capacité était de 100%. Par conséquent, les 2 dernières mises à jour du noyau ne s'étaient pas terminées correctement. Par conséquent, au redémarrage, lorsque GRUB2 a sélectionné le dernier noyau, il a échoué.

J'ai résolu le problème en démarrant dans le noyau le plus ancien installé et en supprimant certains noyaux inutilisés à l'aide d'aptitude. En utilisant aptitude , après la désinstallation, dpkg a automatiquement essayé de configurer les paquets cassés et a réussi cette fois-ci.


3
C'était le plus proche de ma solution; il dpkg --configure -asuffisait de lancer le hook update-initramfs et de réparer le noyau endommagé.
Symmetric

Vous voulez dire que vous aviez une /bootpartition séparée, c'est ça?
Ciro Santilli du

1
C'était un serveur installé avant mon arrivée, et il a été configuré avec / boot sur sa propre partition et avec des mises à jour sans surveillance
sheepeatingtaz

3
Vous pouvez utiliser sudo apt-get autoremovepour supprimer les anciens noyaux au cas où vous manquiez d’espace /boot.
Florian Brucker

J'ai démarré dans un noyau plus ancien, fait un sudo apt-get autoremove, redémarré à nouveau (noyau plus ancien), puis un sudo apt-get dist-upgrade, et cela a fonctionné. C'était sur une petite machine de test que j'ai. Même problème cependant, 100%/boot
jmlumpkin

20

Au cas où cela se produirait après une mise à jour du noyau abandonnée (par exemple, un blocage du système en cours aptitude safe-upgrade),

  1. démarrer avec un noyau plus ancien et
  2. courir dpkg --configure -a.

La mise à niveau sera terminée, y compris la configuration des paramètres d’amorçage, comme expliqué par psusi .


1

Les messages de démarrage du noyau vous indiquent les disques que vous pouvez utiliser.

Par exemple, si, dans mon test, la configuration de la machine virtuelle Linux 4.17, je remplace le message correct root=/dev/vdapar root=/dev/vdble dernier message est:

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

Cependant , quelques lignes ci-dessus, il affiche des messages de type:

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

ce qui me dit tout de suite que vdbrien n’a été trouvé, mais qu’il en existe un /dev/vdaqui peut être lu grâce au virtio_blkdriver ( CONFIG_VIRTIO_BLK=y).


0

En plus des instructions de Tomeu, avant de me lancer dans le chroot, je devais:

sudo mount --bind /dev /mnt/dev

De plus, après le chroot:

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

( Obtenu ceci d'ici. )


1
Tomeu déjà mentionné le montage /devsur /mnt/dev.
Lekensteyn


0

J'ai eu ce problème parce que ma partition / boot était pleine donc mes mises à jour du noyau ont échoué. J'ai réussi à résoudre ce problème en démarrant depuis un ancien noyau dans le menu GRUB.

Quand j'ai réussi à démarrer, j'ai commencé à purger les anciens noyaux, mais j'avais quelques problèmes de dépendance. Je devais d'abord désinstaller le paquet linux-server.

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

Puis j'ai redémarré et tout fonctionnait bien!

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.