Dual-boot W8-Xubuntu 13.10 en UEFI

Pour dépanner ceux qui galèrent pour installer Ubuntu en dual boot avec W8/W10 préinstallé en uefi (et pour faire taire ceux qui racontent n’importe quoi… et j’en connais), je propose un tuto en images.

La procédure a été réalisée sur un pc virtuel sous vmware (avec virtualbox, j’ai eu des problèmes avec l’uefi trop instable). J’ai choisi Xubuntu plutôt qu’Ubuntu pour une question de compatibilité graphique. Et je n’aime pas Unity.

1. Situation de départ: W8 installé en uefi.

Je ne détaille pas l’installation de W8, celui-ci étant en principe déjà en place sur les pc.

1475947086-ddluqrqhtmb-partitions2.png - envoi d'image avec NoelShack

Le pc présente ici trois partitions au départ.

  • Récupération de 300 Mo: c’est le démarrage avancé (console de réparation).
  • Partition efi de 99 Mo: partition de démarrage (elle contient les fichiers efi)
  • Partition C en NTFS: le système.

Un diskpart montre qu’une partition « réservé » est cachée: msr de 128 Mo

1475947517-ddluumehaul-diskpart2.png - envoi d'image avec NoelShack

Les trois premières partitions ne doivent absolument pas être modifiées. Les pc du commerce possèdent en outre une partition recovery qu’il faut bien entendu ne pas modifier si on veut ne pas perdre la possibilité de restaurer en interne.

2. Les opérations de sauvegarde.

A ce stade, puisqu’on va faire des modifications, il est plus que judicieux de faire des sauvegardes de sécurité.

- Création de la clé de récupération selon la méthode préconisée par le constructeur. Attention, bugué chez Asus et Acer.
- Création d’une image du disque complet avec Acronis, Aomei ou autre.
- Sauvegarde de la partition efi (facultatif). On peut la monter avec la commande mountvol z: /s et accéder aux fichiers efi.

3. Préparation de l’emplacement de Xubuntu

On réduit la partition C de Windows depuis W8 directement (touche windows + X et gestion de disque). On évite les outils tiers qui génèrent des problèmes, gparted y compris. Ici la partition de 30 go est réduite à 18 Go, ce qui laisse largement la place pour installer xubuntu.
1475947517-ddluxw9f3qj-partitions22.png - envoi d'image avec NoelShack

Le résultat est le suivant, lorsque l’opération est finalisée. On est prêt à lancer l’installation de notre Linux.
1475947517-ddluceovszk-partitions32.png - envoi d'image avec NoelShack

4. Démarrer son Xubuntu en Uefi

A ce stade, c’est la configuration du bios/uefi qui va déterminer comment on s’y prend. En principe, le bios est réglé en uefi et le DVD d’ubuntu doit se lancer automatiquement dans ce mode (si besoin, le mettre en tête de liste dans le boot). Si on n’est pas sûr, on désactive l’option legacy, l’option csm, on active « other systems » et si nécessaire, on désactive « le boot secure » (en principe, c’est inutile, la signature d’ubuntu étant connue de W8).

Sur Vmware, les choses sont simples et via F2, on accède à un menu boot qui permet de lancer le DVD en uefi.

1475947517-ddlvnke7wva-boot-uefi2.png - envoi d'image avec NoelShack

Sur un vrai pc, on trouve parfois l’équivalent via une touche Fxx ou via l’onglet « boot avancé » dans le bios/uefi… Là, je ne peux pas donner toutes les options, tant les bios/uefi sont nombreux et différents. Il faut un peu chercher. On arrive à quelque chose ressemblant à ceci.
1475947517-ddlupkvryvw-bios22.png - envoi d'image avec NoelShack
On lance le DVD ou l’USB  Xubuntu en mode uefi. C’est ici qu’une première vérification doit être faite. Le menu Grub qui s’affiche doit présenter un fond noir, et non un fond violet.

Edit. Les distributions Linux étant signées, on ne désactive plus le boot-secure. On s’assure simplement que le live-cd démarre sur le menu en noir et blanc de Grub.

On accède au grub de Xubuntu, et on choisit d’essayer (et non d’installer), car ça permet de voir si le pc supporte bien Xubuntu (Wifi, graphisme, pavé tactile, etc.)
1475947517-ddluspkzdck-grub2.png - envoi d'image avec NoelShack

Xubuntu se lance et on accède au bureau du live-cd. On choisit d’installer.

5. L’installation

Il suffit de maîtriser très vaguement l’anglais pour trouver l’icône d’installation sur le bureau.
1475947519-ddlutthrfbi-instal12.png - envoi d'image avec NoelShack

La suite est sans surprise, passage en français, etc. jusqu’à ce menu.

1475947519-ddluuwfzass-instal22.png - envoi d'image avec NoelShack
Ici, il faut être prudent. Un bug depuis la version 13.04 masque la présence de W8 à l’installateur…  (obsolète depuis la version 16.04).

Il faut absolument choisir l’option « autre chose » (Edit. Ce n’est plus une obligation, mais je conseille cette option, qui permet de savoir ce qu’on fait). On va partitionner manuellement. Sur l’espace libre, on choisit de créer (avec la touche +)

- une partition ext4 de 10 Go avec le marqueur / comme point de montage pour mon Linux (qui devient sda5)
- une partition swap avec ce qu’il me reste. Ici 2 Go, ce qui correspond à ma ram.
- (on aurait pu créer un /home indépendant, mais pour mon exemple, ça n’avait pas grand sens).
1475947519-ddlu1rnadqm-partition42.png - envoi d'image avec NoelShack

En bas de page, on laisse le programme de démarrage (grub2.efi, en réalité) s’installer où il le veut, par défaut. On lance l’installation qui se fait en 15 min environ. C’est de plus en plus rapide.
1475947519-ddlvi0nzzyz-install32.png - envoi d'image avec NoelShack

Une fois que c’est terminé, il suffit de redémarrer pour voir que grub s’est correctement mis en place et a bien identifié W8 qu’il lance depuis la partition sda2, c’est-à-dire la partition efi.

6. Le dual-boot

1475947519-ddlu4yvuc32-grub22.png - envoi d'image avec NoelShack

Les deux systèmes fonctionnent. Tout fonctionne parfaitement. On peut d’ailleurs vérifier le contenu de la partition efi en montant la partition via la commande mount. (Edit. Pas nécessaire, puisque la partition est montée via le fichier fstab)
1475947519-ddlvarmontq-efi2.png - envoi d'image avec NoelShack

Le dossier efi/boot contient bien le fichier bootx64.efi nécessaire au démarrage.
Le dossier efi/ubuntu avec les fichiers efi nécessaires à grub a bien été ajouté.
Les dossier efi/microsoft contient les copies des fichiers originaux du démarrage de W8.

7. Quelques remarques utiles.

- La partition W8 peut être inaccessible si l’option « démarrage rapide » est activée. En effet, dans ce cas, W8 est simplement mis en veille et le montage de partition échoue (puisqu’elle est « occupée »). Il faut donc désactiver obligatoirement cette option si on veut y accéder. Si on « force » le montage avec la commande mount (ce que j’ai tenté), W8 marquera une erreur au démarrage suivant et proposera une réparation de la partition… mais dans le doute, mieux vaut être prudent.

- On peut toujours modifier l’ordre de boot selon la méthode traditionnelle ( /etc/default/grub et les fichiers du dossier /etc/grub.d), proposée sur le site ubuntu. Là, il n’y a pas de changement par rapport à l’installation en mbr.

- On peut supprimer le dual-boot (si on ne veut plus de son Linux) en utilisant le DVD ou la console W8 via la commande bcdboot c:\windows (c: est peut-être à adapter). W8 redémarre seul et on peut supprimer les partitions Linux.

(il ne me reste plus qu’à « torturer » tout ça avec gdisk, testdisk, boot-repair, bootrec /fixmbr pour voir comment on peut sauver une situation désespérée…. à suivre).

8. Réparations possibles

a) Réparer la partition efi complètement

Pour réparer tout ça… J’ai utilisé un une clé usb W7 64 bits non modifiée, c’est-à-dire sans le dossier efi/boot/bootx64.efi (l’équivalent avec W8 ou les clés de réparation fonctionnent aussi). J’ai écarté l’utilisation de gparted, et je testerai plus tard gdisk afin de voir si le fait de mettre le code EF00 sur une partition fat32 avec drapeau boot suffirait.

a1. On recrée la partition efi

diskpart 
select disk n (n étant le numéro du disque dur).
create partition efi
format fs=fat32
exit

Rien de plus, le gestionnaire de partitionnement fait tout le travail en choisissant l’espace libre et en attribuant le statut système

a2. On réécrit son contenu.

Microsoft a fait les choses plutôt correctement avec la commande bcdboot qui va chercher les fichiers dans la partition Windows pour les écrire sur la partition système

bcdboot c:\windows (c, d, ou e... un list volume permet de savoir)

A ce stade, on peut constater que notre W8 est réparé et redémarre.

a3. On répare grub pour récupérer ubuntu. Pour ça, on utilise le live-cd Linux.

Réparation automatique avec boot-repair… les fichiers de grub sont réécrits, mais boot-repair ajoute pas mal d’entrées inutiles qui polluent un peu le démarrage. On est cependant obligé de passer par là si on n’a pas une console de W7 ou de W8.

b) Réparer grub depuis le live-cd Xubuntu

Pour réinstaller manuellement les fichiers grub dans la partition efi. Utile pour le cas où on n’a pas fait de sauvegarde.

Je me suis inspiré de ce site :

http://superuser.com/questions/376470/how-to-reinstall-grub2-efi

sudo mount /dev/sda5 /mnt #sda5 est ma partition Linux
sudo mount /dev/sda2 /mnt/boot/efi #sda2 est ma partition efi
for i in /dev /dev/pts /proc /sys; do sudo mount -B $i /mnt$i; done  (on monte tout ce qui est nécessaire pour chrooter)
sudo cp /etc/resolv.conf /mnt/etc/ #active le réseau après le chroot
modprobe efivars # efivars semble nécessaire au bon fonctionnement du chroot
sudo chroot /mnt

Ici, les commandes proposées sur le lien fonctionnent mais n’écrivent rien dans le dossier boot/efi (j’ai vérifié). J’ai remplacé par un simple

grub-install
sudo update-grub

Le dossier ubuntu et ses quatre fichiers sont ajoutés. On n’a plus qu’à démonter le tout pour finir le travail proprement…

Ctrl+D pour sortir du chroot

for i in /sys /proc /dev/pts /dev; do sudo umount /mnt$i; done
sudo umount /mnt/boot/efi
sudo umount /mnt 
sudo reboot

On retrouve son dual boot W8/Ubuntu opérationnel et parfaitement propre.