Cet article est entièrement pompé de celui-ci avec quelques ajouts.
Identifier les disques
Comme dans un shell normal unix, ls
permet de lister des fichiers, ou ici des disques :
grub> ls
(proc) (hd0,gpt1) (hd0,gpt2) (hd0,gpt3) ...
Trouver le kernel et l’initrd
Il va d’abord falloir identifier sur quel disque se trouve le kernel que l’on
veut utiliser. Pour cela il faut regarder dans chaque partition de disque
jusqu’à ce que l’on trouve un fichier nommé vmlinuz-blablabla
. Personnellement je le trouve dans la deuxième partition de mon SSD :
grub> ls (hd0,gpt2)/
...
vmlinuz-3-...
initrd
...
Chez moi l’initrd correspondant, avec les même numéros de version que le fichier vmlinuz
est au même endroit.
Booter
Trois commandes sont nécessaires avant de booter. La première identifie le kernel à utiliser et le “device” à monter pour en faire votre système de fichier. Dans l’article cité au début il est dit que ce device correspond à la partition dans laquelle on a trouvé le kernel et l’initrd selon la règle suivante :
,gpt1 | ,gpt2 | ,gpt3 | |
---|---|---|---|
hd0 | sda1 | sda2 | sda3 |
hd1 | sdb1 | sdb2 | sdb3 |
hd2 | sdc1 | sdc2 | sdc3 |
A noter que les partitions peuvent apparemment ne comporter que des numéros (hd0,1) au lieu de (hd0,gpt1). La même logique s’applique.
Donc mon device devrait être /dev/sda2
. Sauf que mon disque est chiffré et il faut s’adapter. J’ai fait toute la procédure comme indiqué dans l’article source ce qui m’a permis de passer l’étape du déchiffrement. A partir de là une erreur s’est produite puisque /dev/sda2
ne contenait pas mon système de fichier. J’ai utilisé le shell busybox qui nous est donné à ce moment là pour constater que dans /dev
se trouvait un device un peu particulier :
>ls /dev
...
arthur-dnum-vg
...
Ce dosser est créé au déchiffrement. A l’intérieur se trouvait deux devices,
root
avec mes fichiers et swap
pour une partition de swap. C’est donc
/dev/arthur-dnumèvg/root
qu’il fallait indiquer au grub shell.
Après un redémarrage, de retour dans le grub shell, on fait :
>grub set root=(hd0,gpt2)
>grub linux /vmlinuz.... root=/dev/arthur-dnum/vg/root
>grub initrd /initrd....
>grub boot
Et tout boot comme il faut ! :)
Corriger la configuration grub
Je pense que le souci provient du changement d’UUID du disque lorsqu’il a été déplacé d’un PC à l’autre (ou quelque chose du style). Pour le corriger j’ai opté de pointer dessus en utilisant le nom de la partition directement, à savoir mettre :
configfile (hd0,gpt2)/grub/grub.cfg
dans /boot/efi/EFI/debian/grub.cfg
.