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

De Le Wiki du Forum-Debian.fr
Aller à la navigation Aller à la recherche
m (nouvelle section d'aide)
mAucun résumé des modifications
Ligne 111 : Ligne 111 :
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érificaiton ==
== Vérification ==
Une fois de retour dans une console il vous suffit de faire  
Une fois de retour dans une console il vous suffit de faire  
  $ ls /sys/firmware |grep efi
  $ ls /sys/firmware |grep efi
Ligne 127 : Ligne 127 :


== Au secours ça ne boot plus !!! ==
== Au secours ça ne boot plus !!! ==
Pas de panique, il existe un outil qui vous permettra de booter en UEFI sur votre OS favori, il s'agit de [http://www.rodsbooks.com/refind/getting.html rEFInd]. Je vous conseil de prendre l'image sur clé USB qui fonctionne a merveille. Une fois téléchargé et dizippé 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


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


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

Version du 15 septembre 2014 à 17:34

Cette page à pour but de vous aider à démarrer Debian sur un EFI.
Elle n'a pas pour but d'expliquer ce qu'est (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 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

Il n'y a pas encore d'image toute prête pour installer Debian avec le support UEFI et 2 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).
    • 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)
    • 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é

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.
  • 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 :
/dev/sda2	/boot/efi	vfat	dafauts	0	2

ou (provenant de RH)

/dev/sda2	/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 stable & testing 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 seulement, désinstaller 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 faire son installation effective 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 controler 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 ça :

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és

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.
  • Si c'est une migration BIOS vers UEFI vous pouvez aussi supprimer le répertoire /boot/grub/i386-pc

Au secours ça ne boot 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 joli écran pour choisir quoi lancer, le tout avec de belles 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 n'a pas marché dans mon cas.

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