Table des matières

, , ,

Tutoriel à mettre à jour en suivant le modèle https://doc.ubuntu-fr.org/wiki/modeles/tutoriel

Remplacer grub par Refind

L'option "Purger GRUB" de Boot-Repair est fait en deux séquences qui donnent la main à l'utilisateur, la première pour purger, la seconde pour réinstaller. Dans ce tutoriel, nous allons utiliser cette fonctionnalité pour purger et installer rEFInd.

Environnement

Nécessité de booter en technique EFI.

Le mode secure du EFI doit être déactivé: Il est très compliqué d'installer un refind sécurisé qui refuse d'utiliser le logiciel windows pour se certifier auprès des ordinateurs EFI. La séquence de certification existe. Elle est complexe.

Les logiciels libres doivent être installés dans des partitions EXT4. Le pilote BTRFS existe mais il faut l'ajouter. Le pilote ZFS n' existe pas.

Les motivations

La principale raison est certainement le fait que certains ordinateurs refusent que leur NVRAM soit modifiée: L'installation du grub est alors plantée. L'installation de ubuntu se termine sans aucun moyen de l'utiliser. Il est nécessaire d'utiliser des moyens manuels pour fabriquer un structure de boot. Il est actuellement encore impossible d'utiliser boot-repair car il s'appuie pour l'essentiel sur la même séquence d'installation.

Lorsque plusieurs logiciels libres sont installés dans le même ordinateur, ils veulent tous être responsable du démarrage. L'utilisateur doit bien maîtriser: Utiliser une autre façon de booter résout ce problème de hiérarchie.

Le choix des logiciels proposés au boot par refind est exactement ce qui est présent dans l'ordinateur. Il n'y a aucun travail de préparation en amont. Le choix de boot est possible en utilisant la souris et même le doigt si présence d'écran tactile. L'ajout d'une photo d'arrière-plan est facile.

Le logiciel de refind est intégralement dans la partition de boot EFI. Il n'y a donc aucun risque qu'il en manque un morceau. Cela arrive avec le grub si la partition contenant le second morceau n'est pas disponible souvent suite à une suppression non maîtrisée d'une partition.

Installation

Il y a 2 types d'installation :

  1. Installation facile
  2. Installation manuelle

Installation facile

L'installation facile est décrit dans la page rEFInd

Pour la plupart des cas, ça revient à juste Installer le paquet refind

Installation manuelle

Cette méthode devrait peut-etre etre décrite dans dans la page rEFInd plutot qu'ici pour éviter les redondances d'informations et perdre les lecteurs

D'autres méthodes d'installation sont décrites dans la page rEFInd.

Ici, nous allons voir la méthode boot-repair : Après avoir lancé l'application boot-repair et choisi "options avancées", il faut remplir la grille présentée au chapitre 3.1

Valider seulement la case réinstaller grub. Décocher les autres options et ouvrir l'onglet emplacement de grub.

Il est nécessaire de sélectionner le UBUNTU retenu, l'éventuelle partition de boot qui est présente notamment dans les cas d'installation chiffrée et la partition EFI qui sera appelée par la suite ESP-N puis il faut ouvrir l'onglet option de grub.

Cocher la case purger le grub avant de le réinstaller si elle ne l'est pas . Cliquer sur "appliquer". Le logiciel va inspecter ce qui est présent et fournir une liste de commandes à exécuter.

Ouvrer un terminal et exécuter-les. A titre d'exemple, voici la première et la dernière de la liste.

sudo chroot "/mnt/boot-sav/sdaNN" dpkg --configure -a
sudo chroot "/mnt/boot-sav/sdaNN" apt-get purge -y grub*-common shim-signed 

à condition que l'installation du grub ne pas soit bloquée!

Il est possible d'en profiter pour mettre à jour le logiciel en cas d'installation incomplète.

sudo chroot "/mnt/boot-sav/sdaNN" apt update
sudo chroot "/mnt/boot-sav/sdaNN" apt upgrade

Lorsque ces commandes sont exécutées, il est nécessaire de persévérer avec la commande suivante:

sudo chroot "/mnt/boot-sav/sdaNN"  apt install   refind 

Le téléchargement va se faire. Une grille va s'ouvrir. Le texte est en français. C'est prépositionné sur OUI. Il suffit d'accepter en validant. Refind est alors installé. Il est quasiment opérationnel. Cependant, il y a un bug lié à la technique "chroot" utilisée: Les deux premières lignes du fichier de paramétrage ne sont pas bonnes.

"Boot with standard options"  "file=/cdrom/preseed/ubuntu.seed maybe-ubiquity quiet splash ---"
"Boot to single-user mode"    "file=/cdrom/preseed/ubuntu.seed maybe-ubiquity quiet splash --- single"
"Boot with minimal options"   "ro root=UUID=18b28382-0ec9-4bea-a0b3-24729bd90810" 

Il faudrait penser à booter en choisissant la troisième ligne qui est bonne par appui sur la touche F2. Le plus simple est de supprimer les deux premières car ne pas avoir les options "quiet splash" au démarrage est un plus pour les premiers suivis, en revanche ne pas avoir les options "recovery nomodeset" est un point négatif. La commande suivante peut être faite pour éliminer le risque d'oubli.

sudo chroot "/mnt/boot-sav/sdaNN" sed  -i '1,2d'/boot/refind_linux.conf 
La présence de ce fichier évite d'insérer manuellement des options classiques du grub pour son démarrage en les préparant. Un exemple de choix de paramétrage:
"booter en standard"   "ro root=UUID=18b28382-0ec9-4bea-a0b3-24729bd90810 quiet slash fsck.mode=force"
"booter en recovery"   "recovery root=UUID=18b28382-0ec9-4bea-a0b3-24729bd90810" nomodeset  fsck.mode=force fsck.repair=yes"
La codification est plus complexe si la partition contenant ubuntu est chiffrée. Il faut coder avec l'appel au logiciel de décodage crypt_root=

Le logiciel grub n'ayant plus besoin d'être utilisé, on va déactiver son utilisation .

sudo chroot "/mnt/boot-sav/sdaNN" chmod -x /etc/grub.d/30_os-prober
sudo chroot "/mnt/boot-sav/sdaNN" chmod -x /usr/sbin/grub-install 
sudo chroot "/mnt/boot-sav/sdaNN" chmod -x /etc/kernel/postinst.d/zz-update-grub

Voila, c'est quasiment terminé pour l'installation. Il faut stopper boot-repair et ne pas lui dire de continuer ou de reculer. Dans les deux contextes, il réinstallerait le logiciel shim-signed! La solution est d'appuyer sur les touches Ctrl C Nous restons alors dans une live session afin de faire la prise en compte de la structure de boot.

Activation standard

Beaucoup d'ordinateurs standards permettent alors de choisir refind comme logiciel de boot et de le mettre prioritaire. C'est souvent par l'appui sur les touches F9 …. F12.

Certains ordinateurs (moins sécurisés?) permettent de mettre directement à jour la NVRAM en ligne de commande. Au moment de la mise en route de boot-repair nous avons sélectionné la partition de boot retenue pour installer l'EFI. C'est le moment de s'en souvenir pour exécuter la commande suivante pour mettre à jour la NVRAM:

sudo efibootmgr --create --disk /dev/ESP  --part  N  --label  "BootRepair"  --loader   "\EFI\refind\refind_x64.efi"

- Si la réponse est obtenue en quelques secondes, la commande a fonctionné. Refind est souvent prioritaire. Sinon il faut le faire manuellement.

- Si la réponse se fait attendre, il est possible d'attendre au moins 30 minutes. Dans ce contexte, la réponse sera explicite et dira que la NVRAM est interdite de modification. Si manque de patience, il est possible d'interrompre le process en frappant les caractères Ctrl C. Dans les deux cas, il faudra continuer en faisant tout ce qui décrit ci-après. Cela devrait faire gagner du temps.

Activation complémentaire pour EFI standard

Certains ordinateurs savent reconnaître une structure officielle de boot du logiciel Linux. Il est très rare que cette structure soit déjà présente. Nous allons la créer et prévoir quelques entrées standards. Il est nécessaire de "monter" la partition de boot que boot-repair a créée et d'y transférer la structure.

sudo mkdir -v /Repair
sudo  mount  -v   /dev/ESP-N                          /Repair
sudo  mkdir  -v   /Repair/EFI/Linux 
sudo  cp     -Rv   /Repair/EFI/refind/*               /Repair/EFI/Linux 
sudo  cp     -v   /Repair/EFI/refind/refind_x64.efi   /Repair/EFI/Linux/bootx64.efi
sudo  cp     -v   /Repair/EFI/refind/refind_x64.efi   /Repair/EFI/Linux/grubx64.efi

Beaucoup d'ordinateurs savent reconnaître une structure officielle de boot identique à celle d'un support USB. Cette structure est déjà présente. Nous allons prévoir quelques entrées standards. La partition de boot est déjà montée. Peut-être faut-il sauver l'ancienne structure?

sudo  cp     -Rv   /Repair/EFI/refind/*               /Repair/EFI/Boot 
sudo  cp     -v   /Repair/EFI/refind/refind_x64.efi   /Repair/EFI/Boot/bootx64.efi
sudo  cp     -v   /Repair/EFI/refind/refind_x64.efi   /Repair/EFI/Boot/grubx64.efi

installation complémentaire EFI Microsoft

Malheureusement, certains ordinateurs ne savent booter que grâce à la présence de windows.

- Si windows est encore présent, la solution la plus simple est certainement de lui demander de booter refind. Il est nécessaire de le lancer, de lancer le logiciel Windows PowerShell en mode administratif et de frapper la commande suivante sans se tromper dans le nom du fichier. Sinon, windows ne reboote pas. Suivant les versions de windows, la codification peut varier.

bcdedit /set {bootmgr} path \EFI\refind\refind_x64.efi
bcdedit /set "{bootmgr}" path \EFI\refind\refind_x64.efi

Si refus d'utiliser la technique bcddedit, il est possible de demander à refind de se substituer au lanceur de microsoft en sauvant ce lanceur. Cependant, refind ne le proposera pas au boot.Il faudra faire une entrée manuelle. Voir la documentation refind.

- Si windows a été éliminé, il est nécessaire de refabriquer sa structure de boot et d'y transférer refind. Les commande seront

sudo  mkdir  -pv   /Repair/EFI/Microsoft/Boot 
sudo  cp     -Rv   /Repair/EFI/refind/*               /Repair/EFI/Microsoft/Boot 
sudo  cp     -v   /Repair/EFI/refind/refind_x64.efi   /Repair/EFI/Microsoft/Boot/bootx64.efi
sudo  cp     -v   /Repair/EFI/refind/refind_x64.efi   /Repair/EFI/Microsoft/Boot/grubx64.efi
sudo  cp     -v   /Repair/EFI/refind/refind_x64.efi   /Repair/EFI/Microsoft/Boot/bootmgfw.efi

Conclusion.

Espérons que ce chapitre ne contienne pas trop d'erreurs et qu'il sera utile et se simplifiera au fil du temps.


Contributeurs principaux : IDENTIFIANT.