« Debian & UEFI » : différence entre les versions

De Le Wiki du Forum-Debian.fr
Aller à la navigation Aller à la recherche
Aucun résumé des modifications
 
(14 versions intermédiaires par 3 utilisateurs non affichées)
Ligne 1 : Ligne 1 :
Cette page à pour but de vous aider à démarrer Debian sur un EFI.<br />  
Cette page a pour but de vous aider à démarrer Debian sur un EFI.<br />  
Elle n'a pas pour but d'expliquer ce qu'est (U)EFI et les tables de partitions GPT.
Elle n’a pas pour but d’expliquer ce que sont (U)EFI et les tables de partitions GPT. Pour cela se référer à la page officiel du projet Debian, [https://wiki.debian.org/UEFI ici].


== kézako ? ==


== kézako ? ==
UEFI est prévu pour remplacer le BIOS de nos carte-mères, il inclut quand même une compatibilité avec l’ancien BIOS.
L’UEFI Boot Manager est capable de charger les amorceurs de démarrage depuis une partition FAT.


UEFI est prévu pour remplacer le Bios de nos carte-mères, il inclut quand même une compatibilité avec l'ancien Bios.
Nous avons donc besoin de faire deux choses :  
L'UEFI Boot Manager est capable de charger les amorceurs de démarrage depuis une partition FAT.
* Installer le chargeur de démarrage sur la partition FAT ;
 
* Optionnellement dire à UEFI de créer une entrée pour ce chargeur.
Nous avons donc besoin de 2 choses :  
* Installer le chargeur de démarrage sur la partition FAT
* Dire à UEFI de créer une entrée pour ce chargeur


== Installation neuve de Debian ==
== Installation neuve de Debian ==


Il n'y a pas encore d'image toute prête pour installer Debian avec le support UEFI et 2 choix s'offrent à vous :
À partir de la version Jessie 8 les images d'installation peuvent automatiquement installer un système exploitant un amorceur UEFI, pour les image «live» cela est possible uniquement à partir de la version 9. Donc il vous suffit de vous assurer que votre ordinateur priorise bien l'UEFI puis continuer l’installation normale de Debian en utilisant.
* Faire votre propre image d'installation supportant un amorceur de démarrage UEFI sur une clef USB qui lancera une installation.
* Installer en utilisant l'image classique avec le Bios
 
Nous allons ici traiter le second point.
 
* Supprimer les partitions existantes et créer les partitions en utilisant le GUID Partition Table (GPT) (vous pouvez utiliser gdisk ou parted pour cela).
**Faire une petite partition (1Mio devrait suffire)
**NE PAS la formater et ne pas la monter
**Initialiser le type sur "Bios Boot Partition"
*** Avec ''Gparted'' il faut mettre le drapeau "bios_grub", s'il ne veut pas il faut formater la partition en FAT16 pour le mettre
*** Avec ''parted'' taper la commande "set 1 bios_grub on", le numéro étant le rang de la partition
*** Avec ''gdisk'' (GPT fdisk) donner le code "EF02" à la partition visé
 


*Faire une seconde partition (de même taille ou plus si vous avez plusieurs OS à lancer)
== Debian déjà installée ==
**Formater la partition en FAT16/32
**Initialiser le type sur "EFI system partition" et placer le drapeau de Boot sur celle-ci
*** Avec ''Gparted'' il faut mettre le drapeau "boot"
*** Avec ''parted'' taper la commande "set 1 boot on", le numéro étant le rang de la partition
*** Avec ''gdisk'' donner le code "EF00"
**Monter cette partition sur /boot/efi


*Continuer l'installation normale de Debian en utilisant le Bios pour démarrer
Il faut obligatoirement utiliser une table de partitions GPT, si elle est déjà en MBR vous pouvez essayer de la convertir avec gdisk (à vos risques et périls car je n’ai pas testé cette solution)


== Debian déjà installé ==
*Utilisez un liveCD pour faire une peu de place sur le disque.  
 
*Créez une nouvelle partition (1Mio devrait suffire mais attention en cas de multi-boot). Il est indispensable que celle-ci soit détecté comme la première partition de votre disque. Les implémentation de l'UEFI étant aléatoire, si la condition précédente n'est pas remplie, il se peux que l'amorceur ne trouve pas cette partition. Donc vérifiez bien que cette nouvelle partition soit détecté en tant que «/dev/sdX1».
Il faut obligatoirement utiliser une table de partition GPT, si elle est déjà en MBR vous pouvez essayer de la convertir avec gdisk (à vos risques et périls car je n'ai pas testé cette solution)
*Formatez la partition en FAT16/32
 
*Montez sur /boot/efi (/boot/efi n’existe pas, créez-le auparavant) de façon permanente via le fstab avec la ligne suivante :
*Utiliser une liveCD pour faire une peu de place sur le disque.  
UUID="identifiant-unique-de-la-partition" /boot/efi vfat defaults 0 2
*Créer une nouvelle partition (1Mio devrait suffire mais attention en cas de multi-boot)
ou (provenant de RH)
*Formater la partition en FAT
UUID="identifiant-unique-de-la-partition" /boot/efi vfat umask=0077,shortname=winnt 0 2
*Monter sur /boot/efi (/boot/efi n'existe pas, créez-le auparavant) de façon permanente via le fstab


== Passer en UEFI ==
== Passer en UEFI ==
Installer le paquet grub-efi-amd64<br />
Installer le paquet grub-efi-amd64<br />
''Attention les versions du paquet dans les dépôts stable & testing ne semblent pas fonctionner correctement. J'ai dû, dans mon cas, utiliser le version fournie en unstable (2 septembre 2014).''<br />
''<span style="color:red">Attention les versions du paquet dans les dépôts de Wheezy et Jessie ne semblent pas fonctionner correctement. J’ai dû, dans mon cas, utiliser le version fournie en unstable (2 septembre 2014).''</span><br />
Normalement il va vous demander de supprimer les paquets "grub-pc" et "grub-pc-bin", s’il ne vous propose qu’un des deux, désinstallez le deuxième manuellement


Si vous voulez installer GRUB sur un disque que vous préparez en chroot il faut monter quelques répertoires systèmes avant :
Si vous voulez installer GRUB sur un disque que vous préparez en chroot il faut monter quelques répertoires systèmes avant :
  mount /dev/sdXX /mnt
  # mount /dev/sdXX /mnt
  mount --bind /dev  /mnt/dev
  # mount --bind /dev  /mnt/dev
  mount --bind /proc /mnt/proc
  # mount --bind /proc /mnt/proc
  mount --bind /sys  /mnt/sys
  # mount --bind /sys  /mnt/sys
  mount --bind /usr  /mnt/usr <= inutile si vous avez déjà copié le système sur le nouveau disque
  # mount --bind /usr  /mnt/usr <= inutile si vous avez déjà copié le système sur le nouveau disque
  chroot /mnt
  # chroot /mnt


Préparer GRUB via la commande habituelle :  
Préparer GRUB via la commande habituelle :  
  grub-install /dev/sda
  # update-grub
 
Puis l’installer effectivement sur le disque :
# grub-install /dev/sda


Cette commande fait trois choses :  
Cette commande fait trois choses :  
*Elle génère une image GRUB
*Elle génère une image GRUB
*Elle installe l'image dans la partition EFI sur efi/debian/grubx64.efi (C’est-à-dire /boot/efi/efi/debian…)
*Elle installe l’image dans la partition EFI sur EFI/debian/grubx64.efi (C’est-à-dire /boot/efi/EFI/debian…)
*Elle essaye de configurer le gestionnaire de démarrage UEFI pour le charger au démarrage de la machine
*Elle essaye de configurer le gestionnaire de démarrage UEFI pour le charger au démarrage de la machine
La dernière étape doit normalement finir par une erreur car le gestionnaire de démarrage UEFI n’est configurable que depuis un système déjà démarré en UEFI.<br />
Même si GRUB vous dit que tout s’est bien passé, vérifiez que le répertoire EFI est bien présent et rempli. Si ce n’est pas le cas vous avez du louper quelque chose. N’hésitez pas a prendre la version "unstable" comme conseillé avant.
Si GRUB vous sort quelque chose comme :
# grub-install /dev/sda                   
grub-install : erreur : /usr/lib/grub/i386-pc/modinfo.sh n'existe pas. Veuillez utiliser --target ou --directory.
Alors il faut lui préciser pour quel genre de système vous voulez installer GRUB.
# grub-install --target=x86_64-efi /dev/sdX
Vous pouvez préciser un peu plus de chose pour contrôler plus finement l’installation et que l’exécution soit pus bavarde :
# grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=debian --recheck --debug /dev/sdX
si vous épluchez un peu le log vous verrez peut être des lignes comme celle-ci :
grub-install : information : impossible d'ouvrir « /usr/lib/grub/x86_64-efi/efiemu32.o » : Aucun fichier ou dossier de ce type.
Si vous êtes sur un système 64 bits c’est normal, juste en dessous vous devez trouver :
grub-install : information : copying `/usr/lib/grub/x86_64-efi/efiemu64.o' -> `/boot/grub/x86_64-efi/efiemu64.o'.
Ou :
grub-install : information : copying `/usr/share/locale/ru/LC_MESSAGES/grub.mo' -> `/boot/grub/locale/ru.mo'.
grub-install : information : impossible d'ouvrir « /usr/share/locale/ru/LC_MESSAGES/grub.mo » : Aucun fichier ou dossier de ce type.
Ce qui est normal car ce sont différentes langues qui ne sont pas installées.


La dernière étape doit normalement finir par une erreur car le gestionnaire de démarrage UEFI n'est configurable que depuis un système déjà démarré en UEFI.<br />
''<span style="color:red">Attention, arrêtez ici et votre système ne pourra plus démarrer !</span>
''<span style="color:red">Attention, arrêtez ici et votre système ne pourra plus démarrer !</span>
''<br />
''<br />
Copier (pas de lien symbolique !, système FAT oblige) l’image GRUB dans le répertoire de la partition EFI :
Copier (pas de lien symbolique !, système FAT oblige) l’image GRUB dans le répertoire de la partition EFI :
  cp /boot/efi/efi/debian/grubx64.efi /boot/efi/efi/boot/bootx64.efi
  # cp /boot/efi/EFI/debian/grubx64.efi /boot/efi/EFI/boot/bootx64.efi


C'est dans ce répertoire que le système UEFI va regarder.
C’est dans ce répertoire que le système UEFI va regarder.


Vous pouvez maintenant redémarrer votre machine pour vérifier que tout est en ordre (il faut penser à changer la méthode de démarrage dans UEFI).
Vous pouvez maintenant redémarrer votre machine pour vérifier que tout est en ordre (il faut penser à changer la méthode de démarrage dans UEFI).


Si tout a fonctionné, vous devez maintenant avoir une entrée "debian" dans la liste.
Si tout a fonctionné, vous devez maintenant avoir une entrée "debian" dans la liste.
== Vérification ==
Une fois de retour dans une console il vous suffit de faire
$ ls /sys/firmware |grep efi
Si ça vous retourne une ligne c’est tout bon, sinon il y a quelque chose qui cloche.i
Vous pouvez aussi installer le paquet "efivar" et faire un simple :
# efivar -l
Pour voir la liste des variables disponible.
La commande suivante vous permet de voir l'ordre de démarrage
# efibootmgr
Cette outil en ligne de commande vous permet aussi de manipuler (création/suppression/modification) cet ordonnancement.


== Nettoyage ==
== Nettoyage ==


Un fois le système démarré via UEFI vous pouvez supprimer efi/boot/bootx64.efi qui n'est plus nécessaire.
* Une fois le système démarré via UEFI vous pouvez supprimer efi/boot/bootx64.efi qui n’est plus nécessaire.
* S’il s’agissait d’une migration de BIOS vers UEFI vous pouvez aussi supprimer le répertoire /boot/grub/i386-pc.
 
== Au secours, ça ne démarre plus !!! ==
Pas de panique, il existe un outil qui vous permettra de démarrer en UEFI sur votre OS favori, il s’agit de [http://www.rodsbooks.com/refind/getting.html rEFInd]. Je vous conseille de prendre l’image sur clé USB qui fonctionne à merveille. Une fois téléchargé et décompressé il vous suffit de faire :
dd if=/chemin/vers/l/image.img of=/dev/sdX
 
Redémarrez votre machine et vous devriez avoir un bel écran pour choisir quoi lancer, le tout avec de jolies icônes et tout.


== Bugs et Informations Importantes ==
== Bugs et Informations Importantes ==


Ma machine (Dell Latitude E5530) ne démarre pas lorsque le PC est sur sa base (Dock Dell ...). Il bloque après la selection du noyau dans Grub.<br />
Ma machine (Dell Latitude E5530) ne démarre pas lorsque le PC est sur sa base (Dock Dell…). Il bloque après la selection du noyau dans GRUB.<br />
J'ai dû installer le paquet depuis les dépots ''unstable''. Un premier essai avec les dépots en ''testing'' n'a pas marché dans mon cas.  
J’ai dû installer le paquet depuis les dépots ''unstable''. Un premier essai avec les dépots en ''testing'' (Jessie au moment de l’écriture) n’a pas fonctionné dans mon cas.  


Ce tuto est basé sur une sujet de [http://tanguy.ortolo.eu/blog/article51/debian-efi Tanguy Ortolo] et ma [http://www.debian-fr.org/gpt-ou-mbr-invalid-partition-table-t42146.html propre expérience]. Merci à ORNis pour sa relecture :)
Ce tuto est basé sur un sujet de [http://tanguy.ortolo.eu/blog/article51/debian-efi Tanguy Ortolo] et ma [http://www.debian-fr.org/gpt-ou-mbr-invalid-partition-table-t42146.html propre expérience]. Merci à ORNis pour sa relecture :)

Dernière version du 6 novembre 2017 à 13:07

Cette page a pour but de vous aider à démarrer Debian sur un EFI.
Elle n’a pas pour but d’expliquer ce que sont (U)EFI et les tables de partitions GPT. Pour cela se référer à la page officiel du projet Debian, ici.

kézako ?

UEFI est prévu pour remplacer le BIOS de nos carte-mères, il inclut quand même une compatibilité avec l’ancien BIOS. L’UEFI Boot Manager est capable de charger les amorceurs de démarrage depuis une partition FAT.

Nous avons donc besoin de faire deux choses :

  • Installer le chargeur de démarrage sur la partition FAT ;
  • Optionnellement dire à UEFI de créer une entrée pour ce chargeur.

Installation neuve de Debian

À partir de la version Jessie 8 les images d'installation peuvent automatiquement installer un système exploitant un amorceur UEFI, pour les image «live» cela est possible uniquement à partir de la version 9. Donc il vous suffit de vous assurer que votre ordinateur priorise bien l'UEFI puis continuer l’installation normale de Debian en utilisant.

Debian déjà installée

Il faut obligatoirement utiliser une table de partitions GPT, si elle est déjà en MBR vous pouvez essayer de la convertir avec gdisk (à vos risques et périls car je n’ai pas testé cette solution)

  • Utilisez un liveCD pour faire une peu de place sur le disque.
  • Créez une nouvelle partition (1Mio devrait suffire mais attention en cas de multi-boot). Il est indispensable que celle-ci soit détecté comme la première partition de votre disque. Les implémentation de l'UEFI étant aléatoire, si la condition précédente n'est pas remplie, il se peux que l'amorceur ne trouve pas cette partition. Donc vérifiez bien que cette nouvelle partition soit détecté en tant que «/dev/sdX1».
  • Formatez la partition en FAT16/32
  • Montez sur /boot/efi (/boot/efi n’existe pas, créez-le auparavant) de façon permanente via le fstab avec la ligne suivante :
UUID="identifiant-unique-de-la-partition"	/boot/efi	vfat	defaults	0	2

ou (provenant de RH)

UUID="identifiant-unique-de-la-partition"	/boot/efi	vfat	umask=0077,shortname=winnt	0	2

Passer en UEFI

Installer le paquet grub-efi-amd64
Attention les versions du paquet dans les dépôts de Wheezy et Jessie ne semblent pas fonctionner correctement. J’ai dû, dans mon cas, utiliser le version fournie en unstable (2 septembre 2014).
Normalement il va vous demander de supprimer les paquets "grub-pc" et "grub-pc-bin", s’il ne vous propose qu’un des deux, désinstallez le deuxième manuellement

Si vous voulez installer GRUB sur un disque que vous préparez en chroot il faut monter quelques répertoires systèmes avant :

# mount /dev/sdXX /mnt
# mount --bind /dev  /mnt/dev
# mount --bind /proc /mnt/proc
# mount --bind /sys  /mnt/sys
# mount --bind /usr  /mnt/usr <= inutile si vous avez déjà copié le système sur le nouveau disque
# chroot /mnt

Préparer GRUB via la commande habituelle :

# update-grub

Puis l’installer effectivement sur le disque :

# grub-install /dev/sda

Cette commande fait trois choses :

  • Elle génère une image GRUB
  • Elle installe l’image dans la partition EFI sur EFI/debian/grubx64.efi (C’est-à-dire /boot/efi/EFI/debian…)
  • Elle essaye de configurer le gestionnaire de démarrage UEFI pour le charger au démarrage de la machine

La dernière étape doit normalement finir par une erreur car le gestionnaire de démarrage UEFI n’est configurable que depuis un système déjà démarré en UEFI.

Même si GRUB vous dit que tout s’est bien passé, vérifiez que le répertoire EFI est bien présent et rempli. Si ce n’est pas le cas vous avez du louper quelque chose. N’hésitez pas a prendre la version "unstable" comme conseillé avant.

Si GRUB vous sort quelque chose comme :

# grub-install /dev/sda                     
grub-install : erreur : /usr/lib/grub/i386-pc/modinfo.sh n'existe pas. Veuillez utiliser --target ou --directory.

Alors il faut lui préciser pour quel genre de système vous voulez installer GRUB.

# grub-install --target=x86_64-efi /dev/sdX

Vous pouvez préciser un peu plus de chose pour contrôler plus finement l’installation et que l’exécution soit pus bavarde :

# grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=debian --recheck --debug /dev/sdX

si vous épluchez un peu le log vous verrez peut être des lignes comme celle-ci :

grub-install : information : impossible d'ouvrir « /usr/lib/grub/x86_64-efi/efiemu32.o » : Aucun fichier ou dossier de ce type.

Si vous êtes sur un système 64 bits c’est normal, juste en dessous vous devez trouver :

grub-install : information : copying `/usr/lib/grub/x86_64-efi/efiemu64.o' -> `/boot/grub/x86_64-efi/efiemu64.o'.

Ou :

grub-install : information : copying `/usr/share/locale/ru/LC_MESSAGES/grub.mo' -> `/boot/grub/locale/ru.mo'.
grub-install : information : impossible d'ouvrir « /usr/share/locale/ru/LC_MESSAGES/grub.mo » : Aucun fichier ou dossier de ce type.

Ce qui est normal car ce sont différentes langues qui ne sont pas installées.

Attention, arrêtez ici et votre système ne pourra plus démarrer !
Copier (pas de lien symbolique !, système FAT oblige) l’image GRUB dans le répertoire de la partition EFI :

# cp /boot/efi/EFI/debian/grubx64.efi /boot/efi/EFI/boot/bootx64.efi

C’est dans ce répertoire que le système UEFI va regarder.

Vous pouvez maintenant redémarrer votre machine pour vérifier que tout est en ordre (il faut penser à changer la méthode de démarrage dans UEFI).

Si tout a fonctionné, vous devez maintenant avoir une entrée "debian" dans la liste.

Vérification

Une fois de retour dans une console il vous suffit de faire

$ ls /sys/firmware |grep efi

Si ça vous retourne une ligne c’est tout bon, sinon il y a quelque chose qui cloche.i

Vous pouvez aussi installer le paquet "efivar" et faire un simple :

# efivar -l

Pour voir la liste des variables disponible.

La commande suivante vous permet de voir l'ordre de démarrage

# efibootmgr

Cette outil en ligne de commande vous permet aussi de manipuler (création/suppression/modification) cet ordonnancement.

Nettoyage

  • Une fois le système démarré via UEFI vous pouvez supprimer efi/boot/bootx64.efi qui n’est plus nécessaire.
  • S’il s’agissait d’une migration de BIOS vers UEFI vous pouvez aussi supprimer le répertoire /boot/grub/i386-pc.

Au secours, ça ne démarre plus !!!

Pas de panique, il existe un outil qui vous permettra de démarrer en UEFI sur votre OS favori, il s’agit de rEFInd. Je vous conseille de prendre l’image sur clé USB qui fonctionne à merveille. Une fois téléchargé et décompressé il vous suffit de faire :

dd if=/chemin/vers/l/image.img of=/dev/sdX

Redémarrez votre machine et vous devriez avoir un bel écran pour choisir quoi lancer, le tout avec de jolies icônes et tout.

Bugs et Informations Importantes

Ma machine (Dell Latitude E5530) ne démarre pas lorsque le PC est sur sa base (Dock Dell…). Il bloque après la selection du noyau dans GRUB.
J’ai dû installer le paquet depuis les dépots unstable. Un premier essai avec les dépots en testing (Jessie au moment de l’écriture) n’a pas fonctionné dans mon cas.

Ce tuto est basé sur un sujet de Tanguy Ortolo et ma propre expérience. Merci à ORNis pour sa relecture :)