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 →
Ceci est une ancienne révision du document !
(non testé - mytux 09/08/13) Le retour sur le forum est ici : [WIKI] Tuto, Refind boot iso from UEFI ou EFI
N'hésitez pas à y faire part de vos remarques, succès, améliorations ou échecs !
Toutes les versions 64bits des PC qui exécutent Windows certifié par le programme de certification Windows utilisent l’UEFI à la place du 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'effectuer 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 pouvant être lu et exécuté.
Ce premier secteur qu'on appella MBR devait ensuite passer la main à un autre périphérique ou au système d'exploitation1).
Le BIOS est généralement écrit en assembleur et est seulement capable d'exécuter des instructions sur 16 bits alors que les OS modernes eux, exécutent des instructions sur 32 et 64bits.
Les OS avancés n'ont pu continuer à utiliser le BIOS sans perte de performance.
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 firmwares destinés à remplacer le BIOS.
EFI, a été développé par Intel pour son nouveau processeur Itanium.
Les capacités de l'EFI sont bien plus grandes que celles du BIOS,
En effet un EFI peut lire une table de partitions et accéder aux systèmes de fichier, il ne prend pas en charge le multitâche mais peut exé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 liste simplement les périphériques, l'EFI lit leur contenu à la recherche d'exécutable UEFI.
Cela permet à plusieurs chargeurs de démarrage de coexister sur un même disque dur et d'être accessibles tout en utilisant les 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 d'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 puissent s'exécuter.
Selon la version et le constructeur de votre fimware, ces règles peuvent varier.
En voici un aperçu :
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 votre système d'exploitation, vous pouvez créer votre propre répertoire.
Exemple :
EFI/refind pour Refind.
Refind est un un fork REFIT, c'est un boot manager pour les ordinateurs implémentés par l'Extensible Firmware Interface (EFI) et Unified EFI (UEFI).
Il faut bien 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ède aux même interfaces que le gestionnaire d'amorçage intégré dans le micrologiciel de votre carte mère.
Vous pouvez l'installer sur de multiples supports, il scannera votre disque à la recherche d'un fichier amorce que ce soit Windows, Unix, Mac ou Linux, aussi bien les systèmes BIOS Legacy que EFI.
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.
Une fois les fichiers récupérés, nous devons créer sur notre clé USB :
pour accueillir notre bootmanager, et notre image iso.
On va utiliser gdisk, ce soft est similaire à fdisk mais va nous permettre de manipuler des tables de partition GPT.
Sur la plupart des distributions gdisk n'est pas installé par défaut.
$ 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éfaut partition numéro 1 $ 2048 # Premier secteur par défaut $ +100M # 100 MB je pense que cela suffira, si vous rencontrez des problèmes, augmentez sa taille. $ ef00 # ef00 (EFI File System)
Création d'une seconde partition pour notre image iso :
$ n $ 206848 # 206848 par défaut à 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émarrer pour que le Kernel relise la table de partition.
$ sudo shutdown -r now
Création d'un système de fichiers FAT32 sur les deux partitions :
$ mkfs.vfat -F32 /dev/sdb1 $ mkfs.vfat -F32 /dev/sdb2
Pour l'installation on aura juste à copier les fichiers qui étaient dans l'image flashdrive de rEFIND dans notre ESP et d'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 première 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 # Suppression des fichiers inutiles $ mv refind.conf exemple.conf # Jetez un oeil sur ce fichier, il contient plein de commentaires.
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 fait des misères (Crunchbang, LMDE) sur /dev/sdx2.
Dans cet exemple j'utilise Crunchbang.
On approche de la fin, et on entame la partir la plus marrante.
Toutes la configuration se fait dans le fichier refind.conf
.
Jetez un oeil sur la page de Roderick W. Smith, Configuring the Boot manager.
Et aussi, le fichier example.conf
qu'on a renommé 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 }
Pour vous aider vous aurez besoin du fichier syslinux.cfg
généré 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 $
C'est le moment de vérité, on peut redémarrer.
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 ajoutés 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 panique, 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.
Si vous voulez éditer vos fichiers, démarrer linux en ligne de commande ou ajoutez une nouvelle entrée dans votre NVRAM, c'est là que ça se passe.
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 :