ne réponse postée ici devrait:
- Évitez d'exiger de l'utilisateur qu'il télécharge et installe des packages ou des PPA supplémentaires.
- Soyez aussi simple et rapide que possible. (J'ai essayé la réparation de démarrage et cela ne s'est pas qualifié.)
- Probablement fournir un script pour les utilisateurs qui n'ont pas beaucoup d'expérience avec le terminal.
Des problèmes similaires comme ceux-ci ont été postés à plusieurs reprises sur le site:
efibootmgr -v
indique que /efi/ubuntu/shimx64.efi
a été enregistré sous le nom ubuntu
. (Ces nouvelles entrées de démarrage sont généralement ajoutées avec la priorité la plus élevée. Voir aussi Modifier l'ordre de démarrage à l'aide de efibootmgr )Windows Boot Manager
) ne s'affiche, mais uniquement des périphériques.\EFI\BOOT\
avant de le sauvegarder.Cela indique généralement un problème lié au chargeur de démarrage ou au processus de démarrage par défaut, codés en dur pour démarrer Windows. Dans la plupart des cas, cela peut être facilement résolu en remplaçant \EFI\BOOT\BOOTx64.EFI
par un autre fichier qui permet également de démarrer d'autres systèmes d'exploitation.
Vous pouvez créer un binaire bootx64.efi
à partir du média live Ubuntu avec grub-mkimage et écrire un grub.cfg
personnalisé pour charger en chaîne les chargeurs que vous ne voulez pas démarrer et copier les deux fichiers. dans la partition système EFI (ESP) dans le répertoire \EFI\BOOT\
.
Si vous ne connaissez pas bien le terminal, le script disponible dans la section suivante de cette réponse le fera pour vous. Pour plus de détails, consultez la section Détails techniques dans La réponse la plus longue.
En ce qui concerne ce script:
grub-efi-AMD64
où il est exécuté et par conséquent annulera les installations héritées du MBR. Ne l'exécutez probablement que depuis un média en direct, si possible./isodevice
. GUI: Ordinateur ➜ isodevice dans Nautilus/Gestionnaire de fichiers.echo -en "\ec"; \
if [ -e "/boot/efi/EFI" ] && [ $(mount | grep -c "/boot/efi type vfat") -gt 0 ]; then \
esp=$(mount | grep "/boot/efi type vfat" | sed -e 's/ on.*//'); \
echo "The following device appears to be mounted as an EFI System Partition: $esp"; \
read -p "Is that correct \"yes\" or \"no\"? Note, that answering \"no\" will unmount $esp! " correctesp; \
if [ "$correctesp" == "no" ]; then \
Sudo umount "$esp"; \
Elif [ "x$correctesp" != "xyes" ]; then \
echo "Invalid input, refusing to do anything."; \
fi; \
fi; \
if ! [ -e "/boot/efi/EFI" ] && ! [ $(mount | grep -c "/boot/efi type vfat") -gt 0 ]; then \
echo "Possible EFI System Partitions (ESP) found, but none appear to be mounted:"; \
Sudo blkid -t TYPE="vfat"; \
read -p "Please enter the device name of your ESP (/dev/sd[a-z][1-9]): " esp; \
Sudo mkdir -p "/boot/efi"; \
if [ "$(echo $esp | cut -c 1-5)" == "/dev/" ]; then \
Sudo mount "$esp" "/boot/efi"; \
else \
echo "Invalid input, refusing to do anything."; \
fi; \
Sudo mkdir -p "/boot/efi/EFI"; \
correctesp="yes"; \
fi; \
if [ -e "/boot/efi/EFI" ] && [ $(mount | grep -c "/boot/efi type vfat") -gt 0 ] && [ "$correctesp" == "yes" ]; then \
project="$HOME/uefi-bootfix"; \
mkdir -p "$project"; \
echo "--- Begin installing grub-efi-AMD64 package (could throw some dpkg errors) ---"; \
Sudo apt-get install -y grub-efi-AMD64; \
echo "--- End of installing grub-efi-AMD64 ---"; \
echo "--- Installing GRUB EFI image and configuration to ESP ---"; \
grub-mkimage -o "$project/bootx64.efi" -p "/efi/boot" -O x86_64-efi fat iso9660 part_gpt part_msdos normal boot linux configfile loopback chain efifwsetup efi_gop efi_uga ls search search_label search_fs_uuid search_fs_file exfat ext2 ntfs btrfs hfsplus udf; \
echo -e "set timeout=3\nmenuentry 'Ubuntu' {\n\tchainloader /efi/ubuntu/grubx64.efi\n}\nmenuentry 'Windows' {\n\tchainloader /efi/Microsoft/Boot/bootmgfw.efi\n}\nmenuentry 'Firmware Setup' {\n\tfwsetup\n}\nmenuentry 'ubuntu-14.04.1-desktop-AMD64.iso' {\n\tset isofile="/efi/boot/ubuntu-14.04.1-desktop-AMD64.iso"\n\tloopback loop $isofile\n\tlinux (loop)/casper/vmlinuz.efi boot=casper iso-scan/filename=$isofile noprompt noeject quiet splash\n\tinitrd (loop)/casper/initrd.lz\n}" > "$project/grub.cfg"; \
Sudo mkdir -p "/boot/efi/EFI/boot"; \
if [ -e "/boot/efi/EFI/boot/bootx64.efi" ]; then \
Sudo cp -v "/boot/efi/EFI/boot/bootx64.efi" "/boot/efi/EFI/boot/bootx64_uefi-bootfix-backup-$(date +%F_%H-%M-%S).efi"; \
fi; \
Sudo cp -v "$project/bootx64.efi" "/boot/efi/EFI/boot/bootx64.efi"; \
Sudo cp -v "$project/grub.cfg" "/boot/efi/EFI/boot/grub.cfg"; \
echo "--- Done. ---"; \
fi
Le spécification UEFI recommande aux développeurs de microprogrammes de démarrer via un chargeur de démarrage par défaut nommé \EFI\BOOT\BOOT{Arch}.EFI
pour démarrer à partir d'un support externe, par exemple. où il est impossible de s’appuyer sur les entrées de la mémoire NVRAM de la plate-forme - la carte mère des ordinateurs - pour démarrer un système d’exploitation donné. Les valeurs actuellement définies pour Arch
sont x64
pour AMD64, ia32
pour i386 et ARM
ouA64
pour ARM.
Windows et Fedora installent un tel chargeur de démarrage sur l'ESP, contrairement à Ubuntu. Le micrologiciel de certains ordinateurs - tels que les ordinateurs portables à prix réduit - montre un comportement dans lequel ces périphériques semblent ignorer complètement les chargeurs de démarrage UEFI correctement enregistrés dans le catalogue de démarrage NVRAM et démarrer par défaut à partir de \EFI\BOOT\BOOT{Arch}.EFI
, ce qui entraîne généralement le démarrage de Windows au lieu de Ubuntu.
Cette configuration ne prend actuellement pas en charge le démarrage sécurisé et n'a pas non plus été testée pour les ordinateurs Apple, car je ne possède pas un tel ordinateur. (L'aide est très appréciée.)
Si cela n’était pas clair jusqu’à présent: cela permettra également de démarrer les installations du système d’exploitation sur le disque d’un autre ordinateur compatible UEFI, comme c’est le cas avec le MBR hérité.
bootx64.efi
avec GRUBgrub-mkimage -o bootx64.efi -p /efi/boot -O x86_64-efi fat iso9660 part_gpt part_msdos normal boot linux configfile loopback chain efifwsetup efi_gop efi_uga ls search search_label search_fs_uuid search_fs_file exfat ext2 ntfs btrfs hfsplus udf
grub.cfg
correspondantCette configuration couvre les cas de base du démarrage d'Ubuntu, du démarrage de Windows et du lancement de la configuration du microprogramme. La dernière entrée permet le montage en boucle et le démarrage d'une image ISO, ce qui peut paraître étrange au début, car le ESP ne fait généralement que quelques centaines de mégaoctets et ne peut pas stocker de gros fichiers, mais les deux fichiers fonctionnent également. sur les lecteurs USB formatés FAT. Un clé USB à démarrage multiple avec plusieurs ISO n'est plus qu'à quelques modifications. Vous pouvez aussi facilement remplacer ubuntu
par Fedora
pour créer une autre entrée de menu qui initialise Fedora ou toute autre distribution Linux. Il vous suffit de jeter un coup d'œil au contenu de votre ESP.
set timeout=3
menuentry 'Ubuntu' {
chainloader /efi/ubuntu/grubx64.efi
}
menuentry 'Windows' {
chainloader /efi/Microsoft/Boot/bootmgfw.efi
}
menuentry 'Firmware Setup' {
fwsetup
}
menuentry 'ubuntu-14.04.1-desktop-AMD64.iso' {
set isofile="/efi/boot/ubuntu-14.04.1-desktop-AMD64.iso"
loopback loop $isofile
linux (loop)/casper/vmlinuz.efi boot=casper iso-scan/filename=$isofile noprompt noeject quiet splash
initrd (loop)/casper/initrd.lz
}
J'ai posté quelque chose comme ça dans le passé et il n'y a rien de mal à ça, aussi loin que je peux voir. Cela fonctionne même avec Secure Boot. Bien si cela a fonctionné pour vous, mais l'expérience utilisateur, y compris le téléchargement, la création et l'extraction manuelle de plusieurs fichiers, n'est pas tout à fait optimale et plutôt difficile pour l'utilisateur moyen.
Exemple de sortie de l'exécution du script à partir d'un média en direct:
Possible EFI System Partitions (ESP) found, but none appear to be mounted:
/dev/sda1: LABEL="ESP W8" UUID="8AEF-2F66" TYPE="vfat"
/dev/sdb1: LABEL="ESP HDD" UUID="CBB5-B769" TYPE="vfat"
/dev/sdc1: LABEL="ESP EVO" UUID="288D-5954" TYPE="vfat"
/dev/sdd1: LABEL="SANDISK" UUID="B67A-5BFF" TYPE="vfat"
Please enter the device name of your ESP (/dev/sd[a-z][1-9]): /dev/sdb1
--- Begin installing grub-efi-AMD64 package (could throw some dpkg errors) ---
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following extra packages will be installed:
efibootmgr grub-efi-AMD64-bin
The following packages will be REMOVED:
grub-gfxpayload-lists grub-pc
The following NEW packages will be installed:
efibootmgr grub-efi-AMD64 grub-efi-AMD64-bin
0 upgraded, 3 newly installed, 2 to remove and 0 not upgraded.
Need to get 0 B/722 kB of archives.
After this operation, 2,399 kB of additional disk space will be used.
Preconfiguring packages ...
(Reading database ... 169555 files and directories currently installed.)
Removing grub-gfxpayload-lists (0.6) ...
Removing grub-pc (2.02~beta2-9ubuntu1) ...
Processing triggers for man-db (2.6.7.1-1) ...
Selecting previously unselected package efibootmgr.
(Reading database ... 169536 files and directories currently installed.)
Preparing to unpack .../efibootmgr_0.5.4-7ubuntu1_AMD64.deb ...
Unpacking efibootmgr (0.5.4-7ubuntu1) ...
Selecting previously unselected package grub-efi-AMD64-bin.
Preparing to unpack .../grub-efi-AMD64-bin_2.02~beta2-9ubuntu1_AMD64.deb ...
Unpacking grub-efi-AMD64-bin (2.02~beta2-9ubuntu1) ...
Selecting previously unselected package grub-efi-AMD64.
Preparing to unpack .../grub-efi-AMD64_2.02~beta2-9ubuntu1_AMD64.deb ...
Unpacking grub-efi-AMD64 (2.02~beta2-9ubuntu1) ...
Processing triggers for man-db (2.6.7.1-1) ...
Setting up efibootmgr (0.5.4-7ubuntu1) ...
Setting up grub-efi-AMD64-bin (2.02~beta2-9ubuntu1) ...
Setting up grub-efi-AMD64 (2.02~beta2-9ubuntu1) ...
Installing for x86_64-efi platform.
grub-install: error: failed to get canonical path of `/cow'.
dpkg: error processing package grub-efi-AMD64 (--configure):
subprocess installed post-installation script returned error exit status 1
Errors were encountered while processing:
grub-efi-AMD64
E: Sub-process /usr/bin/dpkg returned an error code (1)
--- End of installing grub-efi-AMD64 ---
--- Installing GRUB EFI image and configuration to ESP ---
‘/boot/efi/EFI/boot/bootx64.efi’ -> ‘/boot/efi/EFI/boot/bootx64_uefi-bootfix-backup-2014-11-13_22-39-42.efi’
‘/home/ubuntu/uefi-bootfix/bootx64.efi’ -> ‘/boot/efi/EFI/boot/bootx64.efi’
‘/home/ubuntu/uefi-bootfix/grub.cfg’ -> ‘/boot/efi/EFI/boot/grub.cfg’
--- Done. ---
La sortie de efibootmgr -v montre que /efi/ubuntu/shimx64.efi a été enregistré en tant que ubuntu. (Ces nouvelles entrées de démarrage sont généralement ajoutées avec la priorité la plus élevée.)
Une sortie de efibootmgr aurait aidé à déterminer si la commande était correcte.
Donc, à ma connaissance, il s’agit de changer l’ordre de démarrage afin que l’entrée pour grub soit celle par défaut. J'ai eu ce problème aussi.
Comme vous ne pouvez pas démarrer ubuntu pour résoudre ceci ou le faire dans le UEFI/BIOS, vous pouvez démarrer un LiveCD d’Ubuntu et vous connecter à un terminal ou à une console.
Vous ouvrez un terminal et courez
# Sudo -i
# apt-get install efibootmgr
# efibootmgr
BootCurrent: 0003
Timeout: 0 seconds
BootOrder: 0003,0002,0004,2001
Boot0000* UEFI Onboard LAN IPv6
Boot0001* UEFI Onboard LAN IPv4
Boot0002* ubuntu
Boot0003* Windows Boot Manager
Boot0004* Ubuntu
Boot2001* EFI USB Device
et vous changez l'ordre des entrées de démarrage
# efibootmgr -o 0002,0003,0004,2001
et relancez efibootmgr pour vérifier que le changement est effectif. cela devrait aussi changer la valeur bootnext, sinon vous pouvez lancer
# efibootmgr -n 0002