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

De Le Wiki du Forum-Debian.fr
Aller à la navigation Aller à la recherche
mAucun résumé des modifications
Aucun résumé des modifications
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.




== 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.
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.
L’UEFI Boot Manager est capable de charger les amorceurs de démarrage depuis une partition FAT.


Nous avons donc besoin de 2 choses :  
Nous avons donc besoin de faire deux choses :  
* Installer le chargeur de démarrage sur la partition FAT
* Installer le chargeur de démarrage sur la partition FAT ;
* Dire à UEFI de créer une entrée pour ce chargeur
* 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 :  
Il n’y a pas encore d’image toute prête pour installer Debian avec le support UEFI et deux choix s’offrent à vous :  
* Faire votre propre image d'installation supportant un amorceur de démarrage UEFI sur une clef USB qui lancera une installation.
* 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
* Installer en utilisant l’image classique avec le BIOS.


Nous allons ici traiter le second point.
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).
* 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)
**Créer une petite partition (1Mio devrait suffire)
**NE PAS la formater et ne pas la monter
**NE PAS la formater et ne pas la monter
**Initialiser le type sur "Bios Boot Partition"
**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 ''Gparted'' il faut mettre le drapeau "bios_grub", s’il ne veut pas il faut au préalable formater la partition en FAT16
*** Avec ''parted'' taper la commande "set 1 bios_grub on", le numéro étant le rang de la partition
*** 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é
*** Avec ''gdisk'' (GPT fdisk) donner le code "EF02" à la partition visé
Ligne 37 : Ligne 37 :
**Monter cette partition sur /boot/efi
**Monter cette partition sur /boot/efi


*Continuer l'installation normale de Debian en utilisant le Bios pour démarrer
*Continuer l’installation normale de Debian en utilisant le BIOS pour démarrer


== Debian déjà installé ==
== Debian déjà installée ==


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)
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)


*Utiliser une liveCD pour faire une peu de place sur le disque.  
*Utiliser un liveCD pour faire une peu de place sur le disque.  
*Créer une nouvelle partition (1Mio devrait suffire mais attention en cas de multi-boot)
*Créer une nouvelle partition (1Mio devrait suffire mais attention en cas de multi-boot)
*Formater la partition en FAT
*Formater la partition en FAT
*Monter sur /boot/efi (/boot/efi n'existe pas, créez-le auparavant) de façon permanente via le fstab avec la ligne suivante :
*Monter sur /boot/efi (/boot/efi n’existe pas, créez-le auparavant) de façon permanente via le fstab avec la ligne suivante :
  /dev/sda2 /boot/efi vfat dafauts 0 2
  UUID="identifiant-unique-de-la-partition" /boot/efi vfat dafauts 0 2
ou (provenant de RH)
ou (provenant de RH)
  /dev/sda2 /boot/efi vfat umask=0077,shortname=winnt 0 2
  UUID="identifiant-unique-de-la-partition" /boot/efi vfat umask=0077,shortname=winnt 0 2


== Passer en UEFI ==
== Passer en UEFI ==
Installer le paquet grub-efi-amd64<br />
Installer le paquet grub-efi-amd64<br />
''<span style="color:red">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).''</span><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 seulement, désinstaller le deuxième manuellement
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 :
Ligne 67 : Ligne 67 :
  # update-grub
  # update-grub


Puis faire son installation effective sur le disque :
Puis l’installer effectivement sur le disque :
  # grub-install /dev/sda
  # 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 />
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.
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 :
Si GRUB vous sort quelque chose comme :
  # grub-install /dev/sda                     
  # grub-install /dev/sda                     
  grub-install : erreur : /usr/lib/grub/i386-pc/modinfo.sh n'existe pas. Veuillez utiliser --target ou --directory.
  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.
Alors il faut lui préciser pour quel genre de système vous voulez installer GRUB.
  # grub-install --target=x86_64-efi /dev/sdX
  # grub-install --target=x86_64-efi /dev/sdX


Vous pouvez préciser un peu plus de chose pour controler plus finement l'installation et que l'exécution soit pus bavarde :
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/sdax
  # grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=debian --recheck --debug /dev/sdax


si vous épluchez un peu le log vous verrez peut être des lignes comme ça :
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.
  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 :
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'.
  grub-install : information : copying `/usr/lib/grub/x86_64-efi/efiemu64.o' -> `/boot/grub/x86_64-efi/efiemu64.o'.


Ou :
Ou :
  grub-install : information : copying `/usr/share/locale/ru/LC_MESSAGES/grub.mo' -> `/boot/grub/locale/ru.mo'.
  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.
  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és
Ce qui est normal car ce sont différentes langues qui ne sont pas installées.


''<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>
Ligne 105 : Ligne 105 :
  # 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).
Ligne 115 : Ligne 115 :
  $ ls /sys/firmware |grep efi
  $ ls /sys/firmware |grep efi


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


Vous pouvez aussi installer le paquet "efivar" et faire un simple :
Vous pouvez aussi installer le paquet "efivar" et faire un simple :
  # efvar -l
  # efvar -l
Pour voir la liste des variables disponible
Pour voir la liste des variables disponible.


== Nettoyage ==
== Nettoyage ==


* Une 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.
* Si c'est une migration BIOS vers UEFI vous pouvez aussi supprimer le répertoire /boot/grub/i386-pc
* 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 boot plus !!! ==
== 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 :
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
  dd if=/chemin/vers/l/image.img of=/dev/sdX


Redémarrez votre machine et vous devriez avoir un joli écran pour choisir quoi lancer, le tout avec de belles icônes et tout.
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 :)

Version du 15 septembre 2014 à 17:56

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.


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 ;
  • Dire à UEFI de créer une entrée pour ce chargeur.

Installation neuve de Debian

Il n’y a pas encore d’image toute prête pour installer Debian avec le support UEFI et deux choix s’offrent à vous :

  • 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).
    • Créer 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 au préalable formater la partition en FAT16
      • 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)
    • 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

Debian déjà installée

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)

  • Utiliser un liveCD pour faire une peu de place sur le disque.
  • Créer une nouvelle partition (1Mio devrait suffire mais attention en cas de multi-boot)
  • Formater la partition en FAT
  • Monter 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	dafauts	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/sdax

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.

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

# efvar -l

Pour voir la liste des variables disponible.

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 :)