logo Debian Debian Debian-France Debian-Facile Debian-fr.org Forum-Debian.fr Debian ? Communautés logo inclusivité

Debian-facile

Bienvenue sur Debian-Facile, site d'aide pour les nouveaux utilisateurs de Debian.

Vous n'êtes pas identifié(e).


L'icône rouge permet de télécharger chaque page du wiki visitée au format PDF et la grise au format ODT → ODT PDF Export

Ceci est une ancienne révision du document !


 N'hésitez pas à y faire part de vos remarques, succès, améliorations ou échecs !

(non testé - mytux 09/08/13) Le retour sur le forum est ici : [WIKI] Tuto, Refind boot iso from UEFI ou EFI

UEFI & EFI

Toutes les versions 64bits des PC qui exécutent Windows certifié par le programme de certification Windows utilisent l’UEFI à la place du BIOS.

Le BIOS

A l'aube de l'ère du premier PC en 1981, IBM livrait son Personal Computer 5150, avec un firmware connu sous le nom de BIOS (Basic Input/Output System ). Le BIOS était destiné à être une interface entre le matériel et le système d'exploitation DOS (Disk Operating System) à l'époque.

Le rôle du BIOS était d'éffectuer des tests de base et d'appliquer une séquence linéaire de recherche afin de trouver un périphérique amorçable sur un secteur de 512 octets pouvantt être lus et éxécuté. Ce premier secteur qu'on appella MBR devait ensuite passer la main à un autre périphérique ou au système d'exploitation.

Le bios est généralement écrit en assembleur et est seulement capable d'éxécuté des instructions sur 16 bits alors que les OS modernes eux, éxécutent des instructions sur 32 et 64bits. Les OS avancés n'ont puent continuer à utiliser le Bios sans pertes de performance.

EFI et UEFI

J'utilise le terme EFI pour se référer soit à EFI 1.X et l'UEFI.

L'EFI (Extensible Firmware Interface) et sa variante plus récente, UEFI (Unified EXtensible Firmware Interface), sont des conceptions de firmware qui sont destinés à remplacer le BIOS. EFI, a été dévelloppé par Intel pour sont nouveaux processeurs Itanium.

Les capcités de l'EFI sont bien plus grandes celles du BIOS, EN effet un EFI peut lire une tables de partitions et accèder au systèmes de fichiers, il ne prend pas en charge le multitâches mais peut éxécuter des applications en C/C++, pour les versions les plus récentes tel que l' UEFI, des applications graphiques avec prise en charge de la souris.

L'amorçage EFI est donc bien plus souple, contrairement au bios qui lui liste simplement les périphériques, il lit leurs contenu à la recherche d'éxécutable UEFI.

Cela permet à plusieurs chargeurs de démarrage de coexister sur un même disque dur, et d'être accessible tout en utilisant des mécanismes d'accès aux fichiers normaux.

Il est aussi possible de compiler un noyau Linux de sorte à le transformer en véritable applications UEFI, on pourra ensuite créer une entrée dans la NVRAM de notre carte mère à l'aide efibootmgr, du Shell EFI, ou utiliser un boot manager tel que rEFIND. Voir EFI stub loader sur ArchWiki

Une autre caractéristique de l'EFI est le Secure Boot. Cette fonctionnalité est destinée à améliorer la sécurité, en veillant à ce que seuls les chargeurs de démarrage signés avec une clé de chiffrement, pourront s'éxécuter.

Structure de disque EFI

Selon la version et le constructeur de votre fimware, ces règles peuvent variées cependant voici un aperçu.

Pout ous périphériqued de stockage EFI recherche un répertoire EFI, et liste un point amorce pour chaque fichier ressemblant à *x64.efi *ia32.efi.

Deux format de tables sont pris en charges, MBR et GPT, cependant je vous recommadent le partitionnement sur une table GPT, elle accèpte jusqu' à 128 partitions primaires.

Pour qu'un amorçage UEFI est lieu sur un dique sata, cd dernier doit comporter une partition spéciale ESP (EFI File System), ceci n'est valable pour un dique USB.

L'ESP devrait officiellement utiliser un système de fichiers FAT32, bien que de nombreuses distributions Linux utilise un système de fichiers FAT16, quelque fois FAT12.

GPT et FAT32 est un bon compromis.

Certains utilisateurs ont constaté que certains EFI ont des bugs qui causent des problèmes avec les ESP infèrieure à 512MiB (537MB), certain fichiers ne peuvent être lus par l'EFI, donc je vous recommande la création d’ une ESP d’ au moins 550MiB.

Chaque chargeur de démarrage EFI doit être stocké dans un sous-répertoire du répertoire EFI sur l'ESP. Ces répertoires sont généralement nommés d'après le système d'exploitation qui les a créés. Par exemple:

  • Ubuntu met ses fichiers EFI dans EFI/ubuntu
  • Red Hat met ses dans EFI/redhat

Une fois Linux installé, l'ESP est monté dans /boot/efi, de sorte que l’arborescence soit :

/boot/efi/EFI/ubuntu
/boot/efi/EFI/redhat

Si vous avez besoin d'installer un chargeur de démarrage indépendamment de de votre système d'exploitation, vous pouvez créer votre propre répertoire.

Exemple : EFI/refind pour Refind.

rEFIND

Refind est un un fork REFIT, c'est un boot manager pour les ordinateurs implémanté par l'Extensible Firmware Interface (EFI) et Unified EFI (UEFI).

Il faut faire la distinction entre un boot loader tel que GRUB et un boot manager.

rEFIND est indépendant du systèmes d'exploitation, c'est une application UEFI qui accèdent aux même interfaces que le gestionnaire d'amorçage intégré dans le micrologicielle de votre carte mère.

Vous pouvez l'installer sur de multiple support, ils scanera votre disque à la recherche d'un fichier amorce que ce soit Windows, Uni, Mac ou Linux, aussi bien en mode Bios Legacy qu'en EFI.

Il peut être utile d'avoir une clé USB de secours avec une partition réservé juste pour rEFIND en cas de soucis au boot, vous pourrez alors démarrer votre OS indépendemment et ainsi débuguer votre EFI.

Site officiel de rEFIND

Obtenir rEFIND

Aller à la page de téléchargement de rEFIND.

Télécharger les fichiers correspondant à votre périphériques.

Dans cet exemple je vais utiliser une image disque USB.

Après décompression je copie l' image disque à l'aide de <dd>, afin de récupérer les fichiers de l'image.

$ dd if=refind-flashdrive-0.7.3.img of=/dev/sdx bs=1M   # Copie sur la clef USB
$ mount /dev/sdb1 /media/usb0                           
$ cd /media/usb0
$ls
EFI  shellia32.efi  shellx64.efi                        # On récupère les fichiers.
$ cp -r * ~/
$ umount /media/usb0                                    # Et on démonte, pour préparer le système de fichier.

Système de fichiers EFI

Une fois les fichiers récupérer nous devons créer une table de partition GPT, un ESP et une partition FAT32 sur notre clé USB, pour acceuillir notre bootmanager, et notre image iso.

On va utiliser <gdisk>, ce soft est similaire à fdisk, mais a nous permettre de manipuler des tables de partition GPT. Sur la plupart des distributions il n'est pas installer par défault.

$ sudo apt-get install gdisk 
$ sudo gdisk /dev/sdb
$ o                           # Créer une nouvelle table de partion GPT
$ n                           # Créer une nouvelle partition
$ 1                           # Par défault partition numéro 1
$ 2048                        # Premier secteur par défault
$ +100M                       # 100 MB je pense que cela suffira, si vous rencontrez des problèmes, augmenter sa taille. 
$ ef00                        # ef00 (EFI File System)

Création d'une seconde partion pour notre image iso.

$ n
$ 206848                     # 206848 par défault à la suite de l'ESP
$ +1000M                     # 1 GB, à adapter selon la taille de votre iso.
$ 8300                       # 8300 (Linux File System)
$ w                          # On sauvegarde

Ensuite, il faut redémarer pour que le Kernel relise la table de partitions.

$ sudo shutdown -r now

Création d' un système de fichiers FAT32 sur les deux partions :

$ mkfs.vfat -F32 /dev/sdb1
$ mkfs.vfat -F32 /dev/sdb2

Installation

Pour l'installation on aura juste à copier les fichiers que étaient dans l'image flashdrive de rEFIND dans notre ESP; et utiliser Unetbootin pour copier notre iso sur notre seconde partition.

Montage des périphériques :

$ sudo mount /dev/sdx1 /media/usb0
$ sudo mount /dev/sdx2 /media/usb1

Copie de rEFIND sur la premiere partition :

$ sudo cp -r EFI shellx64.efi  /media/usb0                                                  # x64 ou ia32 selon votre  architecture (ia32 sur MAC)
$ cd /media/usb0
$ ls
bootia32.efi  bootx64.efi  drivers_ia32  drivers_x64  icons  refind.conf
$ rm -r bootia32.efi drivers_ia32                                                           #Supression des fichiers inutiles
$ mv refind.conf exemple.conf                                                               #Jeter un oeil à ce fichier, il y-a plein de commentaire.

Ensuite installons notre iso avec Unetbootin :

$ sudo apt-get install unetbootin
$ sudo unetbootin &

Bon là pas besoin de moi, vous installez une iso qui vous fais des misères (Crunchbang, LMDE) sur /dev/sdx2.

Dans cet exemple j'utilise Crunchbang.

Configuration

On approche de la fin, et on entame la partir la plus marrante.

Toutes la configuration ce fait dans le fichier refind.conf.

Jeter un oeil sur la page de Roderick W. Smith, Configuring the Boot manager.

Et aussi, le fichier example.conf qu'on a rennomer tout à l'heure.

$ nano refind.conf

Mon fichier refind.conf:

timeout 10

icons_dir EFI/boot/icons

textonly

use_graphics_for linux

showtools shell, about, reboot, exit

scan_driver_dirs EFI/boot/drivers_x64

scanfor internal,external,optical,manual

scan_delay 1

scan_all_linux_kernels

dont_scan_dirs EFI/linuxmint,boot

default_selection Crunch_Live

menuentry Crunch_Live {
  icon /EFI/boot/icons/os_debian.icns 
  volume 1:
  loader /live/vmlinuz
  initrd /live/initrd.img
  options "ro root=UUID=C847-7244 add_efi_memmap config boot=live"
  osype Linux
  graphics off 
}

menuentry Crunch_Install {
  icon /EFI/boot/icons/os_debian.icns 
  volume 1:
  loader /install/vmlinuz
  initrd /install/initrd.gz
  options "ro root=UUID=C847-7244 add_efi_memmap file=/cdrom/install/crunchbang.cfg"
  osype Linux
  graphics off
}
rEfind est assez capricieux, votre fichier refind.conf ne doit pas avoir un pet de travers, aussi quelquefois un simple reboot permet de lancer votre kernel tranquillement. oO C'est pour cela qu'il n' ya pas de commentaires dans le fichier, ci-dessus.

Pour vous aider vous aurez besoin du fichier syslinux.cfg générer par Unetbootin :

$ cd /media/usb1
$ cat syslinux.cfg
default menu.c32
prompt 0
menu title UNetbootin
timeout 100

label unetbootindefault
menu label Default
kernel /ubnkern
append initrd=/ubninit boot=live config quiet

label ubnentry0
menu label Live Session
kernel /live/vmlinuz
append initrd=/live/initrd.img boot=live config quiet

label ubnentry1
menu label Install
kernel /install/gtk/vmlinuz
append initrd=/install/gtk/initrd.gz video=vesa:ywrap,mtrr vga=788 quiet file=/cdrom/install/crunchbang.cfg

label ubnentry2
menu label Memory Test
kernel /live/memtest
append initrd=/ubninit 

$

Utilisation

C'est le moment de vérité, on peut redémarer. Dans l'interface de votre EFI, vous choisissez votre clé USB, la première partition si vous avez le choix. Là normalement rEFIND se lance, il doit tout d'abord scanner vos disques. En mode texte vous devriez avoir le choix entre votre os principal et ensuite les menuentry que l'on a ajouter dans notre refind.conf.

Essayons Crunch_Live …

Si vous avez de la chance, il se lance, sinon comme je vous l'ai dit plus haut, il est très capricieux, il ne doit pas y avoir un pet de travers, dans votre fichier de configuration.

Enfin pas de paniques, il y a le shell UEFI pour éditer ce fichier sans avoir besoin de redémarrer, je l'ai mis dans les tools, un peu plus haut.

UEFI Shell

Si vous voulez editer vos fichiers, démarrer linux en ligne de commande ou ajouter une nouvelle entrée dans votre NVRAM, c'est là que ça se passe.

Le Shell EFI est en Qwerty, entraîné vous un peu avant ! Il faut que vous repériez ou sont les caractères spéciaux !

Dans le menu de rEFIND, vous choisissez Shell EFI, là du texte jaune sur un fond noir c'est le Shell EFI.

La syntaxe ressemble beaucoup à DOS.

Les systèmes de fichiers sont représentés par des fs0, fs1, fs3 etc… , fs0: étant la première partition de votre clef USB, si vous lancez ce Shell depuis celle-ci. L'antislash est de rigueur.

Exemple :

shell> cd fs0:\EFI\boot
fs0:\EFI\boot\> edit refind.conf 

Quelques commandes utiles :

  • cd : ce déplacer.
  • rm : supprimer un fichier
  • mkdir : créer un répertoire
  • map : pour lister vos périphériques
  • map -t hd : pour filtrer la sortie, sur vos disques de USB et sata.
  • edit : editeur de texte, f2 pour enregistrer et f3 pour quitter
  • exit : quitter le shell
  • reset : reboot
doc/install/refind-boot-uefi.1376848041.txt.gz · Dernière modification: 18/08/2013 19:47 par mytux

Pied de page des forums

Propulsé par FluxBB