web-dev-qa-db-fra.com

Ordre de démarrage UEFI selon que la clé USB est branchée

Je veux essayer Ubuntu 14.04 LTS. Parce que je ne veux pas réinstaller Windows après cela, je l'ai installé via DVD-ROM sur ma clé USB 3.0 (64 Go). Cela a bien fonctionné.

La première chose quand j'ai redémarré l'ordinateur, je me demandais si Windows ne démarrait plus, lorsque la clé USB n'était pas branchée. J'ai découvert pourquoi et changé l'ordre de démarrage dans la partition GPT en utilisant le paramètre -o de efibootmgr.

Maintenant, je dois appuyer sur F9 pour entrer dans le menu de démarrage UEFI de mon ordinateur portable HP, puis je peux sélectionner ubuntu. Tout va bien.

Une chose qui me dérange: puis-je configurer, que Ubuntu démarre automatiquement lorsque la clé USB est connectée? Sans clé USB, les fenêtres devraient démarrer normalement sans afficher grub?

Sudo efibootmgr -v
[Sudo] password for alex: 
BootCurrent: 0000
Timeout: 0 seconds
BootOrder: 0001,0000,0004,9999
Boot0000* ubuntu    HD(2,145800,82000,1ec11f19-24da-44cd-8ac6cd26205992d2)File(\EFI\ubuntu\shimx64.efi)
Boot0001* Windows Boot Manager  HD(2,145800,82000,1ec11f19-24da-44cd-8ac6-cd26205992d2)File(\EFI\Microsoft\Boot\bootmgfw.efi)WINDOWS.........x...B.C.D.O.B.J.E.C.T.=.{.9.d.e.a.8.6.2.c.-.5.c.d.d.-.4.e.7.0.-.a.c.c.1.-.f.3.2.b.3.4.4.d.4.7.9.5.}....................
Boot0004* Internal Hard Disk    ACPI(a0341d0,0)PCI(11,0)SATA(0,ffff,0)HD(2,145800,82000,1ec11f19-24da-44cd-8ac6-cd26205992d2)..BO
Boo9999* USB Drive (UEFI)   ACPI(a0341d0,0)PCI(1d,0)USB(10,0)..BO

alex@alex-desktop:~$ Sudo parted -l
Modell: ATA SAMSUNG SSD 830 (scsi)
Festplatte  /dev/sda:  256GB
Sektorgröße (logisch/physisch): 512B/512B
Partitionstabelle: gpt
Disk-Flags: 

Nummer  Anfang  Ende    Größe   Dateisystem  Name                          Flags
 1      1049kB  683MB   682MB   ntfs         Basic data partition          versteckt, diag
 2      683MB   955MB   273MB   fat32        EFI system partition          boot, esp
 3      955MB   1089MB  134MB                Microsoft reserved partition  msftres
 4      1089MB  232GB   231GB   ntfs         Basic data partition          msftdata
 5      232GB   256GB   24,0GB  ntfs         Basic data partition          versteckt, msftdata


Modell: SanDisk Extreme (scsi)
Festplatte  /dev/sdb:  32,0GB
Sektorgröße (logisch/physisch): 512B/512B
Partitionstabelle: msdos
Disk-Flags: 

Nummer  Anfang  Ende    Größe   Typ       Dateisystem  Flags
 1      1049kB  28,4GB  28,4GB  primary   ext4         boot
 2      28,4GB  32,0GB  3652MB  extended
 5      28,4GB  32,0GB  3652MB  logical
2
Alex

Contexte: EFI utilise une variable d'ordre de démarrage stockée dans NVRAM pour déterminer quoi démarrer. (Il s'agit de la ligne BootOrder: Dans la sortie efibootmgr.) Ces entrées pointent vers des fichiers de programme EFI stockés sur un EFI System Partition (ESP), vers des périphériques réseau, etc. Vous pouvez avoir plusieurs ESP et chaque ESP peut avoir plusieurs fichiers de démarrage EFI. Si un fichier de démarrage échoue, le ESP devrait revenir au suivant dans sa liste.

Votre problème est que, même si Ubuntu est installé sur votre lecteur flash USB, ce lecteur flash n'a pas d'ESP et il semble que GRUB ait été installé dans ESP sur le disque dur. Malheureusement, votre configuration GRUB repose sur des fichiers de configuration sur le lecteur USB, donc si le lecteur USB est débranché lorsque GRUB se lance, GRUB repassera à une invite grub> , mais il n'échouera pas dans le sens d'un retour à l'EFI afin que celui-ci puisse lancer le prochain chargeur de démarrage. Lorsque vous avez installé Ubuntu pour la première fois, ce GRUB a été défini comme le chargeur de démarrage par défaut, vous avez donc vu le type d'échec que vous décrivez. Vous avez changé la valeur par défaut pour Windows, ce qui le fait démarrer correctement, mais rend plus difficile le démarrage d'Ubuntu. Il existe plusieurs façons de nettoyer cela:

  • Vous pouvez le vivre tel quel et utiliser le gestionnaire de démarrage intégré de l'ordinateur (la touche F9 que vous mentionnez) pour sélectionner le système d'exploitation à démarrer. Cette solution est la plus sûre, car elle n'implique aucun changement qui pourrait aggraver les choses.
  • Vous pouvez essayer de reconfigurer GRUB pour lire son fichier de configuration à partir du ESP plutôt qu'à partir de votre répertoire Ubuntu /boot, Puis réinitialiser GRUB par défaut. GRUB devrait alors présenter un menu de démarrage, qui vous permettra de sélectionner un peu plus facilement le système d'exploitation souhaité. Cependant, je suis un peu rouillé sur la façon de procéder. Vérifiez cette ancienne page de documentation pour tous les détails sanglants (et puis certains). Notez que GRUB ne sélectionnera pas automatiquement Ubuntu si et seulement si le lecteur USB est branché - ou du moins, s'il peut être configuré pour le faire, je ne sais pas comment.
  • Vous pouvez repartitionner votre disque dur interne pour inclure une partition Ubuntu /boot Et y copier ses fichiers. Vous devrez ensuite réinstaller GRUB. En théorie, cela devrait alors fonctionner que le lecteur USB soit branché ou non, mais il ne sélectionnera pas automatiquement Ubuntu lorsque le lecteur USB est branché et Windows lorsqu'il n'est pas branché. Cette option est l'une des plus risquées, car cela implique de redimensionner vos partitions sur disque.
  • Créez un ESP sur votre lecteur flash USB et installez-y GRUB en utilisant le nom de fichier de secours de EFI/BOOT/bootx64.efi. (Cependant, la procédure d'installation sera probablement un peu compliquée.) Vous pouvez ensuite utiliser votre gestionnaire de démarrage (F9) pour basculer entre le lecteur USB (GRUB/Ubuntu) et Windows. Certains EFI peuvent vous laisser définir le lecteur USB par défaut s'il est branché, ce qui vous donnerait le démarrage automatique d'Ubuntu lorsqu'il sera disponible, mais je ne peux pas promettre que ce détail fonctionnera comme vous le souhaitez. Vous devrez certainement repartitionner le lecteur USB (ce qui ajoute un peu de risque), et vous devrez peut-être convertir le disque de MBR en GPT . L'un des avantages de cette approche est que le lecteur USB doit pouvoir être démarré indépendamment sur à peu près n'importe quel ordinateur EFI de la même architecture.
  • Vous pouvez installer mon gestionnaire de démarrage rEFInd sur votre ESP. Avec quelques ajustements de configuration (définissant principalement default_selection vmlinuz,Windows Ou quelque chose de similaire dans son fichier refind.conf), Il devrait démarrer Ubuntu par défaut lorsque le lecteur USB est branché et Windows lorsque le lecteur USB n'est pas branché dans.

Il peut également y avoir d'autres solutions, mais ce sont celles qui me viennent à l'esprit. Les meilleurs d'entre eux sont probablement de le laisser tel quel, de créer un ESP sur votre clé USB et d'y réinstaller GRUB, et d'utiliser rEFInd.

2
Rod Smith