Installations automatiques hybrides sous Ubuntu 21.04

Depuis la version 20.10, on peut constater qu’il est de plus en plus difficile d’installer une distribution Ubuntu en mode Legacy. La question a déjà été traitée dans ce sujet par malbo pour cette version 20.10. Il a constaté l’évolution de l’installation de grub : ce qui est vrai pour Ubuntu le sera probablement pour ses dérivées. La version 21.04 suit malheureusement le même chemin.

Je fais rarement des tests sur les distributions non officielles, mais cette fois, je vais faire une exception : tester l’installation d’une Ubuntu 21.04 en mode Legacy, sur un disque mbr (dos). 

1. Installation automatique d’Ubuntu 21.04

Je ne détaille pas cette possibilité qui est bien expliquée par malbo sur la version 20.10. L’installateur Ubiquity ne laisse guère le choix. Soit « effacer le disque intégralement », ce qui convertit le disque au format gpt, et donc conduit à une installation UEFI ; soit passer par « autre chose », et accepter la création d’une partition efi, ce qui conduit au même résultat.  On a un exemple de ce résultat dans le rapport boot-info de ce sujet .

On constate que le PC fonctionne en uefi :

BIOS is EFI-compatible, and is setup in EFI-mode for this installed-session.

Le disque est pourtant au format dos :

fdisk -l (filtered): ___________________________________________________________

Disk sda: 931.5 GiB, 1000204886016 bytes, 1953525168 sectors
Disk identifier: 0x5de0dddf
Type d'étiquette de disque : dos
      Boot      Start        End    Sectors   Size Id Type
sda1             2048   48828219   48826172  23.3G 83 Linux
sda2         48830462 1953523711 1904693250 908.2G  5 Extended
sda5         48830464   52733951    3903488   1.9G 82 Linux swap / Solaris
sda6         52736000 1947267249 1894531250 903.4G 83 Linux
sda7  *    1947269120 1953523711    6254592     3G ef EFI (FAT-12/16/32)

Enfin, la partition EFI est activée par un drapeau boot, et pourtant elle est incluse dans une partition étendue. Tout ceci est assez surprenant. Et pourtant, c’est fonctionnel. Mais Windows, en dual-boot, doit peu aimer cette situation.

2. Tests manuels d’installation

2.1. Forçage de l’installation en mode Legacy sans partition efi 

Le Bios réglé en mode Legacy, avec un disque dos. Je force la création d’une petite partition NTFS pour simuler l’idée  que le disque n’est pas vierge, et je crée avec Gparted  une partition ext4 que j’associe à / pour mon installation d’Ubuntu. Je passe outre un message d’avertissement me signalant l’absence de partition EFI, ce qui me conduit à une erreur GRUB en fin  d’installation. Je teste néanmoins un redémarrage, et là, surprise, Ubuntu 21.04 démarre. Le retour de quelques commandes propose ceci  (car boot-repair est inopérant) :

test@test-virtual-machine:~$ sudo od -tx1z -Ax -N 512 /dev/sda |grep -i rub
000180 7d e8 2e 00 cd 18 eb fe 47 52 55 42 20 00 47 65  >}.......GRUB .Ge<

test@test-virtualmmachine:~$ cat /etc/issue
Ubuntu Hirsute Hippo (development branch) \n \l

test@test-virtual-machine:~$ [ -d /sys/firmware/efi ] && echo "Session EFI" || echo "Session non-EFI"
Session non-EFI

test@test-virtual-machine:~$ sudo fdisk -l
Périphérique Amorçage   Début      Fin Secteurs Taille Id Type
/dev/sda1    *           2048  4028415  4026368   1,9G  7 HPFS/NTFS/exFAT
/dev/sda2             4028416 62914559 58886144  28,1G 83 Linux

test@test-virtual-machine:~$ dpkg --get-selections | grep grub
grub-common					install
grub-efi-amd64-bin				install
grub-efi-amd64-signed				install
grub-gfxpayload-lists				install
grub-pc						install
grub-pc-bin					install
grub2-common					install

Un grub a bien été installé dans le mbr, malgré le message d'erreur. Les versions Legacy et UEFI de Grub sont installées, et l'installation fonctionne sans partition efi. Mais elle n'est pas allée à son terme. On peut prévoir des soucis à venir

 2.2. Acceptation de la partition efi, avec création manuelle en partition primaire 

Toujours en mode Legacy, sur disque ms-dos, avec une partition NTFS présente, je crée cette fois la partition efi souhaitée (et je force son installation en primaire via « autre chose« , contrairement à ce qui est proposé par défaut pour être sûr de booter également en UEFI). L’installation se fait sans heurt.

Quelques commandes en Legacy :

Test@test-virtual-machine:~$ sudo od -tx1z -Ax -N 512 /dev/sda |grep -i rub
000180 7d e8 2e 00 cd 18 eb fe 47 52 55 42 20 00 47 65  >}.......GRUB .Ge<

test@test-virtual-machine:~$ [ -d /sys/firmware/efi ] && echo "Session EFI" || echo "Session non-EFI"
Session non-EFI

test@test-virtual-machine:~$ sudo parted -l
Table de partitions : msdos
Drapeaux de disque : 
Numéro  Début   Fin     Taille  Type      Système de fichiers  Fanions
 1      1049kB  2063MB  2062MB  primary   ntfs
 2      2064MB  32,1GB  30,0GB  extended
 5      2064MB  32,1GB  30,0GB  logical   ext4
 3      32,1GB  32,2GB  149MB   primary   fat32                démarrage, esp

test@test-virtual-machine:~$ dpkg --get-selections | grep grub
grub-efi-amd64-signed				install
grub-pc						install

On constate que les deux versions de Grub sont installées, et qu'un Grub est toujours présent dans le mbr. Donc, Ubuntu peut fonctionner en mode Legacy.

Quelques commandes en UEFI:  

test@test-virtual-machine:~$ [ -d /sys/firmware/efi ] && echo "Session EFI" || echo "Session non-EFI"
Session EFI

test@test-virtual-machine:~$ sudo efibootmgr -v
BootCurrent: 0000
BootOrder: 0004,0000,0001,0002,0003
Boot0000* EFI VMware Virtual SCSI Hard Drive (0.0)	PciRoot(0x0)/Pci(0x15,0x0)/Pci(0x0,0x0)/SCSI(0,0)
Boot0001* EFI VMware Virtual SATA CDROM Drive (1.0)	PciRoot(0x0)/Pci(0x11,0x0)/Pci(0x4,0x0)/Sata(1,0,0)
Boot0004* ubuntu	HD(3,MBR,0x72e662bb,0x3bb8800,0x47000)/File(\EFI\ubuntu\shimx64.efi)

La même installation fonctionne également dans le mode UEFI. Une entrée « Boot4 Ubuntu » s’est créée spontanément au premier démarrage en UEFI. L’installation est donc opérationnelle sur un PC hybride. Mais la partition efi reste montée dans fstab, ce qui signifie qu’on ne peut supprimer la partition efi dans opérer une modification.

 2.3. Acceptation de la partition efi, avec création automatique en partition logique

L’installation par défaut proposant la création d’une partition EFI logique, au sein d’une partition étendue. Il n’est pas nécessaire de tester une nouvelle fois en Legacy, car l’installation est identique dans ce mode. La question est : cela bootera-t-il en UEFI ?

Test@test-virtual-machine:~$ sudo efibootmgr -v 
BootCurrent: 0000
BootOrder: 0005,0004,0000,0001,0002,0003
Boot0000* EFI VMware Virtual SCSI Hard Drive (0.0)	PciRoot(0x0)/Pci(0x15,0x0)/Pci(0x0,0x0)/SCSI(0,0)
Boot0001* EFI VMware Virtual SATA CDROM Drive (1.0)	PciRoot(0x0)/Pci(0x11,0x0)/Pci(0x4,0x0)/Sata(1,0,0)
Boot0004* ubuntu	HD(3,MBR,0x72e662bb,0x3bb8800,0x47000)/File(\EFI\ubuntu\shimx64.efi)
Boot0005* ubuntu	HD(2,MBR,0x72e662bb,0x3d7ffe,0x37e0802)/HD(2,MBR,0x0,0x3b2a000,0x8e800)/File(\EFI\ubuntu\shimx64.efi)

test@test-virtual-machine:~$ sudo ls /boot/efi/EFI/Boot
BOOTX64.EFI  fbx64.efi	mmx64.efi

test@test-virtual-machine:~$ sudo fdisk -l
Périphérique Amorçage    Début      Fin Secteurs Taille Id Type
/dev/sda1                 2048  4028415  4026368   1,9G  7 HPFS/NTFS/exFAT
/dev/sda2              4030462 62621695 58591234  27,9G  5 Étendue
/dev/sda5              4030464 62035967 58005504  27,7G 83 Linux
/dev/sda6    *        62038016 62621695   583680   285M ef EFI (FAT-12/16/32)

Sur la machine virtuelle, tout s’est très bien passé, même avec une partition efi logique. L’entrée « Boot5 Ubuntu » s’est créée.  Mais c’est sur Vmware, dont c’est très « théorique ». Avec les dual-boot Windows et les Nvram plombées, ça promet de nombreux plantages. En  voici un premier exemple : https://bugs.launchpad.net/ubuntu/+source/usb-creator/+bug/1912044

 3. Une installation complète réussie en Legacy traditionnel

L’idée est d’aboutir au résultat du point 2.1, mais en finalisant l’installation. Première opération, lancer le live-usb d’Ubuntu en mode Legacy-bios, et choisir « essayer Ubuntu« . On commence par préparer son disque pour une installation traditionnelle :

3.1. Création d’une partition unique en ext4, sur disque ms-dos

L’opération assez classique est faite depuis Gparted, intégré au live Ubuntu :Mon image

3.2. Installation d’Ubuntu sans Grub

Au lieu de cliquer sur l’icone d’installation, je choisis de passer par un Terminal, et de taper :

ubiquity -b 

Cette commande indique à Ubiquity qu’on ne veut pas installer Grub tout de suite.  On suit les indications habituelles, jusqu’à la proposition « Autre chose« , qu’on sélectionne. Là, on indique à Ubiquity qu’on veut que la partition racine soit liée à la partition ext4 qu’on a préalablement créée :

Mon image

Il suffit de presser « continuer » pour aboutir à cet avertissement : on l’ignore tout simplement en continuant malgré tout.

Mon image

Et on a eu bien raison, car l’installation va cette fois à son terme, sans encombre.

Mon image

Le souci, c’est qu’on n’a aucun grub pour démarrer, même si les fichiers nécessaires sont visiblement bien présents pour l’installation.

Mon image

Il nous faut donc finit d’installer grub. Je choisis de le faire par le biais d’un chroot en « continuant à tester » avec le live d’Ubuntu.

3.3. Mise en place de Grub Legacy dans le mbr

Le principe est de monter les outils pour installer grub, et on peut le faire de deux manières. En redémarrant sur Super Grub 2 disk qui saura lancer notre installation sans grub, ou en chrootant depuis le live USB qu’on n’a pas quitté. Je choisis la seconde option en m’appuyant sur ceci. La procédure est fiable, et fonctionne plutôt sans surprise.

La première étape conduit à ceci :

Mon image

Il ne reste plus qu’à installer créer le fichier grub.cfg et à installer grub dans le mbr  ; deux commandes suffisent :

Mon image

La troisième commande vérifie que grub a bien été ajouté dans le mbr. Et au redémarrage, nous obtenons une Ubuntu 21.04 toute propre et installée en mode Legacy.

Mon image

Bilan : pas de partition fat32 active parasite, pas de fichier fstab à modifier, et pas d’entrées « uefi » dans le menu grub. On est dans du classique.