Unified Extensible Firmware Interface (UEFI) est une interface logicielle désormais commune à tous les ordinateurs récents, particulièrement ceux vendus depuis 2010. Elle vient se placer entre le micrologiciel (firmware) et le système d'exploitation pour permettre de contrôler les paramètres de l'ordinateur. À ce titre, elle remplace le traditionnel environnement en mode texte du BIOS. Puisqu'il s'agit d'un système différent du BIOS, il est important de comprendre ce qu'est l'UEFI avant d'entreprendre l'installation d'Ubuntu.
Dans toutes les versions supportées d'Ubuntu, l'installateur reconnaît la présence de Windows 8/10® pré-installé en mode EFI. De plus, ces versions d'Ubuntu s'affranchissent de la désactivation du Secure Boot.
Il est donc impératif d'utiliser une version supportée d'Ubuntu.
Si votre ordinateur est récent (> 2010) et que vous ne savez pas ou vous n'avez pas besoin d'installer Ubuntu en mode UEFI, vous devriez être en mesure d'installer Ubuntu rapidement et correctement en suivant les étapes suivantes :
Une fois redémarré :
Le fait d'avoir un ordinateur équipé du système UEFI n'implique pas nécessairement que Ubuntu soit installé en mode EFI.
Si les autres systèmes (Windows Vista/7/8, GNU/Linux…) de votre ordinateur sont installés en mode EFI, alors il faut installer Ubuntu en mode EFI.
Pour le savoir, sous Windows ouvrir le terminal en mode admin (Démarrer → taper cmd
et Ctrl+Maj+Entrée) et taper bcdedit
. S'affichent deux blocs d'informations. Dans le deuxième, le path est le révélateur : s'il finit en efi
, le système est installé en EFI.
.... Windows Boot Loader ------------------- identifier {current} device partition=C: path \Windows\system32\winload.efi description Windows 7 Home Premium (recovered) ....
Pour installer Ubuntu en mode EFI :
Cela n'est possible que si vous avez déjà installé Ubuntu sur le disque dur, ou bien en regardant dans les réglages du BIOS (voir paragraphe ci-dessous).
Depuis une session Ubuntu installée sur le disque (à noter que ça fonctionne aussi pour une session liveCD ou liveUSB), il suffit d'ouvrir un terminal, et saisir la commande suivante :
[ -d /sys/firmware/efi ] && echo "Session EFI" || echo "Session non-EFI"
Si le démarrage est en mode classique (le résultat de la commande est "Session non-EFI"), soit le BIOS n'est pas de type UEFI, soit le BIOS est de type UEFI mais n'est pas réglé pour démarrer sur le disque dur en mode UEFI (ou bien qu'il n'y a pas de partition EFI pour démarrer). Il est à ce moment là intéressant, de vérifier dans votre BIOS, si vous êtes en possession de la technologie EFI. Pour trouver la touche pour accéder à votre BIOS, vous pouvez faire un tour ici.
Une autre façon d'obtenir la réponse est de demander l'exécution d'une commande EFI. Si elle répond "EFI variables are not supported on this system." on comprendra que la session n'est pas en EFI !
efibootmgr
Remarque : même si votre PC démarre sur le CD (ou la Live USB) en mode EFI, il est possible qu'il démarre sur le disque dur en mode classique (et inversement).
Lorsqu'on démarre sur un CD Ubuntu compatible EFI :
Dans le cas d'une live USB MultiSystem, ce moyen d'identification à l'écran n'est pas possible : à la place, on peut utiliser depuis la session live la commande du paragraphe Vérifier si l'ordinateur démarre en mode EFI sur le disque dur (ou sur le support Live).
Certains ordinateurs récents (2011 et +) permettent de régler le démarrage soit en mode classique (=mode BIOS) soit en mode UEFI. La manière d'effectuer ce réglage varie selon les ordinateurs, mais généralement ce réglage se situe dans l'onglet "Boot order" du BIOS/UEFI (il faut généralement appuyer sur une touche à l'allumage du PC pour y accéder, voir ce tutoriel).
Remarque : certains BIOS permettent de régler séparément le mode de démarrage sur CD et celui sur disque dur.
Par exemple, ci-dessous :
et voici un 2e exemple, plus simple, où le paramètre "Boot Mode" permet de choisir le mode de démarrage ("UEFI" ou "Legacy") sur tous les médias (disque dur, CD, USB, etc.).
Il existe aussi des firmwares qui proposent une option "UEFI/Legacy Boot:" avec les choix [Legacy only], [UEFI only] et [Both], ce dernier démarrant en priorité en mode EFI, puis en mode Legacy si aucun fichier EFI n'est détecté.
Si le disque de votre ordinateur est neuf, il faut d'abord créer une table de partitionnement au format GPT avec l'onglet « Périphériques » de gparted.
Si votre disque n'a pas de partition EFI, il faut en créer une avec gparted.
Si vous installez ubuntu sur autre disque que le premier, il est souhaitable que la structure de boot soit dans le même disque afin de pas dépendre de l'état physique du premier disque. Vous pouvez choisir:
La référence de cette partition de boot EFI sera enregistrée dans le fichier /etc/fstab lors de l'installation.
Si on a configuré l'ordinateur pour qu'il démarre en priorité sur cette seconde unité bootable, disque ou clé USB, et que celle-ci comporte une partition EFI l'ordinateur ira bien y chercher le programme de démarrage \EFI\boot\bootx64.efi et le lancer s'il s'y en trouve un. Celui-ci pourra être le grubx64.efi (ou le shimx64.efi en Secure Boot) linux installé sous ce nom.
À ce moment, on n'est encore ni sous Ubuntu, ni sous Windows ni un autre Linux.
Si c'est bien le grubx64.efi (…), celui-ci va aller lire dans la même partition EFI de notre seconde unité le petit fichier \EFI\ubuntu\grub.cfg. Son contenu permet de pointer vers la partition Ubuntu de notre seconde unité pour y lire le gros fichier /boot/grub/grub.cfg et continuer le processus de démarrage. Ce fichier représente le menu, et peut être différent d'un homonyme installé sur le premier disque.
En cas de multiboots, on peut ainsi avoir des menus différents suivant que l'on démarre depuis le premier disque ou depuis une unité USB.
Il est possible de réparer La structure de booT en lançant boot-repair et en choisissant la bonne partition de boot EFI. </note>
/boot/efi
. 3)Depuis l'Ubuntu installé, on regarde si le dossier /sys/firmware/efi existe. Une solution est d'ouvrir un terminal (Ctrl+Alt+T) et de saisir la commande suivante :
[ -d /sys/firmware/efi ] && echo "Installé en mode EFI" || echo "Installé en mode classique"
Sinon, en analysant le Boot-Info réalisé depuis une session live, on peut trouver les indices suivants d'un Ubuntu installé en mode EFI :
Pour que cette conversion soit possible, il faut régler votre BIOS pour qu'il démarre sur le disque dur en mode EFI (voir le paragraphe Régler le démarrage en mode EFI ou classique ci-dessus). De plus, il faut opérer depuis une session live démarrée en mode EFI (voir le paragraphe Identifier si l'ordinateur démarre sur le CD (ou la live USB) en mode EFI).
Il suffit de le faire en ligne de commandes.
Si pour une raison spéciale, vous ne pouvez pas booter en EFI alors que le bios est EFI, vous pouvez tenter de faire cette installation en ligne de commandes.
sudo apt install grub-efi-amd64 sudo grub-install /dev/sda --no-nvram --efi-directory=/boot/efi --target=x86_64-efi
Vérifier l'existence de la partition bios-boot.
Remarque.
Comme on part d'une installation UEFI, elle est faite sur un disque dur avec table de partition de type GPT. Pour pouvoir réinstaller Grub avec Boot-Repair en mode Bios_Legacy. Ne pas oublier de créer une petite partition Bios boot de 32Mo qui est la valeur par défaut. mais 1 Mio est suffisant, sans format de fichiers. Avec le drapeau bios_grub. Elle est destinée à recevoir le core.img. Boot-Repair sait utiliser cette partition si elle est présente avant de réinstaller Grub en mode Bios_Legacy. Sans cette partition l'OS Linux ne peut pas démarrer sur un disque en GPT.
Exemple :
sdb2: __________________________________________________________________________ File system: BIOS Boot partition Boot sector type: Grub2's core.img Boot sector info:
Le Secure Boot est une nouvelle fonctionnalité de l'UEFI, apparue en 2012 avec les ordinateurs pré-installés Windows 8. Sa prise en charge par Ubuntu a commencé avec 12.10 (et 12.04.2), mais elle n'est pas complète, donc vous risquez de devoir le désactiver pour pouvoir démarrer Ubuntu.
Ci-dessous un exemple de BIOS indiquant que le Secure Boot est activé :
Pour désactiver ou activer le Secure Boot, trouvez une option similaire dans votre BIOS et utilisez le clavier pour passer cette ligne de l'état Activé (Enabled) à Désactivé (Disabled).
Chaque constructeur ayant une manière différente de faire, si vous n'avez pas trouvé comment désactiver le Secure Boot, faites un tour dans cette documentation : Comment désactiver le secure boot.
La méthode Boot-Repair ne prend plus en charge ce cas-là mais n'explique pas ce qui se passe. Voici donc une méthode alternative détaillée mais nécessitant de savoir utiliser un terminal). Elle semble indispensable sur certains MSI et Sony. Voici les étapes à suivre, détaillées dans les sous-paragraphes suivants :
PS: Cette méthode fonctionne avec Debian Jessie, en veillant toutefois à remplacer ubuntu/shimx64.efi par le fichier présent dans /debian
sudo cp -R /boot/efi/ ~/EFI_sauvegarde/
find /boot/efi/ ~/EFI_sauvegarde/ -name "*.efi" -exec md5sum {} \; | sort
dbed1f7ed9e19e53bfc7f43122ce3d83 /boot/efi/EFI/Boot/bootx64.efi dbed1f7ed9e19e53bfc7f43122ce3d83 /boot/efi/EFI/HP/boot/bootmgfw.efi dbed1f7ed9e19e53bfc7f43122ce3d83 /boot/efi/EFI/Microsoft/Boot/bootmgfw.efi
Toujours sous Ubuntu :
sudo mv /boot/efi/EFI/Microsoft/Boot/bootmgfw.efi /boot/efi/EFI/Microsoft/Boot/bootmgfw_orig.efi
sudo rm /boot/efi/EFI/Boot/bootx64.efi sudo rm /boot/efi/EFI/HP/boot/bootmgfw.efi
sudo cp /boot/efi/EFI/ubuntu/shimx64.efi /boot/efi/EFI/Microsoft/Boot/bootmgfw.efi
/!\ il arrive parfois à windows de réécrire /boot/efi/EFI/Microsoft/Boot/bootmgfw.efi en cas de mise à jour… Dans ce cas, recommencer les étapes décrites ci-dessus /!\
Grub n'est plus en mesure de détecter correctement le programme d'amorçage de Windows car il n'est plus disponible sous son nom standard. Il faut donc lui permettre de retrouver le nouveau nom.
Grub utilise la commande os-prober
pour détecter les autres OS. Cette commande cherche un chemin standard pour détecter Windows. L'objectif est de modifier le résultat en sortie de cette commande pour tenir compte du renommage effectué plus tôt (bootmgfw.efi
renommé en bootmgfw_orig.efi
).
sudo os-prober
Le système Ubuntu étant régulièrement mis-à-jour, il faut que la modification opérée ne soit pas écrasée lors des mises-à-jour. Il faut donc créer un script supplémentaire, qui ne soit pas fourni par un paquet existant.
touch /tmp/za-windows8-hp ; sudo xdg-open /tmp/za-windows8-hp
#! /bin/sh set -e sed -i -e "s/item_in_dir bootmgfw.efi/item_in_dir bootmgfw_orig.efi/" /usr/lib/os-probes/mounted/efi/20microsoft exit 0
sudo mv /tmp/za-windows8-hp /etc/kernel/postinst.d/za-windows8-hp
sudo chmod ugo+x /etc/kernel/postinst.d/za-windows8-hp sudo chown root:root /etc/kernel/postinst.d/za-windows8-hp
sudo /etc/kernel/postinst.d/za-windows8-hp
sudo os-prober
sudo update-grub
Souvent l'utilisateur a tenté de faire un boot-repair qui n'a rien donné comme résultat positif sauf de fabriquer un fichier 25_custom
contenant 3 entrées standards de boot.
bootmgrfw.efi
) par le nouveau nom que vous avez attribué (BKbootmgrfw.efi
). Éventuellement, remplacer le nom de l'entrée par un nom plus pratique.25_custom
.sudo update-grub
Installer refind puis le mettre à la place du fichier de boot de windows.
Pour les ordinateurs HP une mise à jour de l'UEFI devrait suffire pour que les 2 OS cohabitent (il faut que votre UEFI soit minimum en version F30??). Ceci est fait en identifiant la signature du programme efi dans l'un des 3 emplacements possibles indiqués plus bas, et en démarrant sur celui qui a la bonne signature même si les 2 autres ont été remplacés. Que cela fonctionne ou pas, c'est de la roulette russe: si vous avez dans l'UEFI une flèche au niveau de OS selection, c'est tout bon; sinon, il faut suivre la méthode suivante.
Sur certaines machines HP vendues avec Windows10, le bios UEFI permet de choisir le gestionnaire de démarrage du SE qu'il faut positionner sur ubuntu. La touche d'accès au bios est très souvent F9 Voir encore ici.
Les ordinateurs ACER d'avant décembre 2017 exigent que l'utilisateur définisse Ubuntu comme un OS habilité. Cela permettra aussi de gérer les priorités de boot. Voir aussi ce post ou celui-ci.
Sur les machines Lenovo, il est possible de faire la commande administrative bcdedit /set {bootmgr} path \EFI\ubuntu\shimx64.efi
sous Windows;
Sur les machines Toshiba vendues avec Windows 8, le bios UEFI démarre à l'origine avec le fichier \EFI\Boot\bootx64.efi (qui est à ce moment une copie du fichier \EFI\Microsoft\Boot\bootmgfw.efi).
Une fois l'installation d'Ubuntu réalisée (mais elle est en fait incomplète), remplacer ce même fichier
/boot/efi/EFI/Boot/bootx64.efi qui est resté le chargeur Windows par le fichier
/boot/efi/EFI/ubuntu/shimx64.efi qui est le chargeur-menu Ubuntu en Secure Boot.
Copier /boot/efi/EFI/ubuntu/grubx64.efi vers /boot/efi/EFI/Boot/grubx64.efi pour qu'il puisse être trouvé par \EFI\Boot\bootx64.efi (=shimx64.efi).
Dans le cas où l'utilisateur a totalememt supprimé windows ainsi que ses fichiers de boot et que ubuntu n'est pas lancé par le bios EFI, on a deux contextes:
Dans le meilleur des cas, le bios indique que le fichier de boot est absent.
Dans le pire des cas, le bios boucle à la recherche de windows sans rien dire.
il ne reste qu'à recréer la structure de boot de windows.
Même si le démarrage par défaut se fait sur Ubuntu après installation, il peut arriver qu'il se remette sur Windows. Il suffit alors d'utiliser les "Options de démarrage avancées" de Windows ou bien de passer par le "Boot Menu" de l'ordi pour redémarrer sur Ubuntu et depuis la session Ubuntu, passer la commande qui va remettre Ubuntu en priorité de démarrage :
sudo grub-install
A noter : il est possible que cette réparation simple ne fonctionne pas si le système UEFI a été bridé par le fabricant de l'ordinateur pour forcer le démarrage sur Windows.
Au démarrage de la machine, si le menu de choix Ubuntu/Windows (grub) ne s'affiche pas et démarre Windows, alors sous Windows, ouvrez la ligne de commande et tapez ceci, puis redémarrez :
bcdedit /set {bootmgr} path \EFI\ubuntu\grubx64.efi
Sur certains ordinateurs le BIOS a besoin d'un exécutable en 32 bits sur la clé pour démarrer, or par défaut Ubuntu le propose en 64 bits. Voir la solution ici.
rEFInd est un utilitaire à avoir en cas de problème avec le boot UEFI. En effet, il permet de redémarrer son système en mode UEFI, et donc de faire une réparation de celui-ci à partir d'Ubuntu, lancé sans passer par chroot ou autre.
Pour l'installer, coller cette commande dans un terminal:
sudo grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=ubuntu --recheck --debug /dev/sdaX
En remplaçant X (dans sdaX) par le numéro de votre partition
A noter: seule la version CD-R image supporte le boot avec Secure Boot activé, pas la version USB flash drive image file
Contributeurs principaux : YannUbuntu, fnx