Begin: Running /scripts/local-block ... done

Et cette ligne se répète en boucle jusqu'à ce qu'on en ait marre de la voir.
Il faut tout d'abord récupérer l'UUID du swap

# blkid
...
/dev/sdc5: UUID="2d04d22f-0c7c-4dcd-a47c-8aab486354a6" TYPE="swap" PARTUUID="4be8ee61-05"
...

Dans le fichier /etc/initramfs-tools/conf.d/resume, écrire le bon UUID :

RESUME=UUID=2d04d22f-0c7c-4dcd-a47c-8aab486354a6

enfin faire la commande :

update-initramfs -u

et rebooter.

Begin: Running /scripts/local-block ... done

Grub rescue

Comme une poule devant un mégot face à cet invite plus qu'étrange, il m'aura tout de même fallu quelques années pour arriver à percer ce profond mystère qui se cache derrière une install ratée ou une installation de grub peu aboutie (la dernière en date pour moi, et sur une Debian neuve, qui plus est).

Voilà donc enfin l'article qui va vous sauver.

Tout commence par essayer de savoir ce que votre machine préférée a en tête. Pour cela, une seule commande :

>set

Ici, vous devriez avoir l'idée du disque sur lequel le boot essaye de se faire ainsi que le répertoire du grub introuvable. Voici le résultat chez moi :

cmdpath=(hd0)
prefix=(hd0)/boot/grub
root=(hd0)

Le hd0 correspond au disque /dev/sda renvoyé par un fdisk -l. hd1 correspond à /dev/sdb et ainsi de suite.

De toute évidence le boot ne se fait pas ici, il faut donc trouver où il se cache.

Pour visiter vos disques, une seule commande :

>ls

Ici, vous verrez non seulement les disques mais aussi les partitions.

Voici la réponse chez moi :

(hd0)   (hd0,msdos1)   (hd1)   (hd1,msdos1)   (hd2)   (hd2,msdos5)   (hd2,msdos6)   (hd2,msdos3)   (hd2,msdos2)   (hd2,msdos1)   (hd3)   (hd3,msdos1)

Je sais que c'est très parlant pour le novice donc j'explique :

Mes disques hd0, hd1 et hd3 contiennent une seule partition : msdos1, alors que mon disque hd2 contient 5 partitions msdos1,2,3,5 et 6. Pour mon cas il est facile de reconnaître le disque qui doit booter, c'est le 2. C'est celui que j'avais choisi pour installer mon système, je l'avais partitionné avant. Etant le seul à contenir plusieurs partitions, on le reconnait assez vite. Le problème se complique si on a plusieurs combinaisons avec des disques ayant le même nombre de partitions et même peut-être plusieurs systèmes linux. Dans ce cas, une solution s'impose, lancer un Live CD ou USB puis récupérer l'ordre de ses disques avec la commande fdisk -l.

Revenons au cas concret que j'expose. Etant conscient de ce que j'ai partitionné (c'est à dire, d'abord un swap puis ma partition racine), il est évident que ma partition de boot est la seconde du disque 2. Pour vérifier, on tape :

>ls (hd2,msdos2)/

Ah oui, j'oubliais, le clavier est en qwerty. Ça fait bizarre hein ! Alors rien que pour vous :

  • shift + 9 -> (
  • shift + 0 -> )
  • , -> m
  • ; -> ,

Quand on sait ça, c'est déjà plus rapide.

Par contre, pour faire le /, j'ai branché un clavier avec pavé numérique.

Voici la réponse du prompt :

home/  usr/  media/  opt/  srv/  bin/  lib/  vmliuz  boot/  mnt/  proc/  sys/  dev/  var/  run/  etc/  tmp/  initrd.img

Le répertoire boot est bien là, c'est la bonne nouvelle.

Petite parenthèse, lorsque je tape help, je devrais avoir la liste des commande. Pour une raison que je ne connais pas, voici ce que j'ai :

>help
unknown command 'help'

Etant donné que je suis sur le bon disque, je passe la commande suivante :

>set root=hd2,msdos2

>set prefix=(hd2,msdos2)/boot/grub

Le prompte me rend la main, je continue ma visite de la partition :

>ls (hd2,msdos2)/boot
vmlinuz-3.16.0-4-amd64  config-3.16.1-4-amd64  grub/  system.map-3.16.0-4-amd64  initrd.img-3.16.0-4-amd64

Le noyau compressé (vmlinuz) et le module de boot (initrd) sont bien là et je récupère leur nom exact.

Je vérifie la présence de fichiers dans grub :

>ls (hd2,msdos2)/boot/grub
unicode.pf2  i386-pc/  locale/  fonts/  grub.cfg  grubenv

On charge le module linux pour pouvoir lire le noyau :

>insmod linux

Si le insmod ne fonctionne pas, il suffit de lire le répertoire i386-pc :

>ls (hd2,msdos2)/boot/grub/i386-pc

Enfin les commandes finales (le sdc2 correspond au dh2,msdos2 comme vu plus haut) :

>linux /boot/vmlinuz-3.16.0-4-amd64 root=/dev/sdc2
>initrd /boot/initrd.img-3.16.0-4-amd64
>boot

Joie.

Grub rescue