web-dev-qa-db-fra.com

Impossible de trouver le périphérique racine après la dernière mise à niveau du noyau

J'utilise Ubuntu 13.04. Hier, j'ai essayé d'installer des mises à jour mais une erreur s'est produite et il a été suggéré d'exécuter apt-get -f install, ce que j'ai fait.

Désormais, lorsque j'essaie de démarrer, le message d'erreur "Attend le périphérique racine" est affiché. Le texte est presque identique au texte montré dans this et this question. Cependant, le "shell intégré" ne fonctionne tout simplement pas! Rien de ce que je tape ne s'affiche à l'écran ou ne fait quoi que ce soit.

Le chargement du noyau précédent fonctionne (bien qu’il y ait quelques problèmes graphiques) mais, autant que je sache, il devrait démarrer exactement de la même manière. Le nouveau noyau est 3.8.0-31-generic et le précédent est 3.8.0-25-generic.

J'ai essayé d'ajouter un rootdelay au grub comme suggéré, mais il attend plus longtemps et affiche le même écran. Voici tout mon fichier /boot/grub/menu.lst, commentaires supprimés:

default     0
timeout     3

title       Ubuntu 13.04, kernel 3.8.0-31-generic
uuid        c690c1e6-beb9-46e7-85c2-145cd07d44ac
kernel      /boot/vmlinuz-3.8.0-31-generic root=UUID=c690c1e6-beb9-46e7-85c2-145cd07d44ac ro quiet splash 
initrd      /boot/initrd.img-3.8.0-31-generic
quiet

title       Ubuntu 13.04, kernel 3.8.0-31-generic (recovery mode)
uuid        c690c1e6-beb9-46e7-85c2-145cd07d44ac
kernel      /boot/vmlinuz-3.8.0-31-generic root=UUID=c690c1e6-beb9-46e7-85c2-145cd07d44ac ro  single
initrd      /boot/initrd.img-3.8.0-31-generic

title       Ubuntu 13.04, kernel 3.8.0-25-generic
uuid        c690c1e6-beb9-46e7-85c2-145cd07d44ac
kernel      /boot/vmlinuz-3.8.0-25-generic root=UUID=c690c1e6-beb9-46e7-85c2-145cd07d44ac ro quiet splash 
initrd      /boot/initrd.img-3.8.0-25-generic
quiet

title       Ubuntu 13.04, kernel 3.8.0-25-generic (recovery mode)
uuid        c690c1e6-beb9-46e7-85c2-145cd07d44ac
kernel      /boot/vmlinuz-3.8.0-25-generic root=UUID=c690c1e6-beb9-46e7-85c2-145cd07d44ac ro  single
initrd      /boot/initrd.img-3.8.0-25-generic

title       Ubuntu 13.04, kernel 3.8.0-23-generic
uuid        c690c1e6-beb9-46e7-85c2-145cd07d44ac
kernel      /boot/vmlinuz-3.8.0-23-generic root=UUID=c690c1e6-beb9-46e7-85c2-145cd07d44ac ro quiet splash 
initrd      /boot/initrd.img-3.8.0-23-generic
quiet

title       Ubuntu 13.04, kernel 3.8.0-23-generic (recovery mode)
uuid        c690c1e6-beb9-46e7-85c2-145cd07d44ac
kernel      /boot/vmlinuz-3.8.0-23-generic root=UUID=c690c1e6-beb9-46e7-85c2-145cd07d44ac ro  single
initrd      /boot/initrd.img-3.8.0-23-generic

title       Ubuntu 13.04, memtest86+
uuid        c690c1e6-beb9-46e7-85c2-145cd07d44ac
kernel      /boot/memtest86+.bin
quiet

title       --------------------------------
root

title       Windows Vista
rootnoverify    (hd0,2)
savedefault
makeactive
chainloader +1

Avec le rootdelay, la ligne dans la partie supérieure était:

kernel      /boot/vmlinuz-3.8.0-31-generic root=UUID=c690c1e6-beb9-46e7-85c2-145cd07d44ac rootdelay=120 ro quiet splash 

Comme vous pouvez le constater, l’UUID est le même pour tous les noyaux. Pourquoi ai-je ce problème et que puis-je faire pour le résoudre?

Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend
|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
||/ Name                                  Version                 Architecture            Description
+++-=====================================-=======================-=======================-===============================================================================
un  linux-image-2.6                       <none>                                          (no description available)
rc  linux-image-2.6.28-11-generic         2.6.28-11.42            i386                    Linux kernel image for version 2.6.28 on x86/x86_64
rc  linux-image-2.6.31-22-generic         2.6.31-22.65            i386                    Linux kernel image for version 2.6.31 on x86/x86_64
rc  linux-image-2.6.32-25-generic         2.6.32-25.44            i386                    Linux kernel image for version 2.6.32 on x86/x86_64
rc  linux-image-2.6.35-22-generic         2.6.35-22.35            i386                    Linux kernel image for version 2.6.35 on x86/x86_64
rc  linux-image-2.6.35-23-generic         2.6.35-23.41            i386                    Linux kernel image for version 2.6.35 on x86/x86_64
rc  linux-image-2.6.35-24-generic         2.6.35-24.42            i386                    Linux kernel image for version 2.6.35 on x86/x86_64
rc  linux-image-2.6.35-25-generic         2.6.35-25.44            i386                    Linux kernel image for version 2.6.35 on x86/x86_64
rc  linux-image-2.6.35-27-generic         2.6.35-27.48            i386                    Linux kernel image for version 2.6.35 on x86/x86_64
rc  linux-image-2.6.35-28-generic         2.6.35-28.50            i386                    Linux kernel image for version 2.6.35 on x86/x86_64
rc  linux-image-2.6.38-10-generic         2.6.38-10.46            i386                    Linux kernel image for version 2.6.38 on x86/x86_64
rc  linux-image-2.6.38-11-generic         2.6.38-11.50            i386                    Linux kernel image for version 2.6.38 on x86/x86_64
rc  linux-image-2.6.38-12-generic         2.6.38-12.51            i386                    Linux kernel image for version 2.6.38 on x86/x86_64
rc  linux-image-2.6.38-8-generic          2.6.38-8.42             i386                    Linux kernel image for version 2.6.38 on x86/x86_64
un  linux-image-3.0                       <none>                                          (no description available)
rc  linux-image-3.0.0-13-generic          3.0.0-13.22             i386                    Linux kernel image for version 3.0.0 on x86/x86_64
rc  linux-image-3.0.0-14-generic          3.0.0-14.23             i386                    Linux kernel image for version 3.0.0 on x86/x86_64
rc  linux-image-3.0.0-15-generic          3.0.0-15.26             i386                    Linux kernel image for version 3.0.0 on x86/x86_64
rc  linux-image-3.0.0-16-generic          3.0.0-16.29             i386                    Linux kernel image for version 3.0.0 on x86/x86_64
rc  linux-image-3.0.0-17-generic          3.0.0-17.30             i386                    Linux kernel image for version 3.0.0 on x86/x86_64
rc  linux-image-3.2.0-24-generic          3.2.0-24.39             i386                    Linux kernel image for version 3.2.0 on 64 bit x86 SMP
rc  linux-image-3.2.0-25-generic          3.2.0-25.40             i386                    Linux kernel image for version 3.2.0 on 32 bit x86 SMP
rc  linux-image-3.2.0-26-generic          3.2.0-26.41             i386                    Linux kernel image for version 3.2.0 on 32 bit x86 SMP
rc  linux-image-3.2.0-27-generic          3.2.0-27.43             i386                    Linux kernel image for version 3.2.0 on 32 bit x86 SMP
rc  linux-image-3.2.0-29-generic          3.2.0-29.46             i386                    Linux kernel image for version 3.2.0 on 32 bit x86 SMP
rc  linux-image-3.2.0-30-generic          3.2.0-30.48             i386                    Linux kernel image for version 3.2.0 on 32 bit x86 SMP
rc  linux-image-3.2.0-31-generic          3.2.0-31.50             i386                    Linux kernel image for version 3.2.0 on 32 bit x86 SMP
rc  linux-image-3.2.0-32-generic          3.2.0-32.51             i386                    Linux kernel image for version 3.2.0 on 32 bit x86 SMP
rc  linux-image-3.2.0-33-generic          3.2.0-33.52             i386                    Linux kernel image for version 3.2.0 on 32 bit x86 SMP
rc  linux-image-3.2.0-34-generic          3.2.0-34.53             i386                    Linux kernel image for version 3.2.0 on 32 bit x86 SMP
rc  linux-image-3.2.0-35-generic          3.2.0-35.55             i386                    Linux kernel image for version 3.2.0 on 32 bit x86 SMP
rc  linux-image-3.5.0-21-generic          3.5.0-21.32             i386                    Linux kernel image for version 3.5.0 on 32 bit x86 SMP
rc  linux-image-3.5.0-22-generic          3.5.0-22.34             i386                    Linux kernel image for version 3.5.0 on 32 bit x86 SMP
rc  linux-image-3.5.0-23-generic          3.5.0-23.35             i386                    Linux kernel image for version 3.5.0 on 32 bit x86 SMP
rc  linux-image-3.5.0-25-generic          3.5.0-25.39             i386                    Linux kernel image for version 3.5.0 on 32 bit x86 SMP
rc  linux-image-3.5.0-26-generic          3.5.0-26.42             i386                    Linux kernel image for version 3.5.0 on 32 bit x86 SMP
rc  linux-image-3.5.0-27-generic          3.5.0-27.46             i386                    Linux kernel image for version 3.5.0 on 32 bit x86 SMP
rc  linux-image-3.8.0-19-generic          3.8.0-19.30             i386                    Linux kernel image for version 3.8.0 on 32 bit x86 SMP
rc  linux-image-3.8.0-21-generic          3.8.0-21.32             i386                    Linux kernel image for version 3.8.0 on 32 bit x86 SMP
rc  linux-image-3.8.0-22-generic          3.8.0-22.33             i386                    Linux kernel image for version 3.8.0 on 32 bit x86 SMP
ii  linux-image-3.8.0-23-generic          3.8.0-23.34             i386                    Linux kernel image for version 3.8.0 on 32 bit x86 SMP
ii  linux-image-3.8.0-25-generic          3.8.0-25.37             i386                    Linux kernel image for version 3.8.0 on 32 bit x86 SMP
ii  linux-image-3.8.0-31-generic          3.8.0-31.46             i386                    Linux kernel image for version 3.8.0 on 32 bit x86 SMP
ii  linux-image-3.8.0-32-generic          3.8.0-32.47             i386                    Linux kernel image for version 3.8.0 on 32 bit x86 SMP
rc  linux-image-extra-3.5.0-21-generic    3.5.0-21.32             i386                    Linux kernel image for version 3.5.0 on 32 bit x86 SMP
rc  linux-image-extra-3.5.0-22-generic    3.5.0-22.34             i386                    Linux kernel image for version 3.5.0 on 32 bit x86 SMP
rc  linux-image-extra-3.5.0-23-generic    3.5.0-23.35             i386                    Linux kernel image for version 3.5.0 on 32 bit x86 SMP
rc  linux-image-extra-3.5.0-25-generic    3.5.0-25.39             i386                    Linux kernel image for version 3.5.0 on 32 bit x86 SMP
rc  linux-image-extra-3.5.0-26-generic    3.5.0-26.42             i386                    Linux kernel image for version 3.5.0 on 32 bit x86 SMP
rc  linux-image-extra-3.5.0-27-generic    3.5.0-27.46             i386                    Linux kernel image for version 3.5.0 on 32 bit x86 SMP
rc  linux-image-extra-3.8.0-19-generic    3.8.0-19.30             i386                    Linux kernel image for version 3.8.0 on 32 bit x86 SMP
rc  linux-image-extra-3.8.0-21-generic    3.8.0-21.32             i386                    Linux kernel image for version 3.8.0 on 32 bit x86 SMP
rc  linux-image-extra-3.8.0-22-generic    3.8.0-22.33             i386                    Linux kernel image for version 3.8.0 on 32 bit x86 SMP
ii  linux-image-extra-3.8.0-23-generic    3.8.0-23.34             i386                    Linux kernel image for version 3.8.0 on 32 bit x86 SMP
ii  linux-image-extra-3.8.0-25-generic    3.8.0-25.37             i386                    Linux kernel image for version 3.8.0 on 32 bit x86 SMP
ii  linux-image-extra-3.8.0-32-generic    3.8.0-32.47             i386                    Linux kernel image for version 3.8.0 on 32 bit x86 SMP
ii  linux-image-generic                   3.8.0.32.50             i386                    Generic Linux kernel image
4
DisgruntledGoat

D'accord, tout d'abord, il y a des tonnes de problèmes dans la liste de votre noyau, purgez-les:

Sudo apt-get purge linux-image-2.6.* linux-image-3.0.* linux-image-3.2.*

Les problèmes semblent avoir différentes causes, du logiciel au matériel, mais certains d'entre eux ne vous concernent pas car vous pouvez démarrer d'autres noyaux. Alors que faire?

Pendant que vous utilisez d’autres noyaux, supprimez et réinstallez le nouveau noyau:

 Sudo apt-get clean
 Sudo apt-get purge linux-image-3.8.0-31-generic linux-image-3.8.0-32-generic
 Sudo apt-get install linux-image-generic

La première ligne supprimera les paquets du noyau dans le cache local et veillera à ce que vous disposiez de suffisamment d'espace libre pour installer de nouveaux noyaux.

Maintenant, si vous voyez ce bloc:

Gave up waiting for root device. Common problems:
- Boot args (cat /proc/cmdline)
  - Check rootdelay= (did the system wait long enough?)
  - Check root= (did the system wait for the right device?)
- Missing modules (cat /proc/modules; ls /dev)
ALERT! /dev/disk/by-uuid/a0c70102-b5d8-4b82-a14c-225330e1c4d4 does not exist. Dropping to a Shell!


BusyBox v1.13.3 (Ubuntu 1:1.13.3-1ubuntu11) built-in Shell (ash)
Enter 'help' for a list of built-in commands.

(initramfs) _ 

Alors voici les "solutions" communes avec leurs causes:

  1. Vous avez essayé de résoudre le problème en utilisant rootdelay=, malheureusement cela ne fonctionne pas dans votre cas, car le problème pourrait être ailleurs.

    /boot/vmlinuz-3.8.0-31-generic root = UUID = c690c1e6-beb9-46e7-85c2-145cd07d44ac rootdelay = 120 ro éclaboussure tranquille
  2. Si vous utilisez un RAID (douteux car d'autres noyaux démarrent), cela pourrait poser problème. Déplacer la partition sur un système de fichiers non-raid devrait faire l'affaire. Ou vérifier si /etc/initramfs-tools/modules a le modules corrects puis exécuter Sudo update-initramfs -u.
  3. Lorsque vous utilisez le shell intégré (initramfs), vous pouvez taper exit et vous devez également l'initialiser. Encore une fois, les problèmes sont ailleurs.
  4. Cela pourrait être causé par de mauvais systèmes de fichiers. Exécuter fsck à partir d’un système actif devrait aider.
  5. Si vous supprimez quiet splash, vous obtiendrez encore plus de détails sur ce qui échoue exactement. Si vous rencontrez ce problème, supprimez le quiet splash de votre script grub, cela aiderait vraiment.
  6. Vous avez peut-être tout simplement oublié d'installer linux-image-extra-X.YY.Z-PP pour la version de votre noyau ou l'installation est incomplète pour une raison quelconque (rc en sortie de dpkg -l | grep linux-image). La chose féroce est que /boot/initrd.img-X.YY.Z-PP sera intégré dans les deux cas , mais pour votre matériel, les modules supplémentaires dans linux-image-extra pourraient être absolument nécessaire. Dans ce cas, vous devrez interpréter "Impossible de trouver le périphérique racine" comme "Impossible de trouver les pilotes ou modules supplémentaires nécessaires".

Voici quelques conseils que j'ai recueillis ici et là. Si vous rencontrez le même problème, veuillez utiliser le conseil 5 et donner le résultat complet des messages du noyau.

6
Braiam