Installer ubuntu 21-04 en uefi directement avec Refind

Le lanceur Grub est traditionnellement installé avec Ubuntu, mais ce lanceur est devenu une telle usine-à-gaz qu’on peut être tenté de lui substituer Refind,  qui est bien plus qu’une solution alternative. Beaucoup de tutoriels existent, mais ils sont souvent complexes et peu explicites. Cette démonstration présuppose une installation complète sur un disque vierge. La désactivation du « secure-boot » dans le bios sera préférable.

I. Installation d’Ubuntu sans grub

1. L’installation via ubiquity -b

On démarre bien entendu sur le support d’installation, et on choisit « d’essayer Ubuntu », en profitant bien sûr pour le passer en français :

Mon image

Une fois sur le bureau, on va choisir non pas d’installer via le raccourci proposé, mais en lançant un terminal, et en tapant la commande :

ubiquity -b

Celle-ci va lancer l’installation avec une petite différence : grub ne sera pas installé. Autrement dit, en fin d’installation, Ubuntu ne sera pas capable de démarrer.

Mon image

Les étapes habituelles vont être proposées, et au choix de partitionnement, on va préférer choisir « autre chose » afin de partitionner le disque à notre convenance. Deux partitions au minimum seront  ajoutées par le bouton + :

  • Une partition efi en fat32 de 100 Mo environ

Mon image

  • Une partition racine en ext4 sur le reste du disque. On obtient  le résultat suivant  :

Mon image

A ce stade, on peut poursuivre l’installation que va aller à son terme.  L’installateur va nous proposer de « redémarrer » ou de « continuer à tester » . Nous allons choisir la seconde option, car Ubuntu ne fonctionnerait pas en l’état..

2. Etat des lieux au terme de l’installation

Le plus simple est de faire le point via un terminal, pour estimer la situation :

ubuntu@ubuntu:~$ sudo fdisk -l |grep "/dev/sda"
Disque /dev/sda : 16 GiB, 17179869184 octets, 33554432 secteurs
/dev/sda1      2048   194559   192512    94M Système EFI
/dev/sda2    194560 33552383 33357824  15,9G Système de fichiers Linux

Nous avons bien deux partitions, sda1 et sda2, l’une pour l’EFI, l’autre pour notre Ubuntu

ubuntu@ubuntu:~$ sudo efibootmgr
BootCurrent: 0001
BootOrder: 0000,0001,0002,0003
Boot0000* EFI VMware Virtual SCSI Hard Drive (0.0)
Boot0001* EFI VMware Virtual SATA CDROM Drive (1.0)
Boot0002* EFI Network
Boot0003* EFI Internal Shell (Unsupported option)

Aucune entrée n’a été créée dans la NVram du bios-uefi. Notre Linux n’est pas fonctionnel.

II. Installation de Refind

1. Téléchargement de Refind

En fait, le terme installation n’est pas approprié. Nous allons simplement télécharger les fichiers nécessaires au démarrage, et ce directement sur notre live-usb. La procédure est assez simple, parce qu’elle est automatique et en trois commandes:

ubuntu@ubuntu:~$ sudo add-apt-repository universe
Adding component(s) 'universe' to all repositories.
Press [ENTER] to continue or Ctrl-c to cancel.

Je vous épargne les lignes affichées pour passer à la seconde commande :

ubuntu@ubuntu:~$ sudo apt update
Ign :1 cdrom://Ubuntu 21.04 _Hirsute Hippo_ - Alpha amd64 (20210116) hirsute InRelease
Atteint :2 cdrom://Ubuntu 21.04 _Hirsute Hippo_ - Alpha amd64 (20210116) hirsute Release
Atteint :4 http://archive.ubuntu.com/ubuntu hirsute InRelease
Atteint :5 http://archive.ubuntu.com/ubuntu hirsute-updates InRelease  
Atteint :6 http://security.ubuntu.com/ubuntu hirsute-security InRelease
Lecture des listes de paquets... Fait               
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait

Idem. Et enfin  la dernière :

ubuntu@ubuntu:~$ sudo apt install refind
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Les NOUVEAUX paquets suivants seront installés :
  refind
0 mis à jour, 1 nouvellement installés, 0 à enlever et 1073 non mis à jour.

Une fenêtre nous proposant d’installer Refinf en partition ESP. Il suffira de décliner cette proposition.

Refind, une fois téléchargé, verra tous ses dossiers importants  installés dans /usr/share/refind. On pourra le vérifier :

ubuntu@ubuntu:~$ ls /usr/share/refind/*
/usr/share/refind/refind-install

/usr/share/refind/banners:
refind_banner-alpha.png  refind_banner.png  refind_banner.svg

/usr/share/refind/fonts:
liberation-mono-regular-12.png  nimbus-mono-14.png  ubuntu-mono-14.png
liberation-mono-regular-14.png  nimbus-mono-16.png  ubuntu-mono-16.png
liberation-mono-regular-24.png  nimbus-mono-24.png  ubuntu-mono-24.png
liberation-mono-regular-28.png  nimbus-mono-28.png  ubuntu-mono-28.png
mkfont.sh                       README.txt
nimbus-mono-12.png              ubuntu-mono-12.png

/usr/share/refind/refind:
drivers_x64  icons  refind.conf-sample  refind_x64.efi  tools_x64
ubuntu@ubuntu:~$

En dernière ligne s’affiche un fichier « sample » que nous allons modifier immédiatement :

sudo mv /usr/share/refind/refind/refind.conf-sample /usr/share/refind/refind/refind.conf

Nous avons tous les outils nécessaires pour installer Refind sur la partition efi

2. Installation de Refind en partition efi

2.1. Cas général

Si le PC n’est pas verrouillé au niveau du bios, il est assez simple d’installer Refind en montant la partition sda1 (EFI), en créant un dossier provisoire /efi/refind, et en y copiant simplement les fichiers nécessaires :

ubuntu@ubuntu:~$ sudo mount /dev/sda1 /mnt/sda1
ubuntu@ubuntu:~$ sudo mkdir -p /mnt/sda1/efi/refind
ubuntu@ubuntu:~$ sudo cp -rv /usr/share/refind/refind/* /mnt/sda1/efi/refind 
'/usr/share/refind/refind/drivers_x64' -> '/mnt/sda1/efi/refind/drivers_x64' 
'/usr/share/refind/refind/drivers_x64/btrfs_x64.efi' -> '/mnt/sda1/efi/refind/drivers_x64/btrfs_x64.efi' 
'/usr/share/refind/refind/drivers_x64/ext2_x64.efi' -> '/mnt/sda1/efi/refind/drivers_x64/ext2_x64.efi' 
'/usr/share/refind/refind/drivers_x64/ext4_x64.efi' -> '/mnt/sda1/efi/refind/drivers_x64/ext4_x64.efi' 
'/usr/share/refind/refind/drivers_x64/hfs_x64.efi' -> '/mnt/sda1/efi/refind/drivers_x64/hfs_x64.efi'

Nous pouvons constater que seul le sous-dossier /refind aura été nécessaire. A nouveau, je passe sur la liste complète des fichiers copiés. Notre Refind serait sans doute déjà opérationnel dans la plupart des cas. Pour être sûr du démarrage de Refind, nous allons ajouter une entrée de démarrage la  NVram du bios-uefi :

ubuntu@ubuntu:~$ sudo efibootmgr --create --disk /dev/sda --part 1 --label "Refind-efiboomgr" --loader "efi\refind\refind_x64.efi"
BootCurrent: 0001
BootOrder: 0004,0000,0001,0002,0003
Boot0000* EFI VMware Virtual SCSI Hard Drive (0.0)
Boot0001* EFI VMware Virtual SATA CDROM Drive (1.0)
Boot0002* EFI Network
Boot0003* EFI Internal Shell (Unsupported option)
Boot0004* Refind-efiboomgr
ubuntu@ubuntu:~$

Si le bios UEFI n’est pas « verrouillé », l’entrée sera ajoutée automatiquement. On n’a plus qu’à tester en redémarrant enfin sur la version installée :
Mon image

2.2. Cas particuliers

Certains PC, plus ou moins verrouillés, n’autorisent pas l’écriture en NVRam et empêchent de démarrer tant sur Grub que sur Refind. On peut rencontrer pas mal de situations qui demanderaient chacune  des précisions. La plus courante est l »obligation d’ajouter une entrée Ubuntu depuis le bios  lui-même.

3. Paramétrages de Refind

En allant sur le site de Rod Smith (l’auteur) ou sur d’autres tutoriels comme celui du site Ubuntu, on pourra paramétrer Refind pour le rendre plus fonctionnel. Je n’entre pas dans le détail, mais je montre simplement ce que propose l’ajout d’un thème trouvé en ligne :

Mon image