[Résolu] Installation dual boot Windows 10 UEFI

Tags: #<Tag:0x00007f63f4f1cc78> #<Tag:0x00007f63f4f1cbb0>

Bonjour,

Je fait appel à vous pour un problème d’installation de Debian stable en Dual boot avec Windows 10.

J’ai reçu ma nouvelle machine équipée par défaut de Windows 10. Comme j’ai l’habitude de faire, je télécharge et lance l’installation de Debian netinst x64. Tout se passe bien et je reboot… pour directement voir l’écran de chargement de Windows.
Je cherche sur internet pour comprendre ce qui se passe: Grub ne s’installe pas (j’ai essayé avec LILO mais même résultat). Suivant les différentes réponses trouvées sur le net, je fait les manipulations suivantes:

  • Désactivation de Secure Boot et du démarrage vérrouillé sous Windows;
  • Desactivation de Fast Boot

Voyant que ça ne marchait toujours pas, j’ai tenté l’installation avec d’autres OS (respectivement Knoppix, Ubuntu et enfin Fedora).
Avec Knoppix et Ubuntu, même résultat qu’avec Debian => l’installation se passe bien mais lorsque je redémarre: pas de GRUB.
Enfin avec Fedora, j’ai un bootloader et je peux booter sur mon Linux.

Du coup je ne comprend plus. Le fait qu’avec Fedora ça fonctionne me fait dire que tout ce que je devais désactiver sous Windows 10 est correct. Pour autant, je ne comprend pas comment avec Debian ça ne fonctionne pas ?

Auriez-vous des idées pour comprendre/voir ce qui se passe ? Quelles informations puis-je vous fournir pour que vous puissiez m’aider ?

En vous remerciant pour votre réponse,
Cordialement,
Elverion

Double contradiction :

  • Tout se passe bien ou GRUB ne s’installe pas ?
  • En mode UEFI, l’installateur Debian ne propose pas l’installation de LILO.

L’installateur a-t-il bien démarré en mode UEFI ? C’est indiqué sur l’écran d’accueil “GRUB EFI”. Dans ce cas, après l’installation la liste ou le menu de démarrage du firmware devrait contenir une entrée “debian”.
Si l’installation a été faite en mode BIOS/legacy, l’amorçage UEFI ayant la priorité c’est Windows qui sera lancé.

Ne pas confondre le “fast boot”, option du firmware BIOS/UEFI, avec le “fast startup” (démarrage rapide) de Windows 8 et 10, qui est une hibernation hybride remplaçant l’arrêt du système.

Pas forcément. Red Hat a payé pour être compatible avec le secure boot, ce que n’a pas fait Debian.

Bonjour,
J’ai eu des problèmes similaires , je pense (car je n’ai pas lu les docs) que des partitions dont l’UEFI a besoin ne sont pas en place ou ne sont pas accessibles.
Fedora , pour moi , ne fait pas parti du Libre.
Si ce n’est pas ça il faut regarder si le BIOS est signé par Microsoft , désactivation de Secure Boot ou non je n’ai pas réussi à installer le dual boot et donc Grub.
Sauf si tu es un fan de jeux récents , il faut virer Windows.
Désolé j’ai pas mieux.

Bonjour
Tout d’abord, merci pour vos réponses rapides.
@PascalHambourg:

Je suis peut-être allé un peu vite dans mes déductions. Concernant GRUB, pour être tout à fait exact, l’installation (64 bits en mode non graphique) ne me signale aucune erreur mais le GRUB n’apparait pas lorsque je démarre. J’ai associé ce comportement à un ‘ne s’installe pas’, désolé pour ce raccourcis trop rapide.

L’installateur a-t-il bien démarré en mode UEFI ?

Affirmatif, j’ai la ligne “Debian GNU/Linux UEFI Installer Menu” en haut de l’écran juste après le boot sur le CD netinst.

Dans ce cas, après l’installation la liste ou le menu de démarrage du firmware devrait contenir une entrée “debian”.

A quel endroit devrais-je trouver cette entrée ?

Ne pas confondre le “fast boot”, option du firmware BIOS/UEFI, avec le “fast startup” (démarrage rapide) de Windows 8 et 10, qui est une hibernation hybride remplaçant l’arrêt du système.

Au temps pour moi, j’ignorais cette subtilité. J’ai désactivé le fast startup de Windows. J’ai cherché dans mes options d’UEFI, je n’ai pas trouvé le fast boot (carte mère GA-78LMT-USB3).

@rrlibre

J’ai eu des problèmes similaires , je pense (car je n’ai pas lu les docs) que des partitions dont l’UEFI a besoin ne sont pas en place ou ne sont pas accessibles.

J’y ai pensé mais la partition UEFI est bien sur mon disque et lorsque j’utilise l’installateur de Debian, il la détecte automatiquement et la paramètre pour l’utiliser comme partition de boot UEFI…

Fedora , pour moi , ne fait pas parti du Libre.

En effet, et c’est ce qui me pousse à chercher plus loin.

@all
J’ai tenté de comprendre ce qui se passe en démarrant un système live pour monter la partition UEFI et voir ce qu’il y a dessus … J’ai vu que mes tentatives d’installations ont (partiellement) portées leurs fruits.
Dans les dossiers <partition_EFI>/EFI/<linux_autres_que_debian> j’ai plein de fichiers dont systématiquement “grub.cfg” et “grubx64.efi”. Dans le dossier de Debian, j’ai uniquement le fichier “grubx64.efi”.

J’ai tenté une restauration de grub en faisant un chroot puis en utilisant grub-install et grub-mkconfig mais ça n’a pas mieux fonctionné.

Si vous avez d’autres idées de pistes ou de tests, je suis preneur…

Cordialement,
Elverion

C’est nouveau, ça. La dernière fois que j’ai lancé l’installateur en mode UEFI la seule mention était “GRUB EFI” sur l’écran du menu de démarrage.

Comme je l’ai écrit, dans les options de démarrage UEFI du firmware ou dans son menu de démarrage, accessible généralement via une des touches de fonction Fx (voir la doc de la carte mère).

Ce n’est pas à Debian.

Normal.

Quel système live ? Les images live de Debian actuelles ne sont pas amorçables en UEFI.
Si ton système live est bien en UEFI, tu peux regarder ce qu’affiche la commande
efibootmgr -v
(en chroot sur Debian si pas dispo dans le système live).

Bonjour,

Je suis allé dans le menu de configuration de l’UEFI (suppr dans mon cas), dans le menu de démarrage (F12) et dans le QFlash (End) mais je n’ai vu aucune mention de Debian ou d’un quelconque démarrage sur une partition.

Ubuntu (pour rester dans une variant proche qui se lance en live en UEFI)

Voici le resultat

ubuntu@ubuntu:~$ sudo efibootmgr -v
BootCurrent: 0000
Timeout: 3 seconds
BootOrder: 0000,0001
Boot0000* EFI DVD/CDROM    PcieRoot(0x0)/Pci(0x11,0x0)/Sata(3,0,0)
Boot0001* OsLoader0000    PcieRoot(0x0)/Pci(0x11,0x0)/Sata(0,0,0)/HD(2,GPT,075284ec-2a50-49ec-80fb-82ae012e9361,0xe1800,0x31800)/File(\EFI\BOOT\BOOTX64.EFI)

Je l’ai fait tout de meme en chroot sur debian et voici le resultat

ubuntu@ubuntu:~$ sudo mkdir -p /mnt/system
ubuntu@ubuntu:~$ sudo mount /dev/sda5 /mnt/system/
ubuntu@ubuntu:~$ sudo mount /dev/sda2 /mnt/system/boot/efi
ubuntu@ubuntu:~$ sudo mount --bind /dev/ /mnt/system/dev/
ubuntu@ubuntu:~$ sudo mount --bind /dev/pts /mnt/system/dev/pts
ubuntu@ubuntu:~$ sudo mount --bind /proc /mnt/system/proc/
ubuntu@ubuntu:~$ sudo mount --bind /sys /mnt/system/sys
ubuntu@ubuntu:~$ sudo chroot /mnt/system/
root@ubuntu:/# efibootmgr -v
BootCurrent: 0000
Timeout: 3 seconds
BootOrder: 0000,0001
Boot0000* EFI DVD/CDROM    ACPI(a0841d0,0)PCI(11,0)SATA(3,0,0)
Boot0001* OsLoader0000    ACPI(a0841d0,0)PCI(11,0)SATA(0,0,0)HD(2,e1800,31800,075284ec-2a50-49ec-80fb-82ae012e9361)File(\EFI\BOOT\BOOTX64.EFI)

Cordialement,
Elverion

Bizarre, il n’y a aucune entrée d’amorçage spécifique, même pas pour Windows. Seulement des entrées standard pour le lecteur optique et pour le chargeur par défaut du disque (qui est probablement celui installé par Windows).

Tu peux essayer de remplacer ce chargeur par défaut /boot/efi/EFI/boot/bootx64.efi par une copie du chargeur GRUB de Debian /boot/efi/EFI/debian/grubx64.efi, après en avoir fait une copie de sauvegarde par précaution. Cela peut être fait automatiquement (sauf la sauvegarde) avec la commande suivante dans le chroot Debian avec toutes les partitions montées :

grub-install --removable

ou bien avec la commande suivante qui devrait en plus temps réinstaller complètement GRUB et créer une entrée d’amorçage UEFI affichée par efibootmgr :

grub-install --force-extra-removable

A noter que cette option est appliquée si on répond oui à la question sur le “chemin de périphérique amovible” lors de l’installation du chargeur GRUB durant l’installation de Debian.

1 J'aime

J’ai essaye la seconde commande mais j’ai eu l’erreur suivante:

grub-install: error: install device isn't specified

J’ai modifie la ligne de commande et le nouveau résultat est le suivant:

root@ubuntu:/# grub-install --force-extra-removable --boot-directory=/boot --recheck /dev/sda
Installing for i386-pc platform.
grub-install: error: failed to get canonical path of `/cow'.

Déjà je ne comprend pas pourquoi il essaye d’installer en plateforme i386 alors que Debian est en x64 mais bon, soucis mineur pour l’instant. Nouvelle modification de la commande (transformation du boot-dir en root-dir)

root@ubuntu:/# grub-install --force-extra-removable --root-directory=/mnt --recheck /dev/sda
Installing for i386-pc platform.
grub-install: warning: this GPT partition label contains no BIOS Boot Partition; embedding won't be possible.
grub-install: warning: Embedding is not possible.  GRUB can only be installed in this setup by using blocklists.  However, blocklists are UNRELIABLE and their use is discouraged..
grub-install: error: will not proceed with blocklists.

Exécution avec l’option debug (dans le fichier)
log-grub-install.txt (98,3 Ko)

Cordialement,
Elverion

Ne t’acharne pas, ça essaie d’installer le chargeur pour amorçage BIOS donc ça ne t’avancera à rien. L’installation pour UEFI ne demande pas de nom de périphérique.

“i386-pc” est le nom de plate-forme qui correspond à “PC BIOS” pour GRUB. Rien à voir avec l’architecture du système installé.

Tu étais dans le chroot Debian lorsque tu as exécuté ces commandes ?

Si oui c’est curieux parce que :

  • sous Debian Jessie au moins, grub-install détecte automatiquement la plate-forme (PC BIOS = i386-pc, PC UEFI 32 bits = i386-efi, PC UEFI 64 bits = x86_64-efi) si on ne spécifie pas l’option --target, donc il aurait dû essayer d’installer le chargeur pour plate-forme x86_64-efi ;
  • si tu as fait l’installation en UEFI, le paquet grub-pc-bin qui permet d’installer le chargeur pour plate-forme i386-pc n’est pas installé.

Vérifie bien que :

  • Ubuntu Live démarre bien en UEFI, via la sortie de efibootmgr ou par la présence du répertoire /sys/firmware/efi
  • dans Debian, le paquet grub-efi-amd64 est bien installé et pas grub-pc
  • dans Debian, le répertoire /boot/grub contient un répertoire x86_64-efi et non i386-pc.
1 J'aime

Oui mais je ne suis pas persuade que mon chroot est bon. j’ai fait comme décrit au dessus :

ubuntu@ubuntu:~$ sudo mkdir -p /mnt/system
ubuntu@ubuntu:~$ sudo mount /dev/sda5 /mnt/system/
ubuntu@ubuntu:~$ sudo mount /dev/sda2 /mnt/system/boot/efi
ubuntu@ubuntu:~$ sudo mount --bind /dev/ /mnt/system/dev/
ubuntu@ubuntu:~$ sudo mount --bind /dev/pts /mnt/system/dev/pts
ubuntu@ubuntu:~$ sudo mount --bind /proc /mnt/system/proc/
ubuntu@ubuntu:~$ sudo mount --bind /sys /mnt/system/sys
ubuntu@ubuntu:~$ sudo chroot /mnt/system/

Le sda5 correspond a ma partition système de Debian et sda2 correspond a ma partition UEFI. Je n’ai pas monte la partition home de Debian, c’est nécessaire ?

Le dossier /sys/firmware/efi existe bien et la sorti du efibootmgr donne ceci:

ubuntu@ubuntu:~$ efibootmgr 
BootCurrent: 0000
Timeout: 3 seconds
BootOrder: 0000,0001
Boot0000* EFI DVD/CDROM
Boot0001* OsLoader0000

Ni l’un ni l’autre … :

ubuntu@ubuntu:~$ ls /mnt/system/boot/grub/
gfxblacklist.txt  grubenv  unicode.pf2

Je n’ai pas réussi a avoir aptitude qui me réponde… mon chroot est-il bon ?

Cordialement,
Elverion

Le chroot me semble bon. Le contenu de /home n’est pas nécessaire pour dpkg, aptitude ou apt, par contre il faut que le contenu de /var soit accessible. Que se passe-t-il avec aptitude ? Si c’est un problème de terminal tu peux essayer avec

dpkg -l "grub*"

ou en recherchant un signe indirect de l’installation des paquets avec

ls -d /usr/share/doc/grub*

C’est très étonnant qu’il n’y ait (presque) rien dans /boot/grub, cela veut dire que soit le chargeur n’y a jamais été installé, soit tu n’es pas dans le bon /boot. Vérifie que /boot contient les fichiers du noyau : vmlinuz, initrd, config, System.map… Sinon regarde dans /etc/fstab s’il n’y a pas d’autre partitions à monter.

J’ai essaye avec le dpkg qui me donne ce qui suit:

root@ubuntu:/boot# dpkg -l 'grub*'
Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend
|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
||/ Name                                          Version                     Architecture                Description
+++-=============================================-===========================-===========================-===============================================================================================
un  grub                                          <none>                      <none>                      (no description available)
ii  grub-common                                   2.02~beta2-36ubuntu3        amd64                       GRand Unified Bootloader (common files)
un  grub-coreboot                                 <none>                      <none>                      (no description available)
un  grub-doc                                      <none>                      <none>                      (no description available)
un  grub-efi                                      <none>                      <none>                      (no description available)
un  grub-efi-amd64                                <none>                      <none>                      (no description available)
un  grub-efi-ia32                                 <none>                      <none>                      (no description available)
un  grub-efi-ia64                                 <none>                      <none>                      (no description available)
un  grub-emu                                      <none>                      <none>                      (no description available)
ii  grub-gfxpayload-lists                         0.7                         amd64                       GRUB gfxpayload blacklist
un  grub-ieee1275                                 <none>                      <none>                      (no description available)
un  grub-legacy                                   <none>                      <none>                      (no description available)
un  grub-legacy-doc                               <none>                      <none>                      (no description available)
un  grub-linuxbios                                <none>                      <none>                      (no description available)
ii  grub-pc                                       2.02~beta2-36ubuntu3        amd64                       GRand Unified Bootloader, version 2 (PC/BIOS version)
ii  grub-pc-bin                                   2.02~beta2-36ubuntu3        amd64                       GRand Unified Bootloader, version 2 (PC/BIOS binaries)
un  grub-xen                                      <none>                      <none>                      (no description available)
un  grub-yeeloong                                 <none>                      <none>                      (no description available)
un  grub2                                         <none>                      <none>                      (no description available)
ii  grub2-common                                  2.02~beta2-36ubuntu3        amd64                       GRand Unified Bootloader (common files for version 2)

Cette remarque et le fait de voir les paquets Grub installés en version x64 m’ont fait réfléchir et j’ai de nouveau essayé de provoquer l’installation de Grub avec la commande que tu avait fournie plus haut. Pendant la première tentative, j’avais également essayé une autre solution qui nécessitait d’exécuter la commande suivante:

sudo mount --bind /boot /mnt/system/boot

Du coup j’ai recommencé en faisant scrupuleusement les commandes suivantes:

ubuntu@ubuntu:~$ sudo mkdir -p /mnt/system
ubuntu@ubuntu:~$ sudo mount /dev/sda5 /mnt/system/
ubuntu@ubuntu:~$ sudo mount /dev/sda2 /mnt/system/boot/efi
ubuntu@ubuntu:~$ sudo mount --bind /dev/ /mnt/system/dev/
ubuntu@ubuntu:~$ sudo mount --bind /dev/pts /mnt/system/dev/pts
ubuntu@ubuntu:~$ sudo mount --bind /proc /mnt/system/proc/
ubuntu@ubuntu:~$ sudo mount --bind /sys /mnt/system/sys
ubuntu@ubuntu:~$ sudo chroot /mnt/system/
root@ubuntu:/boot# grub-install --force-extra-removable --boot-directory=/boot --recheck /dev/sda
Installing for x86_64-efi platform.
Installation finished. No error reported.

Cette fois-ci, l’architecture de la plateforme est correct, bonne nouvelle.
J’ai rebooté et là, miracle ! J’ai un Grub Debian et j’arrive à booter !

Du coup la solution c’était bien de chrooter sur Debian en ne faisant un ‘mount --bind’ QUE sur /dev, /dev/pts, /proc et /sys.
La reconstruction du Grub a ensuite suffit.

Merci infiniment pour ton aide !

Cordialement,
Elverion

Ce sont des paquets Ubuntu. Tu n’étais pas dans le chroot Debian, là, donc aucun intérêt.

Donc tu as monté le /boot du système live sur le /boot de Debian. grub-install aurait installé les fichiers de GRUB dans le /boot du système live, qui aurait évidemment disparu au redémarrage. J’avoue que la finalité de l’opération m’échappe.

Pas besoin de toutes ces options, celles que j’avais données suffisent.

Par curiosité, est-ce que efibootmgr affiche une entrée “debian” maintenant ?

Sur Ubuntu en live sans chroot cela donne ceci:

ubuntu@ubuntu:~$ efibootmgr  -v
BootCurrent: 0000
Timeout: 3 seconds
BootOrder: 0000,0001
Boot0000* EFI DVD/CDROM    PcieRoot(0x0)/Pci(0x11,0x0)/Sata(3,0,0)
Boot0001* OsLoader0000    PcieRoot(0x0)/Pci(0x11,0x0)/Sata(0,0,0)/HD(2,GPT,075284ec-2a50-49ec-80fb-82ae012e9361,0xe1800,0x31800)/File(\EFI\BOOT\BOOTX64.EFI)

Et en faisant un chroot sur Debian cela donne cela:

ubuntu@ubuntu:~$ sudo mkdir -p /mnt/system
ubuntu@ubuntu:~$ sudo mount /dev/sda5 /mnt/system/
ubuntu@ubuntu:~$ sudo mount /dev/sda2 /mnt/system/boot/efi
ubuntu@ubuntu:~$ sudo mount --bind /dev/ /mnt/system/dev/
ubuntu@ubuntu:~$ sudo mount --bind /dev/pts /mnt/system/dev/pts
ubuntu@ubuntu:~$ sudo mount --bind /proc /mnt/system/proc/
ubuntu@ubuntu:~$ sudo mount --bind /sys /mnt/system/sys
ubuntu@ubuntu:~$ sudo chroot /mnt/system/
root@ubuntu:/# efibootmgr -v
BootCurrent: 0000
Timeout: 3 seconds
BootOrder: 0000,0001
Boot0000* EFI DVD/CDROM    ACPI(a0841d0,0)PCI(11,0)SATA(3,0,0)
Boot0001* OsLoader0000    ACPI(a0841d0,0)PCI(11,0)SATA(0,0,0)HD(2,e1800,31800,075284ec-2a50-49ec-80fb-82ae012e9361)File(\EFI\BOOT\BOOTX64.EFI)

Donc non, personnellement je ne voit pas d’entrée Debian et je ne vois même aucune différence avec la sortie du efibootmgr d’avant …

Cordialement,
Elverion

Maintenant que GRUB fonctionne, tu n’as plus besoin de passer par un système live ou un chroot !

Toujours pas d’entrée de démarrage EFI pour Debian, je dirais que le firmware UEFI est buggé. C’est donc le chargeur par défaut de l’entrée 0001 qui est lancé. Je ferai donc deux avertissements :

  • En cas de réinstallation de Debian, il faudra bien répondre oui à la question demandant s’il faut installer GRUB dans le chemin de périphérque amovible, qui correspond à l’emplacement du chargeur par défaut EFI/boot/bootx64.efi.

  • Initialement le chargeur par défaut était celui installé par Windows, et il est possible qu’à l’occasion d’une mise à jour ou d’une réparation de celui-ci, GRUB soit écrasé. Il faudra donc passer par l’installateur Debian en mode rescue (ou un système live), monter la partition EFI et exécuter à nouveau grub-install --removable (ou juste remplacer le fichier par EFI/debian/grubx64.efi) pour remettre GRUB à la place.