Comment faire pour que le bios UEFI démarre GRUB, pas Windows?

22

Le TL; DR, ajouté dans l'édition:

La question est:

Comment puis-je faire en sorte que le BIOS préfère GRUB à Windows Boot Manager sur la même partition de démarrage UEFI?

Le problème n'est pas avec Grub; Grub fait ce qu'il faut au démarrage du BIOS. Le problème n'est pas avec «le disque n'est pas amorçable», car l'amorçage UEFI Windows et l'amorçage UEFI Grub sont amorçables. Le problème est à partir de quel UEFI bootstrap le BIOS choisit de démarrer.

Je configure un nouvel ordinateur et je veux qu'il démarre par défaut dans Ubuntu, mais j'ai la possibilité de sélectionner Windows au démarrage. Ceci est particulièrement important si le courant se coupe et revient; Je ne serai même pas dans la maison.

J'ai commencé par installer Ubuntu 17.04 sur mon disque NVMe interne, partitionné avec GPT pour utiliser la moitié du disque et une partition de démarrage UEFI distincte. GRUB démarre très bien, et je vois le menu de démarrage GRUB au démarrage où je peux sélectionner les éléments que GRUB connaît.

Ensuite, j'ai installé Windows 10 Pro à partir d'une image ISO récemment téléchargée. Il a installé Windows Boot Manager sur la même partition UEFI, et a laissé Ubuntu intact (génial!) Et cela démarre correctement dans Windows 10.

Cependant, il a fait "quelque chose" qui fait que le firmware UEFI sélectionne immédiatement le gestionnaire de démarrage Windows plutôt que GRUB à la mise sous tension. La seule façon de démarrer Linux maintenant est d'utiliser le gestionnaire de démarrage du BIOS (F11 sur mon BIOS) et de sélectionner manuellement le chargeur de démarrage GRUB. Le BIOS UEFI sait qu'il existe plusieurs installations de démarrage sur la partition UEFI, car je peux choisir entre elles dans le gestionnaire de démarrage. Cependant, lorsque je suis dans le menu de configuration du BIOS UEFI, il me permet simplement de choisir "UEFI boot my internal drive" dans la sélection de priorité de démarrage - il ne me permet pas de choisir le chargeur de démarrage particulier sur cette partition à utiliser . Et, par défaut, il choisit Windows, pas GRUB.

Les internets (et ce site) suggèrent que l'ancienne façon de résoudre ce problème consiste à exécuter update-grub(donc GRUB reconnaît Windows), puis grub-install(à remettre GRUB sur l'appareil.) Je l'ai fait, mais malheureusement, il a toujours le comportement décrit ci-dessus, où le BIOS choisit par défaut le Gestionnaire de démarrage Windows. ( update-grubtrouve l'installation de Windows Boot Manager et l'ajoute au menu, et cet élément de menu fonctionne lorsque je choisis manuellement la partition GRUB dans le gestionnaire de démarrage UEFI.)

Que puis-je faire pour faire de GRUB le démarrage "par défaut" de ma partition de démarrage UEFI?

Utilisation d'une carte mère MSI X399 Carbon.

Deuxième édition: parce que la bonne réponse finit par être mentionnée dans un commentaire à une réponse, je vais la répéter ici:

"BCDEDIT" in an admin shell on Windows is the working solution. The others don't work.
Jon Watte
la source
Il vous suffit d'installer Windows puis Linux. Pas l'inverse. J'ai exactement le problème opposé. Quand le courant est coupé puis revient, mon ordinateur entre dans grub et démarre sous Linux, smh. Une chose est que j'ai chaque système sur son propre disque. Sur l'ordre de démarrage, je choisis le lecteur avec Linux et Grub.
dmb
1
C'est incroyable combien de personnes suggèrent des choses qui sont déjà suggérées par d'autres personnes, et j'ai déjà dit que cela ne fonctionnait pas, ni dans mon message d'origine, ni dans les commentaires ci-dessous. La solution correcte était "BCDEDIT" dans un shell d'administration Windows. Aucune des autres suggestions ne l'a résolu (et la plupart d'entre elles, j'avais déjà essayé, selon ma question.)
Jon Watte

Réponses:

21

Il existe plusieurs façons de procéder, notamment:

  • L'utilitaire de configuration EFI - La plupart des EFI fournissent des utilitaires de configuration auxquels vous pouvez accéder en appuyant sur une touche spéciale au démarrage (Esc, Del ou une touche de fonction, généralement; mais quelle clé il s'agit d'un système à l'autre). Celles-ci fournissent souvent, mais pas toujours, un moyen d'ajuster l'ordre de démarrage. Si votre micrologiciel propose une telle option, vous devriez pouvoir l'utiliser pour déplacer GRUB en position supérieure. (GRUB est susceptible d'être appelé ubuntu, étant donné que vous l'avez installé à partir de cette distribution.)
  • Un shell EFI - Vous pouvez utiliser la bcfgcommande dans un shell EFI version 2, comme décrit sur le wiki Arch Linux. Si votre système n'est pas déjà configuré avec un shell facile d'accès, cette approche est probablement plus difficile à utiliser que les autres, mais elle est indépendante du système d'exploitation.
  • EasyUEFI - Le programme Windows EasyUEFI tiers est probablement le moyen le plus simple de faire ce que vous voulez. Vous pouvez cliquer sur l' ubuntuentrée dans la liste d'EasyUEFI et la déplacer vers le haut.
  • bcdedit- La bcdeditcommande Windows peut modifier l'ordre de démarrage basé sur NVRAM. Plus précisément, ouvrir une fenêtre d'invite de commandes administrateur et taper bcdedit /set "{bootmgr}" path \EFI\ubuntu\shimx64.efi(éventuellement suivi par bcdedit /set "{bootmgr}" description "ubuntu"pour garder la description sensible) devrait faire l'affaire.
  • efibootmgr- Cet outil Linux peut ajuster l'ordre de démarrage. Commencez par taper sudo efibootmgrseul pour voir les options. Notez le numéro ( Boot####) associé à l' ubuntuentrée et l'ordre de démarrage actuel (sur la BootOrderligne). Vous pouvez ensuite entrer un nouvel ordre de démarrage avec l' ubuntuentrée en haut en utilisant l' -ooption. Par exemple, si l'ordre de démarrage actuel est 0000 0003 ubuntu0007 0004 et 0007, vous devez taper sudo efibootmgr -o 0007,0000,0003,0004pour ajuster l'ordre de démarrage.
  • refind-mkdefault- Ce script est livré avec rEFInd, et c'est un moyen d'automatiser la procédure précédente. Si vous n'utilisez pas rEFInd, vous devez télécharger le script ici et le rendre exécutable ( chmod a+x refind-mkdefault). Vous devez ensuite l'exécuter en tant que sudo ./refind-mkdefault -L ubuntuou sudo ./refind-mkdefault -L shimx64pour faire de GRUB l'entrée de démarrage par défaut.

Il existe des problèmes potentiels et des complications avec l'une de ces options. Le facteur de complication le plus probable est s'il existe des ubuntuentrées de démarrage anciennes ou alternatives . Il est important que vous déplaciez la bonne à la position supérieure dans l'ordre de démarrage; si vous déplacez le mauvais, vous vous retrouverez avec aucun changement de comportement ou quelque chose de non fonctionnel, ce qui rendrait le démarrage plus difficile. Si vous utilisez efibootmgr, la BootCurrentligne peut vous aider à dire quelle option vous devez définir par défaut.

Il existe d'autres façons de le faire qui sont exagérées. La réinstallation de GRUB (via Boot Repair ou grub-install) devrait faire l'affaire, par exemple. Cependant, ces approches risquent d'endommager une configuration GRUB connue.

Notez également que certains EFI sont bogués et que d'autres problèmes peuvent rendre difficile le démarrage fiable de GRUB. Vous voudrez peut-être consulter ces questions et réponses sur AskUbuntu si vous rencontrez de tels problèmes:

Rod Smith
la source
Comme je l'ai décrit dans la question, l'utilitaire de configuration EFI ne me laisserait pas choisir ubuntu par défaut, bien qu'il me permette de le faire dans le menu de démarrage manuel. Cela me permettrait simplement de choisir le lecteur, puis de démarrer Windows à partir de cela. efibootmgr a tenté de modifier l'ordre de démarrage, mais le BIOS n'a pas fait attention au redémarrage. EasyBCD n'a pas fonctionné - il ne m'a pas permis d'ajouter plus d'éléments de menu. Cependant, "BCDEDIT" dans un shell administrateur a effectivement fonctionné, alors merci pour cette option!
Jon Watte
Notez que EasyBCD et EasyUEFI sont deux programmes différents du même fournisseur. Malheureusement, il semble que la version gratuite d'EasyUEFI ne soit plus disponible - seules les versions d'essai sont proposées. Cependant, BOOTICE est un autre programme gratuit qui peut modifier les paramètres de démarrage UEFI: site chinois d'origine , site en anglais avec description et captures d'écran .
telcoM
L'utilisation sudo efibootmgr -n 0002est bien meilleure que de modifier l'ordre SO actuel. Il change BootNext: 0001et part BootCurrent: 0002pour la prochaine fois, laissant vos entrées GRUB actuelles intactes. Ajoutez simplement un bash avec chmod +xet encapsulez cette commande avec le redémarrage.
m3nda
2

J'ai eu ce problème exact au cours des dernières semaines. Je l'ai compris en utilisant ces options. Avant de faire une de ces choses, je vous recommande d'aller dans votre BIOS / UEFI et de vérifier l'ordre de démarrage et de vous assurer que l'emplacement d'installation de grub est en premier.

Donc, comme je le vois, vous avez deux options.

Option 1

Ce que je vous recommanderais, c'est d'installer Windows 10 en premier. Installez ensuite ubuntu. Mais je sais que c'est un peu tabou de dire simplement "réinstaller votre logiciel", donc je proposerai également une alternative.

Option 2

Avec votre configuration actuelle, je vous recommande de démarrer dans un lecteur de CD / flash Ubuntu Live et d'installer et d'exécuter boot-repair. Cliquez sur l'option "Réparation recommandée" et suivez les instructions données. Parcourez-le attentivement et lisez toutes les commandes avant de l'exécuter. Cela remplacera l'installation de grub actuelle par une nouvelle qui devrait, espérons-le, la corriger.

taterbotz
la source
Merci pour les suggestions, mais je les avais déjà essayées. La première fois que j'ai installé des choses, j'ai commencé par Windows 10, puis Ubuntu 17.04, puis Boot Repair. Il est toujours par défaut sur Windows, puis j'ai effacé et réinstallé avec Ubuntu en premier, ce qui m'amène là où je suis maintenant.
Jon Watte
Je suppose que vous avez essayé d'ajuster l'ordre de démarrage dans votre UEFI, non?
taterbotz
Oui, comme je le dis: "lorsque je suis dans le menu de configuration du BIOS UEFI, cela me permet simplement de choisir" UEFI boot mon disque interne "dans la sélection de priorité de démarrage - il ne me laisse pas choisir quel chargeur de démarrage particulier sur cette partition à utiliser "
Jon Watte
2

Je vois plusieurs solutions:

  1. Modifiez votre UEFI pour ajuster la valeur par défaut. Sur Linux, vous pouvez utiliser efibootmgr. Sous Windows, je ne suis pas sûr, mais je pense que vous pouvez démarrer dans une option de récupération qui vous permet de configurer l'UEFI. Ou vous préférerez peut-être installer quelque chose comme rEFInd.
  2. Modifiez le nom du dossier sur la partition EFI. Je pense qu'il préfère, ou revient à, un dossier appelé boot.
  3. Utilisez simplement le chargeur de démarrage Windows, je pense qu'il peut être configuré pour démarrer d'autres systèmes d'exploitation.
jiggunjer
la source
Je pourrais modifier l'ordre de démarrage en utilisant efibootmgr, mais le BIOS l'ignore et démarre quand même Windows. Changer le nom du dossier de démarrage (ou même copier grub dans "boot") ne fonctionne pas tant que je ne supprime pas celui de Microsoft. Le chargeur de démarrage de Windows ne démarre pas les systèmes d'exploitation non Windows (du moins les systèmes non signés.)
Jon Watte
@ JonWatte Peut-être que le chargeur de démarrage uefi est différent, je me souviens avoir démarré ubuntu à partir du chargeur de démarrage de Windows 7 sur une machine bios 32 bits. Peut-être qu'il peut toujours charger grub2 en chaîne? Comme efibootmgrcela ne fonctionne pas, je sais que je n'achèterai pas de MSI.
jiggunjer
Oui, cette carte mère MSI a aussi d'autres problèmes et retourne sur Amazon en échange d'un gigaoctet.
Jon Watte
1

Je viens de faire remplacer ma carte mère dans mon ordinateur portable et grub a complètement disparu.

Je sais que cela est marqué comme fixe, mais j'ai pensé que cela pourrait vous être utile.

Pour faire apparaître grub comme option de démarrage. J'avais besoin d'ajouter un EFI au bios.

Je suis allé à "l'option de liste de démarrage" dans mon bios. Cliquez sur "Ajouter une option de démarrage" (je sais que cela est spécifique au bios). Cela m'a donné une option pour le nom de fichier, qui dans mon cas était \EFI\ubuntu\grubx64.efiet lui a donné un nomgrub

J'ai ensuite déplacé l' grubentrée en haut de la séquence de démarrage, et maintenant elle s'affiche comme entrée par défaut.

C'est-à-dire que je dis que vous pourriez avoir juste besoin de localiser le fichier EFI correct et de le déplacer en haut de votre séquence / ordre de démarrage.

Nous s
la source
1

Aucune des options ci-dessus ne fonctionnait pour moi avec l'ancien ordinateur portable HP 655. J'ai découvert que la solution était de désactiver le gestionnaire de démarrage de Windows:

sudo -s
efibootmgr
efibootmgr -b 4 --inactive

Remplacez 4 par votre nombre de gestionnaire de démarrage Windows. Exécutez à nouveau efibootmgr et vous devriez voir l'étoile disparaître pour marquer l'inactivité.

Après le démarrage de mon ordinateur, le menu de démarrage du groupe et les fenêtres peuvent toujours être choisis.

Cmazay
la source
-2

Une solution possible serait de modifier manuellement le fichier / etc / default / grub.

sudo vim /etc/default/grub

L'entrée par défaut est déterminée par le GRUB_DEFAULT=paramètre dans / etc / default / grub. La première "entrée de menu" a une valeur de "0". Si Ubuntu est la deuxième entrée de l'écran de démarrage, définissez GRUB_DEFAULT = 1.

Ensuite, vous devrez exécuter la commande pour mettre à jour la configuration de grub: update-grub

Une autre option serait d'installer grub-customizer et d'utiliser son interface graphique pour configurer la priorité de démarrage.

M. Raspberry
la source
Le problème n'est pas avec Grub. Comme je l'ai dit dans le post, si je peux faire en sorte que le BIOS choisisse l'option de démarrage Grub UEFI, alors j'obtiens le menu de démarrage Grub, qui me permet de choisir Windows ou Ubuntu. C'est le menu que je veux par défaut. Malheureusement, le BIOS choisit le gestionnaire de démarrage Windows par défaut.
Jon Watte
Comme je l'ai dit, vous pouvez le corriger dans l'ordre de démarrage grub en configurant Ubuntu comme premier système à démarrer. Utilisez grub-customizer pour ce faire à l'aide de l'interface graphique. linuxandubuntu.com/home/…
M. Raspberry
Encore une fois, Grub ne démarre même pas avec le BIOS. L'ordre de démarrage de Grub n'a pas d'importance. GRUB_DEFAULT n'a pas d'importance. Ce n'est pas le problème ici.
Jon Watte