La conversion d’une version installée d’une Xubuntu UEFI sur disque GPT vers une installation Legacy sur disque DOS peut, contre toute attente, être réalisée depuis une version installée sans aucun redémarrage. Tout se fait depuis une série de commandes via un Terminal.
Attention, cette démonstration est réalisée sur un PC virtuel. Les manipulations n’étant pas sans risque, avec un vrai PC, toutes les sauvegardes nécessaires doivent être réalisées au préalable. Et rien ne garantit la réussite du processus.
1. État initial : installation uefi
Un rapport boot-info est le meilleur moyen de voir la situation de départ : rapport boot-info initial.
Le résultat témoigne d’une installation UEFI classique sur un disque au format GPT (GUID) :
=> No boot loader is installed in the MBR of /dev/sda. sda1: __________________________________________________________________________ File system: vfat Boot sector type: FAT32 Boot sector info: No errors found in the Boot Parameter Block. Operating System: Boot files: /EFI/ubuntu/grub.cfg /EFI/BOOT/fbx64.efi /EFI/BOOT/mmx64.efi /EFI/ubuntu/grubx64.efi /EFI/ubuntu/mmx64.efi /EFI/ubuntu/shimx64.efi GUID Partition Table detected.
Et le boot en UEFI sur Grub est bien contrôlé par la NVram :
=================== efibootmgr -v BootCurrent: 0005 BootOrder: 0005,0001,0002,0004,0000,0003 Boot0000* EFI VMware Virtual SCSI Hard Drive (0.0) PciRoot(0x0)/Pci(0x10,0x0)/SCSI(0,0) Boot0001* EFI VMware Virtual SATA CDROM Drive (1.0) PciRoot(0x0)/Pci(0x11,0x0)/Pci(0x5,0x0)/Sata(1,0,0) Boot0002* EFI Network PciRoot(0x0)/Pci(0x11,0x0)/Pci(0x1,0x0)/MAC(000c29852ae6,1) Boot0003* EFI Internal Shell (Unsupported option) MemoryMapped(11,0x537cb000,0x53b55fff)/FvFile(c57ad6b7-0515-40a8-9d21-551652854e37) Boot0004* cd-rom PciRoot(0x0)/Pci(0x11,0x0)/Pci(0x5,0x0)/Sata(1,0,0)/CDROM(1,0xde8,0x1d40)/File(efibootbootx64.efi) Boot0005* ubuntu HD(2,GPT,3e6d692a-8258-4cd4-ad13-16c3a9ec9a1f,0x800,0x7b000)/File(EFIubuntushimx64.efi) =================== UEFI/Legacy mode: BIOS is EFI-compatible, and is setup in EFI-mode for this installed-session. SecureBoot maybe enabled. (maybe sec-boot, Veuillez indiquer ce message à boot.repair@gmail.com)
L’idée est donc de convertir tout cela en installation en Legacy sans redémarrer le PC, et ce pour éviter de passer par un chroot.
2. Phase de suppression
2.1 Suppression de Grub version EFI
On fait le point sur ce que l’installation en UEFI a installé en matière de fichiers Grub et Shim :
test@test-virtual-machine:~$ dpkg --get-selections | grep grub grub-common install grub-efi-amd64 install grub-efi-amd64-bin install grub-efi-amd64-signed install grub2-common install test@test-virtual-machine:~$ dpkg --get-selections | grep shim shim install shim-signed install shimmer-themes install test@test-virtual-machine:~$
L’objectif est de ne conserver que grub-common et grub2-common :
test@test-virtual-machine:~$ sudo apt purge grub-efi-amd64-signed shim-signed shim Lecture des listes de paquets... Fait Construction de l'arbre des dépendances Lecture des informations d'état... Fait Le paquet suivant a été installé automatiquement et n'est plus nécessaire : mokutil Veuillez utiliser « sudo apt autoremove » pour le supprimer. Les paquets suivants seront ENLEVÉS : grub-efi-amd64-signed* shim* shim-signed* 0 mis à jour, 0 nouvellement installés, 3 à enlever et 219 non mis à jour. Après cette opération, 9 037 ko d'espace disque seront libérés. Souhaitez-vous continuer ? [O/n] o (Lecture de la base de données... 199189 fichiers et répertoires déjà installés.) Suppression de shim-signed (1.39+15+1533136590.3beb971-0ubuntu1) ... Suppression de grub-efi-amd64-signed (1.115+2.02+dfsg1-12ubuntu2) ... Suppression de shim (15+1533136590.3beb971-0ubuntu1) ... (Lecture de la base de données... 199161 fichiers et répertoires déjà installés.) Purge des fichiers de configuration de shim-signed (1.39+15+1533136590.3beb971-0ubuntu1) ...
La commande sudo apt autoremove étant demandée, on s’exécute :
test@test-virtual-machine:~$ sudo apt autoremove Lecture des listes de paquets... Fait Construction de l'arbre des dépendances Lecture des informations d'état... Fait Les paquets suivants seront ENLEVÉS : mokutil 0 mis à jour, 0 nouvellement installés, 1 à enlever et 219 non mis à jour. Après cette opération, 71,7 ko d'espace disque seront libérés. Souhaitez-vous continuer ? [O/n] o (Lecture de la base de données... 199161 fichiers et répertoires déjà installés.) Suppression de mokutil (0.3.0+1538710437.fb6250f-0ubuntu2) ... Traitement des actions différées (« triggers ») pour man-db (2.8.5-2) ... test@test-virtual-machine:~$
Un bilan de la situation montre qu’il reste encore des choses à supprimer :
test@test-virtual-machine:~$ dpkg --get-selections | grep grub grub-common install grub-efi-amd64 install grub-efi-amd64-bin install grub2-common install test@test-virtual-machine:~$ dpkg --get-selections | grep shim shimmer-themes install
On s’exécute à nouveau :
test@test-virtual-machine:~$ sudo apt purge grub-efi-amd64 Lecture des listes de paquets... Fait Construction de l'arbre des dépendances Lecture des informations d'état... Fait Les paquets suivants ont été installés automatiquement et ne sont plus nécessaires : grub-efi-amd64-bin grub2-common Veuillez utiliser « sudo apt autoremove » pour les supprimer. Les paquets suivants seront ENLEVÉS : grub-efi-amd64* 0 mis à jour, 0 nouvellement installés, 1 à enlever et 219 non mis à jour. Après cette opération, 187 ko d'espace disque seront libérés. Souhaitez-vous continuer ? [O/n] o (Lecture de la base de données... 199155 fichiers et répertoires déjà installés.) Suppression de grub-efi-amd64 (2.02+dfsg1-12ubuntu2) ... (Lecture de la base de données... 199151 fichiers et répertoires déjà installés.) Purge des fichiers de configuration de grub-efi-amd64 (2.02+dfsg1-12ubuntu2) ... test@test-virtual-machine:~$ test@test-virtual-machine:~$ sudo apt purge grub-efi-amd64-bin Lecture des listes de paquets... Fait Construction de l'arbre des dépendances Lecture des informations d'état... Fait Le paquet suivant a été installé automatiquement et n'est plus nécessaire : grub2-common Veuillez utiliser « sudo apt autoremove » pour le supprimer. Les paquets suivants seront ENLEVÉS : grub-efi-amd64-bin* 0 mis à jour, 0 nouvellement installés, 1 à enlever et 219 non mis à jour. Après cette opération, 6 548 ko d'espace disque seront libérés. Souhaitez-vous continuer ? [O/n] o (Lecture de la base de données... 199151 fichiers et répertoires déjà installés.) Suppression de grub-efi-amd64-bin (2.02+dfsg1-12ubuntu2) ... test@test-virtual-machine:~$
Ce qui conduit au résultat qui nous satisfait enfin :
test@test-virtual-machine:~$ dpkg --get-selections | grep grub
grub-common install
grub2-common install
2.1. Suppression de la partition efi
Celle-ci n’ayant plus aucune utilité, on peut la supprimer. Fdisk fait parfaitement l’affaire :
test@test-virtual-machine:~$ sudo fdisk /dev/sda Bienvenue dans fdisk (util-linux 2.33.1). Les modifications resteront en mémoire jusqu'à écriture. Soyez prudent avant d'utiliser la commande d'écriture. Commande (m pour l'aide) : p Disque /dev/sda : 20 GiB, 21474836480 octets, 41943040 secteurs Disk model: VMware Virtual S Unités : secteur de 1 × 512 = 512 octets Taille de secteur (logique / physique) : 512 octets / 512 octets taille d'E/S (minimale / optimale) : 512 octets / 512 octets Type d'étiquette de disque : gpt Identifiant de disque : 5265C1C1-D016-45AD-9443-44E588498AA9 Périphérique Début Fin Secteurs Taille Type /dev/sda1 2048 505855 503808 246M Système EFI /dev/sda2 505856 41881599 41375744 19,7G Système de fichiers Linux Commande (m pour l'aide) : d Numéro de partition (1,2, 2 par défaut) : 1 La partition 1 a été supprimée. Commande (m pour l'aide) : w La table de partitions a été altérée. Failed to remove partition 1 from system: Périphérique ou ressource occupé The kernel still uses the old partitions. The new table will be used at the next reboot. Synchronisation des disques. test@test-virtual-machine:~$
Un message d’erreur signale l’échec de la suppression, qui est pourtant bien réelle. Le résultat d’un sudo fdisk -l confirme que les choses se sont bien passées :
test@test-virtual-machine:~$ sudo fdisk -l Disque /dev/sda : 20 GiB, 21474836480 octets, 41943040 secteurs Disk model: VMware Virtual S Unités : secteur de 1 × 512 = 512 octets Taille de secteur (logique / physique) : 512 octets / 512 octets taille d'E/S (minimale / optimale) : 512 octets / 512 octets Type d'étiquette de disque : gpt Identifiant de disque : 5265C1C1-D016-45AD-9443-44E588498AA9 Périphérique Début Fin Secteurs Taille Type /dev/sda2 505856 41881599 41375744 19,7G Système de fichiers Linux test@test-virtual-machine:~$
2.3. Suppression du point de montage de la partition efi
La partition efi n’existant plus, il convient de supprimer ce qui pourrait engendrer un erreur. Pour la démonstration, j’utilise l’éditeur nano. On se contente d’ajouter un # devant le point de montage de la partition efi :
test@test-virtual-machine:~$ sudo nano /etc/fstab # /etc/fstab: static file system information. # # Use 'blkid' to print the universally unique identifier for a # device; this may be used with UUID= as a more robust way to name devices # that works even if disks are added and removed. See fstab(5). # # <file system> <mount point> <type> <options> <dump> <pass> # / was on /dev/sda1 during installation UUID=22e895b7-f8bb-45a0-83c2-51e005a030b0 / ext4 errors=remoun$ /swapfile none swap sw $ /dev/fd0 /media/floppy0 auto rw,user,noauto,exec,utf8 0 0 # partition efi #UUID=70C8-C8A7 /boot/efi vfat defaults 0 1
A ce stade, on a supprimé tout ce qui est inutile. On peut passer à la conversion du disque :
3. Conversion du disque au format dos (mbr)
L’outil gdisk est idéal pour cette étape. Rappel : les commandes sont simples, mais non sans risque. Des sauvegardes doivent avoir été effectuées au préalable.
test@test-virtual-machine:~$ sudo gdisk /dev/sda GPT fdisk (gdisk) version 1.0.3 Partition table scan: MBR: protective BSD: not present APM: not present GPT: present Found valid GPT with protective MBR; using GPT. Command (? for help): r Recovery/transformation command (? for help): g MBR command (? for help): w Converted 1 partitions. Finalize and exit? (Y/N): y Warning: The kernel is still using the old partition table. The new table will be used at the next reboot or after you run partprobe(8) or kpartx(8) GPT data structures destroyed! You may now partition the disk using fdisk or other utilities. test@test-virtual-machine:~$
On vérifie le résultat. Le disque est bien repassé au mode dos-mbr :
test@test-virtual-machine:~$ sudo fdisk -l Disque /dev/sda : 20 GiB, 21474836480 octets, 41943040 secteurs Disk model: VMware Virtual S Unités : secteur de 1 × 512 = 512 octets Taille de secteur (logique / physique) : 512 octets / 512 octets taille d'E/S (minimale / optimale) : 512 octets / 512 octets Type d'étiquette de disque : dos Identifiant de disque : 0x00000000 Périphérique Amorçage Début Fin Secteurs Taille Id Type /dev/sda2 505856 41881599 41375744 19,7G 83 Linux test@test-virtual-machine:~$
Il ne reste plus qu’à réinstaller un grub cohérent pour notre nouvelle configuration.
4. Réinstallation de Grub-pc
4.1. Installation du paquet grub-pc
test@test-virtual-machine:~$ sudo apt install grub-pc Lecture des listes de paquets... Fait Construction de l'arbre des dépendances Lecture des informations d'état... Fait Les paquets supplémentaires suivants seront installés : grub-gfxpayload-lists grub-pc-bin Paquets suggérés : desktop-base Les NOUVEAUX paquets suivants seront installés : grub-gfxpayload-lists grub-pc grub-pc-bin 0 mis à jour, 3 nouvellement installés, 0 à enlever et 219 non mis à jour. Il est nécessaire de prendre 1 044 ko dans les archives. Après cette opération, 3 617 ko d'espace disque supplémentaires seront utilisés. Souhaitez-vous continuer ? [O/n] o Réception de :1 http://fr.archive.ubuntu.com/ubuntu disco/main amd64 grub-pc-bin amd64 2.02+dfsg1-12ubuntu2 [902 kB] Réception de :2 http://fr.archive.ubuntu.com/ubuntu disco/main amd64 grub-pc amd64 2.02+dfsg1-12ubuntu2 [138 kB] Réception de :3 http://fr.archive.ubuntu.com/ubuntu disco/main amd64 grub-gfxpayload-lists amd64 0.7 [3 658 B] 1 044 ko réceptionnés en 2s (548 ko/s) Préconfiguration des paquets... Sélection du paquet grub-pc-bin précédemment désélectionné. (Lecture de la base de données... 198875 fichiers et répertoires déjà installés.) Préparation du dépaquetage de .../grub-pc-bin_2.02+dfsg1-12ubuntu2_amd64.deb ... Dépaquetage de grub-pc-bin (2.02+dfsg1-12ubuntu2) ... Sélection du paquet grub-pc précédemment désélectionné. Préparation du dépaquetage de .../grub-pc_2.02+dfsg1-12ubuntu2_amd64.deb ... Dépaquetage de grub-pc (2.02+dfsg1-12ubuntu2) ... Sélection du paquet grub-gfxpayload-lists précédemment désélectionné. Préparation du dépaquetage de .../grub-gfxpayload-lists_0.7_amd64.deb ... Dépaquetage de grub-gfxpayload-lists (0.7) ... Paramétrage de grub-pc-bin (2.02+dfsg1-12ubuntu2) ... Paramétrage de grub-gfxpayload-lists (0.7) ... Paramétrage de grub-pc (2.02+dfsg1-12ubuntu2) ...
A mi-installation, une fenêtre s’ouvre demandant où placer grub. On choisit /dev/sda :
┌───────────────────────┤ Configuration de grub-pc ├────────────────────────┐ │ Le paquet grub-pc est en cours de mise à jour. Ce menu permet de choisir │ │ pour quels périphériques vous souhaitez exécuter la commande │ │ grub-install automatiquement. │ │ │ │ Il est en général recommandé d'exécuter grub-install automatiquement, │ │ afin d'éviter la situation où l'image de GRUB est désynchronisée avec │ │ les modules de GRUB ou le fichier grub.cfg. │ │ │ │ Si vous n'avez pas la certitude du périphérique utilisé comme │ │ périphérique d'amorçage par le BIOS, il est en général conseillé │ │ d'installer GRUB sur l'ensemble des périphériques. │ │ │ │ Veuillez noter que GRUB peut également être installé sur les secteurs │ │ d'amorçage de partitions. Certaines partitions où cela pourrait être │ │ nécessaire sont indiquées ici. Cependant, cela impose que GRUB utilise │ │ le mécanisme « blocklist », ce qui le rend moins fiable et n'est donc │ │ pas recommandé. │ │ │ │ Périphériques où installer GRUB : │ │ │ │ [x] /dev/sda (21474 Mo; VMware_Virtual_S) │ │ [ ] /dev/sda2 (21184 Mo; VMware_Virtual_S) │ │ │ │ │ │ <Ok> │ │ __________________________________________________________________________
L’installation se termine ainsi :
Creating config file /etc/default/grub with new version Installation pour la plate-forme i386-pc. Installation terminée, sans erreur. Sourcing file `/etc/default/grub' Sourcing file `/etc/default/grub.d/init-select.cfg' Création du fichier de configuration GRUB… Image Linux trouvée : /boot/vmlinuz-5.0.0-27-generic Image mémoire initiale trouvée : /boot/initrd.img-5.0.0-27-generic Image Linux trouvée : /boot/vmlinuz-5.0.0-13-generic Image mémoire initiale trouvée : /boot/initrd.img-5.0.0-13-generic fait Traitement des actions différées (« triggers ») pour man-db (2.8.5-2) ... test@test-virtual-machine:~$
4. 2. Installation de grub et mise à jour
test@test-virtual-machine:~$ sudo grub-install /dev/sda Installation pour la plate-forme i386-pc. Installation terminée, sans erreur. test@test-virtual-machine:~$ sudo update-grub Sourcing file `/etc/default/grub' Sourcing file `/etc/default/grub.d/init-select.cfg' Création du fichier de configuration GRUB… Image Linux trouvée : /boot/vmlinuz-5.0.0-27-generic Image mémoire initiale trouvée : /boot/initrd.img-5.0.0-27-generic Image Linux trouvée : /boot/vmlinuz-5.0.0-13-generic Image mémoire initiale trouvée : /boot/initrd.img-5.0.0-13-generic fait test@test-virtual-machine:~$
5. Vérifications de l’installation
5.1. Vérifications avant un redémarrage
C’est le moment de faire un nouveau rapport boot-info avant de redémarrer le PC : boot-info avant redémarrage.
On constate que plusieurs choses ont changé :
- Un grub a bel et bien été ajouté dans le mbr
============================= Boot Info Summary: ===============================
=> Grub2 (v2.00) is installed in the MBR of /dev/sda and looks at sector 1 of the
same hard drive for core.img. core.img is at this location and looks for
(,msdos2)/boot/grub. It also embeds following components:
- Le disque est bien reconnu comme un disque dos dans grub.cfg
set root='hd0,msdos2'
Mais, on a encore de nombreuses traces de notre démarrage en UEFI, notamment les points de montage et l’enregistrement du démarrage :
================================ Mount points: ================================= Device Mount_Point Type Options /dev/sda1 /boot/efi vfat (rw,relatime,fmask=0022,dmask=0022,codepage=437,iocharset=iso8859-1,shortname=mixed,errors=remount-ro) /dev/sda2 / ext4 (rw,relatime,errors=remount-ro) =================== UEFI/Legacy mode: BIOS is EFI-compatible, and is setup in EFI-mode for this installed-session.
Mais Grub a compris que notre installation est passée en mode Legacy
=================== Suggested repair The default repair of the Boot-Repair utility would reinstall the grub2 of sda2 into the MBR of sda. Grub-efi would not be selected by default because: no-win-efi
Si on souhaitait réparer, ce qui n’est pas nécessaire, la réparation serait satisfaisante. Nous nous contenterons de redémarrer.
5.2. Vérification après redémarrage
Le redémarrage se fait bien sûr en mode Legacy, après modification du bios. Un nouveau rapport boot-info nous dévoile la situation finale : boot-info final.
- Xubuntu est bien exécuté en mode Legacy
=================== UEFI/Legacy mode: This installed-session is not in EFI-mode. SecureBoot disabled sda : not-GPT, BIOSboot-not-needed, has-no-EFIpart, not-usb, not-mmc, has-os, 2048 sectors * 512 bytes
Les traces de l’installation en uefi ont intégralement disparu.