
Je suis tombé sur cette erreur dimanche après midi en démarrant mon "média center" sous xbmc, j'étais bien incrédule car la machine démarrait parfaitement la veille et les jours d'avant et pour ajouter à la bizarrerie de la chose, je ne touche pas à cette machine. J'entends par là que je ne fais que l'utiliser simplement.
Ayant googlé un petit peu la chose, voilà deux types de solution que j'ai trouvé :
Première Solution
La première qui revient souvent est de modifier menu.lst pour que Grub disent au kernel de prendre un peu de temps à attendre le disque si il n'est pas là. Ca se fait simplement en ajoutant :
rootdelay=90 dans votre menu.lst, ce qui donne :
title Ubuntu 8.10, kernel 2.6.27-11-generic
uuid 105e82bc-3131-428f-ad9e-aa5f55833421
kernel /boot/vmlinuz-2.6.27-11-generic root=UUID=105e82bc-3131-428f-ad9e-aa5f55833421 ro quiet splash rootdelay=90
initrd /boot/initrd.img-2.6.27-11-generic
quiet
Mais...ca n'a pas marché, comme vous le voyez, ça doit marcher pour les anciennes versions du kernel mais pour les nouvelles... C'est un bug assez aléatoire (point de vue utilisateur) de la part de Grub. Du coup, l'idée est de démarrer sur un LiveCD pour monter son disque dur dans un chroot afin de réparer un peu tout ça ! Faîtes attention, desfois ça peut être causé par une mise à jour des paquets qui se fait dans votre dos (ubuntu a tendance à faire ça dans ces nouvelles versions :/).
Deuxième Solution
Je vous laisse démarrer sur un LiveCD (CD ou USB hein, une distrib de secours quoi). On ouvre un petit terminal parce que de toute façon, on ne se servira que de cela :
Trouver votre partition root (celle qui vous pose soucis quoi) :
sudo fdisk -l
Un petit coup de fsck pour réparer votre filesystem, au cas où... : (Remplacer sda1 par votre partoche hein !)
sudo fsck /dev/sda1
Maintenant, on va chrooter gentiment :
sudo mount /dev/sda1 /mnt
sudo mount --bind /dev /mnt/dev
sudo chroot /mnt
Et finalement...on répare son Grub :
update-grub
Un petit coup de Ctrl+D pour se déloguer, vous démontez ce que vous venez de monter :
sudo umount /mnt/dev
sudo umount /mnt
On reboot et on prie ! Dans mon cas, j'ai pu regarder Matrix en 1080p sans soucis :D.
Note : Pour ceux qui ne sont pas familier avec le concept de chroot, une explication très rapide. chroot (change root) permet en fait d'isoler une éxécution. Que ce soit un programme que l'on souhaite mettre dans une "prison" pour éviter qu'un hacker puisse y accéder où encore, d'isoler un système entier.
Par exemple ici, on change le root du LiveCD pour changer de distribution. On se "logue" sur la distrib qui est sur votre disque dur et qui refuse de démarrer. Cela nous permet d'executer update-grub sur notre disque dur comme si on avait démarré dessus mais sans l'avoir fait puisque on ne le pouvait pas.
Grosso modo, si votre porte de voiture est coincé mais que le coffre s'ouvre toujours... C'est un petit peu la même idée qu'on applique ici.

/var/www/flickr