arthur.bebou

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`.