« 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
 
(40 versions intermédiaires par 5 utilisateurs non affichées)
Ligne 1 : Ligne 1 :
'''''Page en cours de rédaction !!!!'''
Cette page a pour but de vous aider à démarrer Debian sur un EFI.<br />
''
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].


Cette page à pour but de vous aider à démarrer Debian sur un EFI.<br />
== kézako ? ==
Elle n'a pas pour but d'expliquer ce qu'est (U)EFI et les tables de partitions GPT.


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.


== kézako ? ==
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.


UEFI est prévu pour remplacer le Bios de nos carte-mères, il inclut quand même une compatibilité avec l'ancien bios.
== Installation neuve de Debian ==
L'UEFI Boot Manager est capable de charger les amorceurs de démarrage depuis une partition FAT.
 
À 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


Nous avons donc besoin de 2 choses :
== Passer en UEFI ==
* Installer le chargeur de démarrage sur la partition FAT
Installer le paquet grub-efi-amd64<br />
* Dire à UEFI de créer une entrée pour ce chargeur
''<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


== Installation neuve de Debian ==
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


Il n'y a pas encore d'image toute prête pour installer Debian avec le support UEFI et 2 choix s'offrent à vous :  
Puis l’installer effectivement sur le disque :
* Faire votre propre image d'installation supportant un amorceur de démarrage UEFI sur une clef USB qui lancera une installation.
# grub-install /dev/sda
* Installer en utilisant l'image classique avec le Bios


Nous allons ici traiter le second point.
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.<br />


*Formater le disque et créer les partitions en utilisant le GUID Partition Table (GPT) (vous pouvez utiliser gdisk ou parted pour cela).
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.
**Faire une petite partition (1Mio devrait suffire)
**Initialiser le type sur "Bios Boot Partition"
**NE PAS la formater et ne pas la monter


*Faire une seconde partition (de même taille ou plus si vous avez plusieurs OS à lancer)
Si GRUB vous sort quelque chose comme :
**Initialiser le type sur "EFI system partition" et placer le drapeau de Boot sur celle-ci
# grub-install /dev/sda                   
**Formater la partition en FAT
grub-install : erreur : /usr/lib/grub/i386-pc/modinfo.sh n'existe pas. Veuillez utiliser --target ou --directory.
**Monter cette partition sur /boot/efi


*Continuer l'installation normale de Debian en utilisant le Bios pour démarrer
Alors il faut lui préciser pour quel genre de système vous voulez installer GRUB.
# grub-install --target=x86_64-efi /dev/sdX


== Debian déjà installé ==
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


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


*Utiliser une liveCD pour faire une peu de place sur le disque.
Si vous êtes sur un système 64 bits c’est normal, juste en dessous vous devez trouver :
*créer une nouvelle partition (1Mio devrait suffire mais attention en cas de multi-boot)
grub-install : information : copying `/usr/lib/grub/x86_64-efi/efiemu64.o' -> `/boot/grub/x86_64-efi/efiemu64.o'.
*formatez-la en FAT et montez là sur /boot/efi (/boot/efi n'existe pas, créez-le auparavant) et montez la de façon permanente via le fstab


== Passer en UEFI ==
Ou :
Installer le paquet grub-efi-amd64<br />
grub-install : information : copying `/usr/share/locale/ru/LC_MESSAGES/grub.mo' -> `/boot/grub/locale/ru.mo'.
''Attention le paquet dans les dépots stable & testing ne semblent pas fonctionner correctement, j'ai du, dans mon cas, utiliser le paquet dans SID.''
  grub-install : information : impossible d'ouvrir « /usr/share/locale/ru/LC_MESSAGES/grub.mo » : Aucun fichier ou dossier de ce type.
Préparez Grub via la commande habituelle :
  grub-install /dev/sda


Cette commande fait 3 choses :
Ce qui est normal car ce sont différentes langues qui ne sont pas installées.
*Génère une image Grub
*Installe l'image dans la partition EFI sur efi/debian/grubx64.efi (C'est à dire /boot/efi/efi/debian ....)
*Essaye de configurer le Boot Manager UEFI pour le charger au démarrage de la machine


La dernière étape doit normalement finir par une erreur car le Boot Manager 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êter ici et votre système ne pourra plus démarrer !</span>
''<br />
''<br />
Copiez (Pas de lien symbolique !, système FAT oblige) l'image GRUB dans le dossier 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 dossier 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 (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 démarrer votre Debian 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 & 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
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 du 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]
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 :)