Résoudre erreur de l’installateur ubuntu 19.04

L’installateur de la version 19.04 est source de nombreux problèmes lors de la création de dual-boot, si on ne prête pas attention aux choix que l’on fait. En effet, si on possède un Windows installé en mode Legacy et qu’on démarre sans le vouloir son liveUSB en mode UEFI, on risque fort de se retrouver dans une situation très problématique.

On voit ceci dans de nombreux sujets, à l’image de celui-ci : https://forum.ubuntu-fr.org/viewtopic.php?id=2040793

Le détail de l’erreur commise par l’installateur est essentiellement visible dans les lignes suivantes du rapport boot-info :

Disk /dev/sda: 223.6 GiB, 240057409536 bytes, 468862128 sectors
Disklabel type: dos

Device     Boot     Start       End   Sectors   Size Id Type
/dev/sda1            2048    206847    204800   100M  7 HPFS/NTFS/exFAT
/dev/sda2          206848 293165441 292958594 139.7G  7 HPFS/NTFS/exFAT
/dev/sda3  *    293167104 294215679   1048576   512M ef EFI (FAT-12/16/32)
/dev/sda4       294217726 468860927 174643202  83.3G  5 Extended
/dev/sda5       294217728 468860927 174643200  83.3G 83 Linux

sda3: __________________________________________________________________________
    File system:       vfat
    Boot sector type:  FAT32
    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

### BEGIN /etc/grub.d/30_os-prober ###
### END /etc/grub.d/30_os-prober ###

=================== PARTITIONS & DISKS:
sda5 : sda, not-sepboot, grubenv-ok grub2, signed grub-pc grub-efi , update-grub, 64, with-boot, is-os, not--efi--part, fstab-without-boot, fstab-has-goodEFI, no-nt, no-winload, no-recov-nor-hid, no-bmgr, notwinboot, apt-get, grub-install, with--usr, fstab-without-usr, not-sep-usr, standard, farbios, notbiosboot, .

On voit qu’une partition efi a été créée malgré le format « dos » de ce disque, qu’elle ne contient que des fichiers de démarrage pour Ubuntu, et que la version installée utilise un grub efi signé… Windows n’est pas détecté et ne boote plus, ce qui est démontré par os-prober. Bref, c’est une situation délicate à résoudre, si on veut faire les choses proprement.

I. Exemple d’installation ratée

On va partir d’un W8 installé en mode Legacy, et dans lequel on a tout préparé pour faire une installation « sans problème » :

Mon image

On voit dans la capture d’écran que le disque est bien au mode ms-dos, et qu’on a libéré un espace suffisant pour l’installation d’Ubuntu. On va volontairement faire une erreur pour l’installation et démarrer sur le live-cd en mode Uefi et non Legacy.

Les commandes suivantes montrent bien que notre démarrage de Xubuntu se fait en mode UEFI, et l’installation « à-côté de Windows » va pouvoir se faire.

 

Mon image

Rem : dans mon cas, l’option n’était pas proposée car j’avais déjà 3 partitions primaires. L’installateur créant au moins 2 partitions primaires, j’aurais donc dépassé la limite des 4 partitions. J’ai donc opté pour la solution des « partitions logiques » en passant par « autre chose », car ce cas a également été rencontré.  

L’installation se fait de manière tout à fait banale.

Rem. En fait, pas tant que ça dans mon cas, car j’ai dû passer par boot-repair suite à un plantage de l’installation. Mais bon, ce n’est pas ce qui m’intéresse. Le résultat est en tout cas celui -ciRapport boot-info

Plusieurs modifications ont été faites lors de l’installation (outre les réparations de boot-repair).

1. La partition de démarrage de Windows n’est plus bootable

/dev/sda2             616,448     1,081,343       464,896   7 NTFS / exFAT / HPFS

2. C’est bien un Grub efi qui est utilisé

sda6	: sda,	not-sepboot,	grubenv-ok	grub2,	signed grub-pc grub-efi ,	update-grub,	64,	with-boot,	is-os,	not--efi--part,	fstab-without-boot,

3. Rien n’a été écrit dans le mbr

 => Windows 7/8/2012 is installed in the MBR of /dev/sda.

4. Le PC boote bel et bien en UEFI malgré un disque ms-dos

=================== UEFI/Legacy mode:
BIOS is EFI-compatible, and is setup in EFI-mode for this installed-session.

5. Et Windows n’est pas détecté

### BEGIN /etc/grub.d/30_os-prober ###
### END /etc/grub.d/30_os-prober ###

Mais le plus grave, c’est que même si je supprime mon Linux tel qu’il est installé, mon Windows ne bootera pas. Il n’en est plus capable sans passer par des réparations. On confirme en forçant le redémarrage en mode Legacy :

Mon image

Sur un vrai PC, on aurait probablement un message signalant l’absence de système d’exploitation, voire une redirection vers le bios. Il est donc nécessaire de réparer tout cela. Et la première chose à faire, c’est de réparer Windows.

II. Réparation de Windows

Pour réparer Windows, on va démarrer à nouveau sur le liveUSB, en mode Legacy (de préférence) ou en mode Uefi. C’est finalement sans grande importance. Le rapport boot-info nous a montré ceci :

sda2: __________________________________________________________________________

    File system:       ntfs
    Boot sector type:  Windows 8/2012: NTFS
    Boot sector info:  No errors found in the Boot Parameter Block.
    Operating System:  
    Boot files:        /bootmgr /Boot/BCD

sda5: __________________________________________________________________________

    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/bkpbootx64.efi 
                       /EFI/BOOT/bootx64.efi /EFI/BOOT/fbx64.efi 
                       /EFI/BOOT/mmx64.efi /EFI/ubuntu/grubx64.efi 
                       /EFI/ubuntu/mmx64.efi /EFI/ubuntu/shimx64.efi

C’est donc la partition sda2 qui contient les fichiers de démarrage de Windows, et sda5 qui est la partition efi. On va commencer par supprimer cette partition efi sda5 et remettre le drapeau boot sur la partition sda2.  Le plus simple est d’utiliser gparted pour cela :

Mon image

La partition Windows, bien qu’indiquée en état d’erreur par gparted, ne pose pas de problème, et le redémarrage suivant  (en mode Legacy, puisqu’on n’a pas touché au bios) permet à nouveau de retrouver son Windows comme au départ :

Mon image

Le principal est fait. Windows refonctionne normalement.

La réparation peut maintenant prendre quatre directions si on veut un dual-boot :

1. Réparer Grub avec boot-repair depuis le Live-CD : cette solution est par exemple proposée ici dans ce sujet résolu par malbo  : https://forum.ubuntu-fr.org/viewtopic.php?id=2043692

2. Réparer Grub depuis le Live-CD via un chroot. Il faudra en premier lieu supprimer les paquets efi précédemment installés, et réinstaller grub-PC à la place. Je ferai une démo à l’occasion.

3. Faire la même manipulation depuis un démarrage avec SuperGrub2disk. Ca évite de chrooter. C’est en gros la technique que j’ai utilisée ici, à partir de « On réinstalle grub » :
https://forum.ubuntu-fr.org/viewtopic.php?pid=18967821#p18967821

4. Réinstaller Ubuntu dans le bon mode. C’est le choix que j’ai fait ici, par commodité. Je pars du principe que le problème apparaissant après une installation ratée, on n’a pas grand chose à perdre à passer par une réinstallation. .

La résultat après réinstallation correcte d’Ubuntu est le suivant : boot-info terminal.