Ma migration de Grub 1 vers Grub 2

-------------------------------------------------

[15/05/2025] - ~8mins - #linux #boot

-------------------------------------------------

Mon ordi c'est une sorte d'entité ancestrale qui a vu ses morceaux remplacés petits à petits pour évoluer.

Il n'a plus rien d'origine certe mais il est toujours là.

Bon vous avez la ref bien entendu mais c'est pas le but de cet article.

Le truc c'est que c'est vrai pour le hardware mais aussi pour le software.

J'ai testé quelques distros il y a fort longtemps avant de poser mes valises chez Gentoo.

C'est ma crèmerie favorite même si parfois ça permet d'exercer la patience et que ça donne un peu envie d'aller voir ailleurs.

Mais bon, un peu par flemme j'y suis j'y reste.

Le truc c'est que mon installation actuelle date de … 2007 maintenant.

Et contrairement à d'autre distros où c'est un peu galère (et sans parler des autres OS), ici le chemin de mise à jour est naturel et se fait au rythme que je choisis.

Justement, alors que je fous à jour mon kernel je me rends compte d'un ptit truc.

Le support des systèmes de fichiers reiserfs a été dégagé.

Et franchement je ne sais pas pourquoi j'avais choisi ça mais bon me voilà fort dépourvu.

Il me fallait donc me refaire une partoche /boot .

Mais j'ai repoussé pour pouvoir faire ça plus sereinement.

Au fil des ans, j'ai viré les disques durs, je suis passé aux SSD en sata puis du raid, puis du ssd nvme.

Et ces derniers jours j'ai ajouté un second nvme pour avoir plus de place.

Et c'est là qu'en ouvrant le boitier j'ai vu ce pauvre ssd sata qui était encore là !

C'est le disque de boot !

J'ai un ssd qui ne me sert que pour booter.

C'est un peu riche.

Mais comme il faut que je le refasse bha il va dégager.

Je l'avais installé sur une distribution linux.

Il n'avait pas été installé sur gentoo et du coup je n'avais rien pour le mettre à jour ou autre.

Rien de bien méchant.

Mon install étant antique, j'étais toujours en bios en non en uefi (enfin en csm mais bref c'est un détail).

J'ai donc dégainé le wiki gentoo et arch et le handbook de gentoo pour voir un peu comment tout ce merdier marche.

C'était un poil confu au début.

Boot en BIOS

Bon quand on est à l'ancienne on a notre bios à qui on demande de booter sur tel ou tel device.

Là, il va chercher dans les tous premiers secteurs ce qui pourrait être un bootloader et ensuite passe la main à ce logiciel.

Du coup quand on crée des partoches, elles sont pas exactement au début du disque parcequ'il faut y laisser un peu de place pour le bootloader.

Le truc c'est que l'emplacement prévu est un poil petit.

Dans le cas de grub, ce petit morceau ne permet que de charger le reste de grub qui est un peu plus gros avec des modules et tout.

Et dans cette partition on ajoute notamment le kernel l'initrd et la conf du bootloader.

Voilà.

J'avais une partition de 100Mo pour ça.

Boot en UEFI

Là c'est un poil différent mais pas tant que ça.

L'UEFI c'est donc un firmware de carte mère mais étant donné que c'est bien plus moderne ils ont été un poil malin et ont ajouté un peu plus d'intelligence dedans.

Le truc est notamment capable de lire des partitions en fat32 (ou vfat pour les intimes).

UEFI s'appuie sur un nouveau format de partition nommé GPT pour pouvoir trouver sa fameuse partoche (qui se nomme ESP).

Cette partition peut donc avoir un peu n'importe quelle taille et contenir donc pas mal de trucs et notamment des logiciels au "format efi" comme par exemple un bootloader, un gestionnaire de partition, doom, un kernel linux, memtest…

Installation de GRUB 2

J'avais pas envie de me retrouver avec un ordi qui boot pas et encore moins envie de perdre des données.

Bon bha c'est parti : emerge grub et voilà c'est fini.

Fin de l'article.

Ha merde cette blague ne marche toujours pas à l'écrit.

Bref, ça ne suffit bien évidemment pas.

Cette commande ne fait que d'installer les logiciels qui permettent vraiment d'installer grub.

J'ai surtout créé une partoche fat32 de 2Go (soyons fou !) et une partoche btrfs du reste sur le nouveau ssd.

Je donne des ptits labels pour les retrouver plus facilement.

Je monte la partoche dans /boot et me voilà fin prêt : grub-install --efi-directory=/boot --target=x86_64-efi mais impossible de le faire marcher.

Lors de cette commande il se plaind de ne pas avoir à accès aux variables EFI.

Et c'est vrai que mon kernel n'avait pas la bonne option.

Je rajoute donc File_systems/Pseudo_filesystems/EFI_Variable_filesystems, je recompile, le boot sur ce nouveau kernel.

Je relance la commande et non toujours pas.

Il faut donc forcément booter en mode uefi ce qui ne simplifie pas vraiment mon affaire.

J'ai tenté de foutre la mobo en uefi et de tout de même booter sur mon bon vieux grub1 mais rien à faire (sans surprise).

Me voilà donc à la recherche d'une clé usb (de plus en plus dur).

Je boot sur le **sysresccd** en uefi.

Je redécouvre XFCE que je n'avais pas croisé depuis près de vingt ans aussi.

Ça n'a pas trop changé.

Et wow c'est bizarre d'avoir un "bureau" traditionnel sur mon ordi !

Ne perdons pas de temps en palabres : je mount ma gentoo, je chroot dessus, et je relance l'install de grub.

Plus d'erreur, je suis tout content, je dégage la clé usb je reboot.

Bon, c'est très cool, je tombe sur grub.

Bon par contre je me suis un peu emballé.

J'ai juste un grub, pas de conf.

Rien.

Se démerder de la console de grub

Mais grub est gentil et propose une ptite interface en cli !

- Premier truc à savoir ls permet de lister les fichiers.

- Deuxième truc à savoir linux c'est la commande pour lui dire où trouver le kernel.

- Troisième truc à savoir initrd c'est pour lui dire où trouver l'initramfs.

- Ultime truc à savoir boot qui est plutôt explicite.

Juste avec ça j'ai réussi à trouver ce que je voulais pour booter et enfin arriver sur ma gentoo.

Ou presque.

Rafraîchir l'initramfs

Mon initramfs a quelques années maintenant et donc à l'époque il se chargeait de monter la partition / puis de boot.

Sauf qu'*avec l'ajout du ssd, la numérotation des deux nvme a tendance à passer de l'un à l'autre*.

Ha et je suis passé en ergol depuis donc c'est un poil chiant l'initram en bépo.

J'ai donc ressorti mon vieux blogpost sur la création d'initramfs [1] pour adapter un peu.

La conf de Grub 2

On utilise des outils pour générer des fichiers de conf qui font des centaines de lignes.

C'est bien gentil mais c'est pas du tout dans ma philosohie.

Mais bon, ce n'est pas parceque les distros font ça que c'est indispensable.

Moi qui compile mon kernel manuellement de temps à autre, j'ai pas besoin d'automatiser la découverte d'os, le changement automatique du menu de boot et tout le merdier.

Mais pour me marrer j'ai fait un ptit coup de grub-mkconfig qui m'a pondu une conf de près de 200 lignes (et qui ne boot pas).

Bon j'ai regardé un peu comment ça marche.

Je renomme mes deux fichiers et je relance le truc et ho magie c'est bon il est content il me crée de quoi booter.

Et le truc est même un peu plus malin que ça puisqu'il remplit aussi les options du kernel pour lui donner la bonne partoche via l'uuid (bravo) et aussi le bon subvolume btrfs !

Mais du coup, heuuu.

Je m'en contente ?

Heuu.

Je pourrai mais franchement je me connais : *je ne penserais pas à relancer la commande pour recréer une conf, alors que bon, j'ai l'habitude d'éditer le fichier de conf.*

Mais… bha je vais repartir de cette base :-)

<summary>/boot/grub/grub.cfg

<pre>

menuentry 'La gentoo :-)'{

search --no-floppy --fs-uuid --set=root YYYY-YYYY

linux /vmlinuz-614.efi root=PARTUUID=XXXXXXXXXXXXXXXXXXXXXx ro rootflags=subvol=gentoo

initrd /initrd11.img

}

menuentry "Extinction" { halt }

menuentry "Dans le doute Reboot" { reboot }

menuentry 'Zouu dans le BIOS !' { fwsetup }

</details>

Le coup du search est pas mal pour trouver le bon block device sans se faire chier.

Ça fonctionne comme findfs.

Theme

Hey j'ai même fait le kikoo.

J'ai installé ça [2].

Liens

[1] mon vieux blogpost sur la création d'initramfs ({{}})
[2] ça (https://github.com/Lxtharia/doomgrub-theme)

------------------------------------

🏠 Retour à la home

------------------------------------

[15/05/2025] - #linux #boot

------------------------------------

[>> Suivant >>] ⏭ The Wicker Man
[<< Précédent <<] ⏮ Before Midnight