Le site arthur.bebou.netlib.re - retour accueil
git clone git://bebou.netlib.re/arthur.bebou
Log | Files | Refs |
index.sh (2922B)
1 #! page 2 title: Comment booter sur un linux depuis un shell grub 3 author: Arthur Pons 4 description: Avec une partition chiffrée sinon c\'est trop facile 5 publication: 2025-02-07 6 7 sectionmd: main 8 Cet article est entièrement pompé de 9 [celui-ci](https://www.linuxfoundation.org/blog/blog/classic-sysadmin-how-to-rescue-a-non-booting-grub-2-on-linux) 10 avec quelques ajouts. 11 12 ## Identifier les disques 13 14 Comme dans un shell normal unix, `ls` permet de lister des fichiers, ou ici des disques : 15 16 grub> ls 17 (proc) (hd0,gpt1) (hd0,gpt2) (hd0,gpt3) ... 18 19 ## Trouver le kernel et l'initrd 20 21 Il va d'abord falloir identifier sur quel disque se trouve le kernel que l'on 22 veut utiliser. Pour cela il faut regarder dans chaque partition de disque 23 jusqu'à ce que l'on trouve un fichier nommé `vmlinuz-blablabla`. Personnellement je le trouve dans la deuxième partition de mon SSD : 24 25 grub> ls (hd0,gpt2)/ 26 ... 27 vmlinuz-3-... 28 initrd 29 ... 30 31 Chez moi l'initrd correspondant, avec les même numéros de version que le fichier `vmlinuz` est au même endroit. 32 33 ## Booter 34 35 Trois commandes sont nécessaires avant de booter. La première identifie le 36 kernel à utiliser et le "device" à monter pour en faire votre système de 37 fichier. Dans l'article cité au début il est dit que ce device correspond à la 38 partition dans laquelle on a trouvé le kernel et l'initrd selon la règle 39 suivante : 40 41 |,gpt1|,gpt2|,gpt3| 42 ---|----|----|---- 43 hd0|sda1|sda2|sda3 44 hd1|sdb1|sdb2|sdb3 45 hd2|sdc1|sdc2|sdc3 46 47 A noter que les partitions peuvent apparemment ne comporter que des numéros 48 (hd0,1) au lieu de (hd0,gpt1). La même logique s'applique. 49 50 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 : 51 52 >ls /dev 53 ... 54 arthur-dnum-vg 55 ... 56 57 Ce dosser est créé au déchiffrement. A l'intérieur se trouvait deux devices, 58 `root` avec mes fichiers et `swap` pour une partition de swap. C'est donc 59 `/dev/arthur-dnumèvg/root` qu'il fallait indiquer au grub shell. 60 61 Après un redémarrage, de retour dans le grub shell, on fait : 62 63 >grub set root=(hd0,gpt2) 64 >grub linux /vmlinuz.... root=/dev/arthur-dnum/vg/root 65 >grub initrd /initrd.... 66 >grub boot 67 68 Et tout boot comme il faut ! :) 69 70 ## Corriger la configuration grub 71 72 Je pense que le souci provient du changement d'UUID du disque lorsqu'il a été 73 déplacé d'un PC à l'autre (ou quelque chose du style). Pour le corriger j'ai 74 opté de pointer dessus en utilisant le nom de la partition directement, à 75 savoir mettre : 76 77 configfile (hd0,gpt2)/grub/grub.cfg 78 79 dans `/boot/efi/EFI/debian/grub.cfg`.