Cette section a été écrite avec la contribution de Rizwan Mohammed Darwe (rizwan CHEZ clovertechnologies POINT com).
Cette section suppose que vous êtes familier avec la procédure et le fonctionnement de l'écriture de CD sous Linux. Considérez ceci comme une référence rapide pour inclure la possibilité de démarrer à partir du CD que vous allez graver. La CD-Writing-HOWTO devrait vous donner plus de détails.
À partir des plates-formes x86, plusieurs BIOS ont commencé à accepter les CD amorçables. Les rustines pour mkisofs sont basés sur le standard appelé « El Torito ». En deux mots, El Torito est une spécification qui indique le format qu'un CD doit respecter, afin de pouvoir démarrer directement sur celui-ci.
La spécification « El Torito » dit que tout lecteur de CD-ROM devrait fonctionner (SCSI ou EIDE) si le BIOS est compatible El Torito. Sauf que cela n'a été testé qu'avec des lecteurs EIDE, car aucun contrôleur SCSI testé ne semble supporter El Torito. La carte mère doit impérativement être compatible El Torito. Comment savoir si votre carte mère est compatible El Torito ? Eh bien les cartes mères compatibles offrent le choix de démarrer à partir du disque dur, de la disquette, du réseau ou du CD-ROM.
Le standard El Torito fonctionne en faisant apparaître le lecteur de CD, à travers les appels BIOS, comme un lecteur de disquettes normal. De cette façon vous mettez simplement n'importe quelle image de la taille d'une disquette (exactement 1440 ko pour une disquette de 1,44 Mo) quelque part sur le système de fichiers ISO. Dans l'en-tête du système de fichiers ISO vous placez un pointeur vers cette image. Le BIOS va alors récupérer cette image à partir du CD et agit comme si il démarrait à partir du lecteur de disquettes. Cela permet à une disquette de démarrage LILO, par exemple, d'être utilisée simplement comme si c'était une vraie disquette.
En général, les 1,44 (ou 2,88 si supportés) premiers Mo du CD-ROM contiennent une image de la disquette créée par vous. Cette image est traitée comme une disquette par le BIOS et démarrée par celui-ci. (Avec comme conséquence, lors du démarrage à partir de la disquette virtuelle, que votre lecteur original A: (/dev/fd0) ne sera plus accessible, mais vous pouvez toujours essayer /dev/fd1).
D'abord, il faut créer un fichier, disons boot.img, qui est l'image exacte de la disquette que vous voulez démarrer via le CD-ROM. Ce doit être une disquette de démarrage 1,44 Mo. La commande suivante permet de la créer :
dd if=/dev/fd0 of=boot.img bs=10k count=144 |
en supposant que la disquette se trouve dans le lecteur A:.
Placez cette image quelque part dans la hiérarchie qui sera la source du système de fichiers iso9660. C'est une bonne idée de mettre tous les fichiers relatifs au démarrage dans leur propre répertoire (boot/ sous la racine du système de fichiers iso9660, par exemple).
Avertissement : Votre disquette de démarrage doit charger un initial ramdisk via LILO, et pas le disque mémoire du noyau ! Ceci est du au fait que lorsque le noyau démarre, l'émulation BIOS du CD comme disquette est limitée et va échouer. LILO va charger le disque mémoire en utilisant les appels disques BIOS, et l'émulation fonctionne normalement.
La spécification El Torito requiert également la création d'un catalogue de démarrage. Il s'agit d'un fichier de 2048 octets qui n'a pas grand intérêt à part qu'il est nécessaire. La correction réalisée par l'auteur de mkisofs permet la création automatique de ce catalogue de démarrage, mais vous devez spécifier où ce catalogue doit se trouver dans la hiérarchie du système de fichiers iso9660. En général c'est une bonne idée de le mettre au même endroit que l'image de démarrage, et de l'appeler boot.catalog. La commande pour créer le système de fichiers iso9660 dans le fichier bootcd.iso est alors :
mkisofs -r -b boot/boot.img -c boot/boot.catalog -o bootcd.iso . |
L'option -b précise l'image de démarrage à utiliser (notez que le chemin est relatif à la racine du disque iso9660), et l'option -c est pour le fichier catalogue de démarrage. L'option -r va mettre les propriétaires et droits des fichiers appropriés (voir la page de manuel de mkisofs). Le « . » à la fin dit de prendre comme source le répertoire courant.
Maintenant gravez le CD avec la commande habituelle et le voilà prêt à démarrer.
La première chose à faire est de récupérer une image amorçable utilisée par le CD source. Mais vous ne pouvez pas vous contenter de monter le CD sous Linux et d'utiliser dd pour copier les 1440 premiers kilo-octets vers une disquette ou un fichier boot.img. Au lieu de cela, vous devez simplement amorcer votre système à partir du CD-ROM source.
Lorsque vous démarrez le CD Win98 vous vous retrouvez à l'invite A:, qui est en fait le disque mémoire. Et D: ou Z: où se trouvent tous les fichiers d'installation. En utilisant la commande DOS diskcopy, copiez l'image A: dans le vrai lecteur de disquettes, qui est maintenant B:. La commande suivante permet de le faire :
diskcopy A: B: |
Cela fonctionne exactement comme dd. Vous pouvez essayer de démarrer à partir de ce disque fraîchement créé pour tester si le processus de démarrage est similaire à celui du CD source. Ensuite faites le dd habituel de cette disquette vers un fichier comme boot.img et le reste sera comme d'habitude.