Archives mensuelles : mai 2021

Deux méthodes de conversion de Windows Legacy vers UEFI

Souvent, on est confronté au désir de faire passer une installation de Windows en mode bios vers une installation UEFI. Ca implique deux préalables :

  1. Le bios doit être compatible uefi. On s’en assure avant toute manipulation.
  2. Le disque au format mbr devra être converti au format gpt.

Nous allons partir de cette situation : un Windows hérité (bios) sur disque mbr :

Mon image

 1. La méthode directe via mbr2gpt

Microsoft a proposé en effet une commande directe pour faire cette opération. Elle  est documentée sur de nombreux sites, et donc je vais aller assez vite.

On peut la saisir depuis Windows lui-même ou depuis une console WinPE (mon choix). Ce qui  donne en substance pour la première commande :

Mon image

La seconde commande :

Mon image

La conversion se fait sans difficulté, et Windows va démarrer directement dès qu’on aura basculé le bios de Legacy à UEFI. Le seul bémol, c’est que mbr2gpt a placé la partition efi où bon lui a semblé, et il n’a pas créé de partition msr.

Mon image

C’est négligeable et facilement récupérable, mais j’aurais préféré contrôler moi-même ces choix. Je vais donc utiliser une autre méthode, un peu plus technique, mais plus personnalisable.

2. La méthode indirecte via gdisk et bcdboot

En partant de la même situation initiale, nous allons devoir procéder en deux temps. Convertir le disque au format gpt, puis recréer les partitions et fichiers de démarrage.

2.1. Conversion du disque via gdisk

On trouve gdisk sur tous les live-usb Linux  et il existe même une version Windows (que je n’ai pas testée). Je vais utiliser une Mint Xfce pour faire cette première opération. J’en profiterai pour supprimer la partition « reserved » devenue inutile (avec gparted, par exemple)./

Mon disque à convertir étant identifié dans gparted par l’appellation /dev/sda, j’exécute gdisk  pour le modifier :

sudo gdisk /dev/sda

Là, il me confirme que mon disque est bien au format mbr. La simple lettre « w » confirmée par un « y » va permettre de le convertir  :

Mon image

Ici s’arrête l’intervention de gdisk et de Linux. On va pouvoir redémarrer le PC sur une console WinPE ou un disque d’installation de Windows pour finaliser la modification.

2.2. Réparation du démarrage de Windows

A ce stade, il faut démarrer sur une console (ou un support d’installation) jusqu’à obtenir une invite de commandes. On en profite pour basculer le bios en UEFI ; on vérifie depuis WinPE que la conversion en gpt s’est bien faite, ce qui est prouvé par  l’astérisque au retour de « list disk ». On en profite pour vérifier les partitions:

diskpart
list disk
sel disk 0
list part

On n’a plus qu’à créer les partitions que l’on souhaite (une msr de 16 Mio et le reste pour l’EFI) :

create part msr size=16
create part efi

On formate et on assigne une lettre. On peut même vérifier le résultat :

format fs=fat32 quick
assign letter=R
list part

Le tout en images donne ceci :

Mon image

Il ne reste qu’à réparer le démarrage pour l’adapter à l’UEFI. On vérifie les lettres assignées aux volumes (EFI et Windows), et on écrit les fichiers de démarrage :

list vol
exit
bcdboot e:\windows /l fr-fr /s r:

Ce qui donne :

Mon image

On ferme l’invite de commandes et on peut voir que Windows est déjà proposé :

Mon image

Il ne reste plus qu’à démarrer.  Le PC tourne en UEFI avec les partitions telles qu’on les souhaitait.

Mon image

 

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