#1 Le 07/12/2011, à 16:42
- malbo
[Tuto] Principes (quelques) de Ubuntu en mode UEFI
EDIT le 17 oct 2014 : tout ce qui est dit dans ce post #1 reste globalement vrai mais c'est un peu trop théorique. Le coup de la FAT_RESERVE, c'est inutile parce qu'on sait démarrer des installations sans avoir besoin des fichiers .efi grâce à Super Grub2 Disk (ici). De même que mon schéma est vrai mais à présent je conseille une partition FAT32 unique - la partition EFI - et pas des partitions FAT32 multiples
- Equivalence Bios-UEFI pour les amorceurs de Grub
L'amorceur de Grub dans le système Bios peut se trouver dans le MBR ou dans le secteur de Boot d'une partition. Son équivalent dans le système UEFI est un fichier qui porte l'extension .efi et qui se trouve (dans le cas usuel) dans une partition appelée "partition EFI". Cette dernière doit être dans le format FAT (FAT16 pour une installation de Ubuntu, FAT32 pour une installation initialisée par Windows 7. Oui, ça ne démarre pas trop bien hein?).
Dans un PC moderne, équipé de UEFI, l'installateur automatique de Ubuntu (installation "à coté" ou installation dans tout le disque dur) se charge de créer cette partition EFI. Le Grub installé dans ce cas (mode UEFI) est "grub-efi" (au lieu de "grub-pc" dans le Bios)
- Peut-il y avoir plusieurs amorceurs de Grub sur le même disque dur ?
Dans le système Bios, sur un même disque dur, on peut installer (même si ce n'est pas usuel) plusieurs amorceurs de Grub qui pointent vers la même install de Ubuntu. Plus fréquement utilisé (mais pas trop par les novices) : un amorceur de Grub dans le secteur de Boot de chaque partition racine dans le cas de plusieurs installations de Ubuntu dans le même disque dur, ce qui permet de "Chainloader".
Dans le système UEFI, tous les amorceurs (fichiers .efi) sont dans une partition FAT (mais pas forcément unique on va le voir). Dans le cas usuel, qu'ils soient des amorceurs Windows, Ubuntu ou autres OS, tous ces .efi sont dans la même partition FAT qui est la "partition EFI" dont j'ai parlé plus haut. Mais, un peu comme pour le Bios, il peut y avoir des cas moins conventionnels : par exemple, on peut créer - en plus de la partition EFI - une autre partition FAT (je vais l'appeler FAT_RESERVE) qui soit placée n'importe où sur le disque dur (mais plus logiquement en fin de disque dur puisque la partition EFI est en tête de disque dur) et qui contienne une copie des .efi de la partition EFI. Ladite partition FAT_RESERVE constituant une copie de secours au cas où la partition EFI soit détruite accidentellement (voir nota 1). Le système UEFI peut sans aucun souci gérer cette situation où il y a deux partitions FAT et on peut le paramétrer "à la main" (ce système UEFI) afin qu'une même installation de Ubuntu puisse être lancée depuis le fichier .efi de la partition EFI ou bien depuis le fichier de la partition FAT_RESERVE. On peut même ne lancer les différents OS que depuis la FAT_RESERVE exclusivement, sans jamais utiliser les .efi qui sont dans la partition EFI. La partition FAT de secours, devenant de fait la partition de boot.
Avantage supplémentaire : la partition EFI ne contient qu'un seul amorceur ubuntu (il porte le doux nom de grubx64.efi ). Dans le cas de plusieurs Ubuntu installés, la dernière installation remplace l'amorceur grubx64.efi de la précédente. Si on décide d'utiliser une FAT_RESERVE, on peut stocker dedans des copies des amorceurs de chacune des installations de Ubuntu. A chaque nouvelle install, on fait une copie avec un nom bien différent du fichier .efi qui se trouve dans la partition EFI pour la placer dans la FAT_RESERVE. Dans cette configuration, même si la dernière installation de Ubuntu est complètement en panne et ne permet même pas de proposer son menu Grub, on peut accéder directement les autres Ubuntu (ça correspond à la représentation schématique ci-dessous).
- Oui mais comment le système UEFI peut-il trouver les amorceurs ?
Le système UEFI est quand même plus futé que l'autre : il est capable de présenter dans le "Boot Manager Maintenance" toutes les partitions FAT qu'il a trouvées (même les partitions vides). Comme il n'y a pas 10000 partitions FAT sur le disque dur, ce n'est pas compliqué de voir laquelle est la partition EFI et quelle est l'autre (ou les autres). Comme l'UEFI sait lire le système de fichier FAT, il suffit de naviguer jusqu'au fichier .efi de dire "oui, c'est celui-là que je veux" en faisant la manip de validation et d'enregistrement qui va bien et c'est dans le tuyau. On peut enregistrer cette entrée sous un nom bien à elle (du genre "Oneiric_sda3") et c'est bon. A partir de là, à chaque démarrage, on peut passer par le "Boot manager" du système UEFI pour sélectionner cette entrée "Oneiric_sda3" dans mon exemple. On fait de même (si on le souhaite) pour pouvoir créer une entrée pour accéder directement chaque fichier .efi (voir nota 2).
REPRÉSENTATION SCHÉMATIQUE DES POSSIBILITÉS MULTI-BOOT BIOS/UEFI :
Le Système UEFI est capable d'adresser directement l'amorceur de Grub (fichier .efi) de chacune des 3 installations de Ubuntu qui sont sur le même disque dur. Le système Bios ne peut en amorcer qu'un seul, celui qui est dans le MBR du disque dur.
BIOS--->amorceur_grub_Ubuntu1--->Grub_Ubuntu_1_____Ubuntu_1
|
|____Ubuntu_2
|
|____Ubuntu_3
UEFI--->amorceur_grub_Ubuntu_1--->Grub_Ubuntu_1___Ubuntu_1 (par défaut dans le menu)
| |
| |___Ubuntu_2
| |
| |___Ubuntu_3
|
|
|-->amorceur_grub_Ubuntu_2--->Grub_Ubuntu_2 ____Ubuntu_1
| |
| |___Ubuntu_2 (par défaut dans le menu)
| |
| |___Ubuntu_3
|
|
|-->amorceur_grub_Ubuntu_3--->Grub_Ubuntu_3____Ubuntu_1
|
|____Ubuntu_2
|
|____Ubuntu_3 (par défaut dans le menu)
Ajouté le 20 janv 2012 : A présent, je procède différemment de ce que je décris dans ce post : chaque amorceur "amorceur_grub_Ubuntu_X" du schéma ci-dessus se trouve sur une partition FAT16 dédiée. Le but étant de ne pas mettre tous les œufs dans le même panier et sécuriser encore plus le fonctionnement.
- Conséquences de cette différence de principe sur la récup de disques durs :
Soit un PC équipé d'un Bios. Si on lui donne à gérer un disque dur qu'on a extirpé d'un PC avec système UEFI pour le mettre dedans, il est comme une poule devant un couteau : il cherche dans le MBR, il ne trouve rien (puisque tout est dans une - voire plusieurs - partition FAT) et il lève un drapeau blanc pour dire qu'il ne trouve aucun système à démarrer.
Situation inverse : dans un PC moderne (2011) qui fonctionne en mode hybride UEFI/BIOS, si on lui donne à manger un disque dur extirpé d'un PC qui fonctionne en Bios, il est possible d'activer une configuration du système UEFI pour que le PC puisse démarrer quand même sur ce disque dur "Bios".
- Quelques tuyaux :
Dans le système Bios, l'amorceur de Grub est installé par la commande grub-install généralement suivie de l'endroit où l'amorceur doit être installé (genre "grub-install /dev/sda").
Dans le système UEFI, l'amorceur de grub (le fichier .efi) est installé par le même commande grub-install sans rien derrière parce que grub-efi sait où il doit placer son amorceur. Cet endroit est déterminé par une ligne du fichier fstab qui permet de monter la partition EFI et qui est de cette forme :
UUID=XXXX-XXXX /boot/efi vfat defaults 0 1
Dans le lien du nota 1 ci-dessous, on peut voir comment ça se manipule.
_
_
nota 1 : Une partition EFI écrasée, ça peut se remplacer quand même : http://forum.ubuntu-fr.org/viewtopic.ph … 1#p7281381
nota 2 : je décris un procédé très proche dans ce lien : http://forum.ubuntu-fr.org/viewtopic.ph … 1#p7294401
Sauf que dans le lien, je stocke les .efi dans la partition unique EFI alors qu'ici je propose de les stocker dans une partition de secours que j'ai appelée FAT_RESERVE. C'est ce que je pratique actuellement dans mes essais faits avec VirtualBox utilisé en mode EFI : http://forum.ubuntu-fr.org/viewtopic.ph … 1#p7189161
Dernière modification par malbo (Le 17/10/2014, à 10:14)
Hors ligne
#2 Le 07/12/2011, à 17:14
- Vlam
Re : [Tuto] Principes (quelques) de Ubuntu en mode UEFI
Merci pour toutes ces infos.
Je me suis confronté au problème d'installer grub sur un système géré par EFI (installer ubuntu sur un mac-mini (oui )), et je pense que cette doc pourra être très utile aux nombreux aventuriers qui installeront un linux sur un mac
Dernière modification par Vlam (Le 07/12/2011, à 17:15)
« Doutez de tout et surtout de ce que je vais vous dire. »
Hors ligne
#3 Le 07/12/2011, à 17:56
- malbo
Re : [Tuto] Principes (quelques) de Ubuntu en mode UEFI
Vlam,
Je ne suis pas certain que ce que j'ai écrit dans le post #1 soit applicable totalement pour un Mac et il est très possible qu'il y ait des méthodes à utiliser qui soient adaptées. En effet, dans la doc on traite bien souvent le cas "Apple Mac EFI systems" bien séparé du cas "Non-Mac UEFI systems" comme dans ce doc : https://help.ubuntu.com/community/UEFIBooting
Hors ligne
#4 Le 07/12/2011, à 21:00
- Vlam
Re : [Tuto] Principes (quelques) de Ubuntu en mode UEFI
Effectivement, il y a bien la distinction entre Mac EDi et non Mac EFI!
Je suis passé par l'UEFI de grub2 pour mes mac minis (une des trois méthodes proposées) et ça marchait.
Le seul hic était que je ne pouvais pas installer de dual boot Ubuntu/Darwin dessus. Pour cette dernière solution des collègues utilisait Refit.
Bref, c'est plus clair pour moi aujourd'hui en tous cas
merci !
« Doutez de tout et surtout de ce que je vais vous dire. »
Hors ligne
#5 Le 25/09/2012, à 11:08
- malbo
Re : [Tuto] Principes (quelques) de Ubuntu en mode UEFI
Une gestion du multi-boot de plusieurs installations de Ubuntu sur un même disque dur (fait dans VirtualBox avec EFI activé) : http://paste.ubuntu.com/1226265/
Comme c'est un peu long, j'extrais la partie qui montre le multi-boot :
Boot Info Script 0.61.full + Boot-Repair extra info [Boot-Info September 18th 2012]
============================= Boot Info Summary: ===============================
=> No boot loader is installed in the MBR of /dev/sda.
sda1: __________________________________________________________________________
File system: vfat
Boot sector type: FAT16
Boot sector info: According to the info in the boot sector, sda1 starts
at sector 0. But according to the info from fdisk,
sda1 starts at sector 2048. According to the info in
the boot sector, sda1 has 0 sectors.
Operating System:
Boot files: /efi/ubuntu/grubx64_sda13_oneiric.efi
/efi/ubuntu/grubx64_sda14_precise.efi
/efi/ubuntu/grubx64_sda16_oneiric.efi
/efi/ubuntu/grubx64_sda2_oneiric.efi
/efi/ubuntu/grubx64_sda3_oneiric.efi
/efi/ubuntu/grubx64_sda5_precise.efi
/efi/ubuntu/grubx64_sda6_oneiric.efi
sda2: __________________________________________________________________________
File system: ext4
Boot sector type: -
Boot sector info:
Operating System: Ubuntu 11.10
Boot files: /boot/grub/grub.cfg /etc/fstab
sda3: __________________________________________________________________________
File system: ext4
Boot sector type: -
Boot sector info:
Operating System: Ubuntu 11.10
Boot files: /boot/grub/grub.cfg /etc/fstab
sda4: __________________________________________________________________________
File system: vfat
Boot sector type: FAT16
Boot sector info: According to the info in the boot sector, sda4 starts
at sector 0. But according to the info from fdisk,
sda4 starts at sector 104986624. According to the info
in the boot sector, sda4 has 0 sectors.
Operating System:
Boot files: /efi/ubuntu/grubx64_sda13_oneiric.efi
/efi/ubuntu/grubx64_sda14_precise.efi
/efi/ubuntu/grubx64_sda16_oneiric.efi
/efi/ubuntu/grubx64_sda2_oneiric.efi
/efi/ubuntu/grubx64_sda3_oneiric.efi
/efi/ubuntu/grubx64_sda5_precise.efi
/efi/ubuntu/grubx64_sda6_oneiric.efi
sda5: __________________________________________________________________________
File system: ext4
Boot sector type: -
Boot sector info:
Operating System: Ubuntu 12.04.1 LTS
Boot files: /boot/grub/grub.cfg /etc/fstab
sda6: __________________________________________________________________________
File system: ext4
Boot sector type: -
Boot sector info:
Operating System: Ubuntu 11.10
Boot files: /boot/grub/grub.cfg /etc/fstab
sda7: __________________________________________________________________________
File system: vfat
Boot sector type: FAT16
Boot sector info: According to the info in the boot sector, sda7 starts
at sector 0. But according to the info from fdisk,
sda7 starts at sector 43008. According to the info in
the boot sector, sda7 has 0 sectors.
Operating System:
Boot files: /efi/ubuntu/grubx64.efi
sda8: __________________________________________________________________________
File system: vfat
Boot sector type: FAT16
Boot sector info: According to the info in the boot sector, sda8 starts
at sector 0. But according to the info from fdisk,
sda8 starts at sector 83968. According to the info in
the boot sector, sda8 has 0 sectors.
Operating System:
Boot files: /efi/ubuntu/grubx64.efi
sda9: __________________________________________________________________________
File system: vfat
Boot sector type: FAT16
Boot sector info: According to the info in the boot sector, sda9 starts
at sector 0. But according to the info from fdisk,
sda9 starts at sector 124928. According to the info in
the boot sector, sda9 has 0 sectors.
Operating System:
Boot files: /efi/ubuntu/grubx64.efi
sda10: _________________________________________________________________________
File system: vfat
Boot sector type: FAT16
Boot sector info: According to the info in the boot sector, sda10
starts at sector 0. But according to the info from
fdisk, sda10 starts at sector 165888. According to the
info in the boot sector, sda10 has 0 sectors.
Operating System:
Boot files: /efi/ubuntu/grubx64.efi
sda11: _________________________________________________________________________
File system: vfat
Boot sector type: FAT16
Boot sector info: According to the info in the boot sector, sda11
starts at sector 0. But according to the info from
fdisk, sda11 starts at sector 206848. According to the
info in the boot sector, sda11 has 0 sectors.
Operating System:
Boot files: /efi/ubuntu/grubx64.efi
sda12: _________________________________________________________________________
File system: swap
Boot sector type: -
Boot sector info:
sda13: _________________________________________________________________________
File system: ext4
Boot sector type: -
Boot sector info:
Operating System: Ubuntu 11.10
Boot files: /boot/grub/grub.cfg /etc/fstab
sda14: _________________________________________________________________________
File system: ext4
Boot sector type: -
Boot sector info:
Operating System: Ubuntu 12.04.1 LTS
Boot files: /boot/grub/grub.cfg /etc/fstab
sda15: _________________________________________________________________________
File system: swap
Boot sector type: -
Boot sector info:
sda16: _________________________________________________________________________
File system: ext4
Boot sector type: -
Boot sector info:
Operating System: Ubuntu 11.10
Boot files: /boot/grub/grub.cfg /etc/fstab
sda17: _________________________________________________________________________
File system: vfat
Boot sector type: FAT16
Boot sector info: According to the info in the boot sector, sda17
starts at sector 0. But according to the info from
fdisk, sda17 starts at sector 247808. According to the
info in the boot sector, sda17 has 0 sectors.
Operating System:
Boot files: /efi/ubuntu/grubx64.efi
sda18: _________________________________________________________________________
File system: vfat
Boot sector type: FAT16
Boot sector info: According to the info in the boot sector, sda18
starts at sector 0. But according to the info from
fdisk, sda18 starts at sector 288768. According to the
info in the boot sector, sda18 has 0 sectors.
Operating System:
Boot files: /efi/ubuntu/grubx64.efi
============================ Drive/Partition Info: =============================
Drive: sda _____________________________________________________________________
Disk /dev/sda: 53.8 GB, 53774123008 bytes
255 heads, 63 sectors/track, 6537 cylinders, total 105027584 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
Partition Boot Start Sector End Sector # of Sectors Id System
/dev/sda1 1 105,027,583 105,027,583 ee GPT
GUID Partition Table detected.
Partition Start Sector End Sector # of Sectors System
/dev/sda1 2,048 43,007 40,960 EFI System partition
/dev/sda2 93,169,585 104,985,991 11,816,407 Data partition (Windows/Linux)
/dev/sda3 616,448 13,800,041 13,183,594 Data partition (Windows/Linux)
/dev/sda4 104,986,624 105,025,535 38,912 Data partition (Windows/Linux)
/dev/sda5 83,403,959 93,169,584 9,765,626 Data partition (Windows/Linux)
/dev/sda6 13,800,974 32,386,911 18,585,938 Data partition (Windows/Linux)
/dev/sda7 43,008 83,967 40,960 Data partition (Windows/Linux)
/dev/sda8 83,968 124,927 40,960 Data partition (Windows/Linux)
/dev/sda9 124,928 165,887 40,960 Data partition (Windows/Linux)
/dev/sda10 165,888 206,847 40,960 Data partition (Windows/Linux)
/dev/sda11 206,848 247,807 40,960 Data partition (Windows/Linux)
/dev/sda12 32,386,912 34,480,127 2,093,216 Swap partition (Linux)
/dev/sda13 34,519,191 54,107,081 19,587,891 Data partition (Windows/Linux)
/dev/sda14 54,146,145 67,640,285 13,494,141 Data partition (Windows/Linux)
/dev/sda15 67,640,286 69,732,082 2,091,797 Swap partition (Linux)
/dev/sda16 69,771,146 81,312,161 11,541,016 Data partition (Windows/Linux)
/dev/sda17 247,808 288,767 40,960 Data partition (Windows/Linux)
/dev/sda18 288,768 329,727 40,960 Data partition (Windows/Linux)
"blkid" output: ________________________________________________________________
Device UUID TYPE LABEL
/dev/sda1 F0F1-156C vfat
/dev/sda10 4425-C951 vfat bootsda14
/dev/sda11 4449-93E2 vfat bootsda16
/dev/sda12 82096782-27c6-432d-869b-d1ab52a0c835 swap
/dev/sda13 1ef5ca5f-ec90-4340-990f-885cecc1058f ext4
/dev/sda14 af15dd2b-b43d-4233-9ffa-2268a21cb938 ext4
/dev/sda15 b930db26-ebe8-4afe-bf63-51dd8da11d02 swap
/dev/sda16 69e7e65c-e985-4414-a564-5de2921271af ext4
/dev/sda17 9CBF-2DC7 vfat bootsda5
/dev/sda18 9F6D-5473 vfat bootsda2
/dev/sda2 ea855191-866b-4469-a79b-c52bde5bf417 ext4
/dev/sda3 2ce28027-8d12-41fd-a113-55389e9d1030 ext4
/dev/sda4 DE79-D693 vfat
/dev/sda5 f49b01be-9c74-4a26-9086-10f8b7a77c03 ext4
/dev/sda6 6dfe68ed-572e-4169-8a79-37b591b42add ext4
/dev/sda7 23C1-B6C2 vfat bootsda3
/dev/sda8 43E1-2D39 vfat bootsda6
/dev/sda9 4403-8492 vfat bootsda13
Quelques commentaires :
- la partition sda1 est une sorte de menu des lanceurs qui est confectionné "à la main". C'est à dire que chaque lanceur est une copie du véritable lanceur que j'ai renommée. Par exemple, le lanceur /efi/ubuntu/grubx64_sda13_oneiric.efi qui se trouve sur sda1 est une copie du lanceur /efi/ubuntu/grubx64.efi qu'on peut voir dans sda9. En cas de mise à jour de Grub de sda13_oneiric, il est possible que le fichier grubx64.efi de sda9 soit modifié. Dans ce cas, il faudra que je mette aussi à jour la copie que j'ai faite dans sda1. A noter qu'on n'est absolument pas obligé de faire cette sorte de table des matières comme je l'ai fait en rassemblant des lanceurs dans sda1 : on peut se contenter de créer des entrées dans le "Boot Maintenance manager" du système EFI qui pointent directement sur les vrais lanceurs et pas sur leur copie.
- la partition sda4, placée en fin de disque dur, est une copie de secours de la partition sda1 (au cas où sda1 serait écrasée ou dégradée)
- dans la partie ""blkid" output" de l'extrait, on peut voir "qui lance quoi" parce que j'ai renseigné les labels des partitions qui contiennent les lanceurs. Par exemple, on voit que la partition sda10 contient le lanceur pour sda14 qui est une installation de Ubuntu 12.04.1 LTS
Dernière modification par malbo (Le 25/09/2012, à 11:31)
Hors ligne
#6 Le 25/09/2012, à 11:56
- YannUbuntu
Re : [Tuto] Principes (quelques) de Ubuntu en mode UEFI
Bonjour Malbo
Voir https://bugs.launchpad.net/ubuntu/+sour … ug/1056101
à consulter/améliorer: Guide du Débutant, Logiciels, Ecole, Travail, Maison
Hors ligne
#7 Le 25/09/2012, à 12:15
- malbo
Re : [Tuto] Principes (quelques) de Ubuntu en mode UEFI
YannUbuntu,
Il y a un truc que j'ai envie d'essayer, c'est de créer dans la partition EFI sda1 des dossiers différents au lieu de faire mes bidouilles du nom du fichier .efi :
/efi/ubuntu_sda13_oneiric/grubx64.efi
/efi/ubuntu_sda14_precise/grubx64.efi
/efi/ubuntu_sda16_oneiric/grubx64.efi
/efi/ubuntu_sda2_oneiric/grubx64.efi
/efi/ubuntu_sda3_oneiric/grubx64.efi
/efi/ubuntu_sda5_precise/grubx64.efi
/efi/ubuntu_sda6_oneiric/grubx64.efi
Il faudrait que je modifie à la main les fichiers fstab de toutes les installations pour qu'elles pointent toutes sur sda1 dans leur dossier réservé.
Hors ligne
#8 Le 25/09/2012, à 12:23
- YannUbuntu
Re : [Tuto] Principes (quelques) de Ubuntu en mode UEFI
Oui tu peux essayer (je ne sais pas si ça marche), mais dans ce cas inutile de modifier fstab, car fstab contient '/boot/efi' seulement.
à consulter/améliorer: Guide du Débutant, Logiciels, Ecole, Travail, Maison
Hors ligne
#9 Le 25/09/2012, à 12:31
- malbo
Re : [Tuto] Principes (quelques) de Ubuntu en mode UEFI
mais dans ce cas inutile de modifier fstab, car fstab contient '/boot/efi' seulement.
Hum, je crois bien que ça ne va jamais marcher mon petit projet....
Hors ligne
#10 Le 25/09/2012, à 12:46
- YannUbuntu
Re : [Tuto] Principes (quelques) de Ubuntu en mode UEFI
pas besoin de modifier fstab, mais tu risques de devoir mettre à jour les entrées du BIOS.
Soit manuellement dans le BIOS, soit via le paquet efibootmgr (qui est appelé automatiquement par grub-install de grub-efi je crois).
à consulter/améliorer: Guide du Débutant, Logiciels, Ecole, Travail, Maison
Hors ligne
#11 Le 27/09/2012, à 11:58
- malbo
Re : [Tuto] Principes (quelques) de Ubuntu en mode UEFI
YannUbuntu,
J'ai renoncé à faire cette gestion compliquée pour un "recette" plus pragmatique et plus ouverte à tout le monde que je propose dans ce tuto : http://forum.ubuntu-fr.org/viewtopic.php?id=1050981
Tes remarques, observations et questions y seront les bienvenues.
Dernière modification par malbo (Le 27/09/2012, à 11:59)
Hors ligne