Osez le dual-boot : Plus facile avec l'UEFI !

Rédigé par Ben'Oua - - Aucun commentaire

J'ai beaucoup tenté de jouer sous Linux. J'ai tenté, et j'ai réussi, mais l'expérience n'était pas parfaite.
Alors oui, certains jeux sont compatibles avec Linux, et dans ces cas là, tout va bien. Mais quand les jeux sont 'Windows only'...
Alors oui, Wine fait bien l'affaire dans la plupart des cas (sauf pour Les Sims 2). Mais Wine + configuration d'une manette (car oui, je joue sur PC avec une manette, crucifiez-moi) n'est pas une chose simple. Surtout que le fonctionnement n'est pas le même avec une manette filaire et une manette sans-fil !

Et comme je suis un grand maniaque, qui ne peut se mettre à jouer que quand tout est parfait... J'ai passé bien plus de temps à peaufiner ma médiathèque de jeux sous Linux et les réglages de manette qu'à vraiment jouer, voulant vraiment privilégier Linux (que je trouve malheureusement un peu délaissé pour les jeux). Et puis un jour, j'ai abandonné : je ne pouvais pas faire tourner tout les jeux non-natifs avec une manette totalement fonctionnelle, et il fallait bien que je me rende à l'évidence. Alors j'ai songé à Windows, à l'expérience facile pour jouer à tout les jeux, sans passer des heures à configurer ma manette... Mais je m'inquiétait à propos du dual-boot (je n'allais certainement pas renoncer en plus à Linux !), car dans mes souvenirs, le GRUB et Windows se faisaient souvent la guerre, quand l'un se mettait à jour, il arrivait qu'un casse l'autre... Et je sais que je ne suis pas le seul à avoir eu cette crainte.

Mais tout ça c'est fini, avec le boot UEFI ! (en plus ça rime, youpi)

Le problème auparavant, avec les installations bios/legacy, c'est que le chargeur de démarrage (GRUB ou Windows Boot Loader) était installé dans le MBR, la partie tout au début du disque dur. Le bios lisait alors cette petite partie, pour charger le chargeur de démarrage, qui contenait généralement plusieurs lignes, une pour chaque OS installé. En général, on installait Windows, puis Linux, qui installait alors GRUB sur le MBR. Ainsi, lorsque l'ordinateur démarrait, le GRUB se lançait, et on choisissait alors l'OS sur lequel booter.

Mais avec l'UEFI, les entrées de chaque système sont inscrites dans le bios (enfin, dans l'UEFI). L'UEFI ne démarre plus directement sur un périphérique (ne cherche pas le MBR).
Chaque OS disposant de son chargeur de démarrage (GRUB pour Linux, Windows Boot Loader pour Windows), l'UEFI pointe alors vers chacun de ces chargeurs de démarrage. Ainsi, quand un OS est mis à jour, on se fiche complètement qu'il aille écrire dans le MBR du disque, car on ne démarre plus de cette manière ! (Je ne suis d'ailleurs pas sûr qu'il y ait d'écriture dans le MBR du tout avec UEFI).


1. Préparation :

Après avoir sauvegardé mes données, je suis reparti sur des installations propres :
J'ai utilisé un logiciel de partitionnement (Gparted en LiveCD par exemple) et j'ai découpé (avec mon joli couteau) mon SSD de cette manière :
- Une première partie pour le système Windows ;
- Une seconde partie pour le système Linux (Linux Mint chez moi 😊) ;

Sur mon second disque, un disque dur sur lequel sont mes données, j'ai partitionné de cette manière :
- Une première partition pour mon Linux (/home, partition que je disposait déjà sur ma précédente installation, que j'ai réduite pour laisser la place à la suivante) ;
- Une seconde partition pour mon Windows, qui contiendra surtout les jeux ;


2. Installation :

J'ai lancé l'installation de Windows 10, que j'ai installé sur la première partition de mon SSD.
Une fois Windows installé et lancé, j'ai formaté la seconde partition de mon disque dur en NTFS, et je lui ai attribué une lettre.

J'ai ensuite lancé l'installation de Linux Mint, que j'ai installé sur la seconde partition de mon SSD.
Lors de l'installation, je lui ai également indiqué que la première partition de mon disque dur serait utilisé pour le /home.

Et voilà, c'est fini ! (ou presque)


3. Résultat :

On a donc nos deux systèmes installés, et chacun dispose d'une entrée dans l'UEFI de la carte-mère. Ainsi, on peut choisir, via les paramètres UEFI/BIOS, sur quel système booter au démarrage. Au démarrage du PC, si on ne veux pas booter sur le système par défaut, on martèle alors la touche qui correspond au 'boot menu' sur son clavier, et on choisi l'autre OS.

Mais quand on est déjà sur un système, et qu'on veux redémarrer sur un autre, y a pas plus simple ? Si j'y viens.
J'ai cherché, et comme vous le savez, j'aime bien que tout soit parfait, alors j'ai cherché longtemps avant de pouvoir rédiger cet article.


4. Peaufinage :

Sous un OS, afin de rebooter sous un autre, il faut faire en sorte que l'OS envoie une instruction à l'UEFI de la carte-mère, afin de changer l'instruction du prochain démarrage (du prochain démarrage uniquement, pas changer l'ordre de boot).

Dans mon cas, mon PC boote sous Windows par défaut.
Ainsi, sous Linux, si je redémarre normalement, je redémarre sous Windows. Donc depuis Linux, si je veux redémarrer, et retourner sous Linux, il faut que je dise à l'UEFI de démarrer la prochaine fois sous Linux.
Sous Windows, c'est l'inverse du coup : Si je redémarre normalement, je redémarrerait bien sous Windows. Si je veux redémarrer sous Linux depuis Windows, il faut que je dise à l'UEFI de démarrer la prochaine fois sous Linux.
Dans les deux cas, on dit donc toujours la même chose à l'UEFI, mais pas de la même manière (oui, Windows et Linux ne parlent pas la même langue, c'est bien connu).


Sous Linux :
On utilise la commande efibootmgr. Si on lance cette commande, on obtient la liste des périphériques/systèmes de démarrage, et l'ordre :

On peut voir ici que 0006, soit 'Windows Boot Manager', est l'OS sur lequel le PC boote, avant 0000, 'ubuntu'.
Je lance alors la commande sudo efibootmgr --bootnext 0000, les lignes BootNext: 0000 et BootCurrent: 0000 s'ajoutent alors à la sortie que l'on a eu précédemment :

Il n'y a plus qu'a redémarrer, et normalement, l'UEFI se comportera comme choisi !

Libre à vous de créer un script pour n'avoir qu'à double cliquer dessus, et de faire le nécessaire pour ne pas avoir à taper de mot de passe sudo pour utiliser efibootmgr et reboot !


Sous Windows :

Je reboote sous Windows pour retrouver les bonnes commandes, et je vous explique ça ! (et du coup je me suis fait avoir, vu que j'ai lancé ma commande pour dire à l'UEFI de booter sous LInux la prochaine fois...)

On utilise la commande bcdedit ou bcdedit.exe (dans un cmd avec droits d'administrateur). Attention : bcdedit seul nous affichera les entrées du Windows Boot Loader, hors, c'est sur l'UEFI de la carte-mère que l'on veut agir. Pour lister ses entrées, on utilisera alors :
bcdedit /enum firmware
Cette commande renvoie beaucoup d'informations, mais voici l'essentiel, sous "Gestionnaire de démarrage du microprogramme" :

On voit alors ici que bootmgr est le premier dans la liste, ce qui correspond au 'Windows Boot Manager'.
Il nous faut déterminer laquelle de nos deux autres entrées est celle de Linux, heureusement, un peu plus bas, des détails nous sont donnés pour chaque UUID :

On sait alors que l'entrée qui commence par 2e934..., la deuxième, est celle pour Linux.

La commande pour donner l'instruction à l'UEFI de booter sur cet OS au prochain démarrage est donc la suivante :
bcdedit.exe /set {fwbootmgr} bootsequence {2e934ba3-6d38-11ea-b3f1-806e6f6e6963} /addfirst

Il n'y a plus qu'a redémarrer, et normalement, cette fois aussi, l'UEFI se comportera comme choisi !

Libre à vous encore une fois de créer un script pour faciliter ce reboot.


Libre à vous aussi de créer deux scripts, un pour rebooter sous Windows, et un sous Linux, sur les deux OS, pour vous éviter de réfléchir "Alors là je suis sous Linux, donc si je veux redémarrer sous Windows est-ce que j'ai une commande à lancer ou je dois redémarrer normalement ? Je sais plus... Je vais étendre l'ordi du coup."

Classé dans : - Mots clés : aucun

Écrire un commentaire

Quelle est la deuxième lettre du mot vyouq ?