D’abord, une petite mise au point sur la notion d’image ISO employée à tort et à travers.
“ISO 9660” est un format de système de fichiers en lecture seule conçu pour les disques optiques (CD, DVD…). Une “image ISO (9660)” est un fichier qui contient un système de fichiers à ce format. Une extension de ce format appelée “El Torito” permet d’y inclure un ou plusieurs “programmes” d’amorçage pour diverses architectures (PC-BIOS, PC-UEFI, Mac…). Cette extension ne se trouve pas dans la partie visible du système de fichiers.
Pour amorçer un disque optique au format ISO 9660, il faut donc
- qu’il contienne un programme d’amorçage au format El Torito correspondant à l’architecture de la machine (un CD bootable sur PC ne l’est pas forcément sur Mac et vice versa)
- que le firmware de la machine supporte le format El Torito.
Divers programmes tels que file
ou isoinfo
(du paquet genisoimage) peuvent détecter la présence d’un “programme” d’amorçage El Torito dans un système de fichier ISO (contenu dans une image ou un support optique). D’autres programmes comme geteltorito
permettent d’extraire le programme d’amorçage.
Mais il n’y a pas que des images ISO et des supports optiques.
Par exemple un DVD vidéo n’est pas au format ISO mais au format UDF. Si on en fait une image, ce ne sera donc pas une image ISO mais plutôt une “image UDF”. Un disque dur, un SSD ou une clé USB qui est considérée globalement comme un disque dur ont un format totalement différent du format ISO : il y a généralement une table de partition, des partitions et un programme d’amorçage différents du format ISO/El Torito. Si on en fait une image, on obtient une image disque.
Si on copie une image ISO “pure” sur une clé USB classique, elle ne sera pas bootable sur PC car le firmware d’un PC ne s’attend pas à trouver un système de fichiers ISO et un programme d’amorce El Torito sur une clé qui est vue comme un disque dur. Il a existé des clés USB spéciales au format U3 émulant un disque optique et pouvant donc booter avec une image ISO, mais c’est très différent d’une clé USB classique.
Pour booter avec une clé USB, il faut que celle-ci contienne un programme d’amorce au format que le firmware s’attend à trouver sur un disque. Si le firmware est un BIOS : un MBR ; si le firmware est un UEFI : une partition système EFI.
Au début, il y a eu et il existe encore des programmes comme Unetbootin qui créent une clé bootable à partir d’une image ISO en ajoutant un programme d’amorce pour disque. Ça ne marche pas avec toutes les images ISO.
Une autre approche consiste à créer une image “hybride” qui a à la fois les caractéristiques d’une image ISO et d’une image disque. C’est pourquoi je parlais d’image ISO “pure” plus haut. Cela est possible car les deux formats ne stockent pas leurs méta-données au même endroit. Une telle image contient à la fois un système de fichiers ISO avec l’extension El Torito et un MBR avec une table de partition et un programme d’amorce. Sur un disque ou une clé USB on ne peut plus vraiment parler d’image ISO puisque c’est la table de partition et le programme d’amorçage pour disque, qui ne font pas partie du format ISO, qui sont alors utilisés pour booter. On peut d’ailleurs examiner son contenu avec les outils classiques pour disque dur comme fdisk
pour afficher la table de partition.
Les images live et d’installation de Debian sont créées dans ce format hybride depuis plusieurs versions, c’est pourquoi elles sont bootables directement sur une clé USB ou un disque dur.