Table des matières
Le problème
Il arrive de plus en plus fréquemment qu’on aie un PC qui soit équipé d’un lecteur de CD ou de DVD, qui permet de démarrer (ou “booter”) sur celui-ci, mais qui ne soit pas équipé de lecteur de disquettes.
Or il arrive encore que certaines distributions proposent de créer des disquettes de démarrage de secours, mais rien pour des CD de secours. On peut souvent s'en sortir avec un “live-CD” ou avec le 1er CD d'install de la distribution, mais moyennant des manips pas très simples, et justement au moment où on n'a plus d'accès internet pour trouver de l'aide.
Il est donc prudent de disposer d’un CD de secours sur mesure pour redémarrer en cas de besoin. Ce CD est aussi précieux pour les “bricoleurs” qui s'essaient à toutes sortes de distributions dans des partitions annexes, et qui par prudence ne tentent pas de modifier le MBR mais commencent par installer une amorce sur la partition du système testé. Si le CD est préconfiguré pour amorcer toutes les partitions imaginables de son PC, rien de plus simple de s'en servir à ce moment-là pour lancer les amorces des nouveaux systèmes.
Cet article s'appuie sur le “boot-loader” GRUB, avec quelques tous petits détails orientés Mandriva, mais le principe de la manip est universel, on pourra faire de même à partir d'autres distributions.
GRUB est un excellent logiciel de démarrage de tous systèmes, avec d'innombrables possibilités qu'on n'abordera pas ici. On peut conseiller de lire l'article suivant : www.linux-france.org ou en anglais et plus précis : www.gnu.org.
Article rédigé par Jeanmm
version initiale : 11 septembre 2006.
Prérequis
Il est conseillé d'avoir installé grub sur son PC, voire si possible d'avoir effectué une première mise en oeuvre effective de grub comme chargeur du système, de manière à récupérer les paramètres du fichier menu.lst (ou grub.conf; il se peut d'ailleurs que l'un de ces fichiers soit un lien vers l'autre).
Dans l'absolu il n'est cependant même pas nécessaire d'avoir installé grub, le minimum du minimum consiste à se procurer un fichier nommé stage2_eltorito, c'est le code de grub spécialisé pour accéder au système de fichiers d'un CD.
Création d'une image ISO
On commence par se créer une image ISO qu'on pourra ensuite graver sur un CD. On va se placer dans un dossier nommé /boot/grub, c'est classiquement là qu'on trouve tout ce qui touche à grub. On ouvre donc une console root et on tape :
cd /boot/grub/ mkdir -p iso/boot/grub cp /lib/grub/i386-mandriva/stage2_eltorito iso/boot/grub
Les lignes ci-dessus sont le minimum nécessaire; à partir de là on pourrait déjà créer un ISO valable à partir du nouveau dossier “iso”. On va quand-même ajoûter un fichier de config “menu.lst” afin de :
- disposer de choix préconfigurés dans une liste déroulante,
- configurer un clavier azerty aulieu du pénible qwerty disponible par défaut.
A noter que la commande de copie du fichier stage2_eltorito est plutôt adaptée à une mandriva 2006, mais on n'aura pas de mal à trouver le même fichier pour les autres distributions (on pourra par exemple avoir “i386-pc” aulieu de “i386-mandriva”).
On va donc installer de plus un menu, voire même une image de fond pour agrémenter le lancement :
cp menu.lst iso/boot/grub cp mon-fichier-image.xpm.gz iso/boot
Editer iso/boot/grub/menu.lst avant ou après copie pour l'adapter. On définira en particulier :
- (cd) comme racine du système de fichiers,
- l'instruction de chargement de l'image de fond,
- les instructions de conversion qwerty ⇒ azerty,
- et surtout les entrées de menus.
Ces points sont détaillés ci-dessous. Quand tout sera prêt on pourra créer un fichier boot-grub.iso par la commande :
mkisofs -R -b boot/grub/stage2_eltorito -no-emul-boot -boot-load-size 4 -boot-info-table -V "boot-grub" -o boot-grub.iso iso
Gravure d'un CD
On pourra bien sûr passer par un outil graphique comme k3b pour “graver une image CD” en indiquant le fichier boot-grub.iso obtenu ci-dessus, mais les adeptes de la ligne de commande iront plus vite avec les copier/coller suivants :
Si on veut d'abord effacer un CD-RW :
umount /mnt/cdrom cdrecord blank=fast gracetime=2 dev=/dev/hdc
Puis pour la gravure du CD :
cdrecord -v -speed=2 dev=/dev/hdc -data boot-grub.iso
Bien sûr si le lecteur n'est pas dans /dev/hdc on modifiera les commandes ci-dessus. On pourra commencer les essais avec un CD/RW, pas la peine de gaspiller des CD pour rien. D'ailleurs pendant cette phase de mise au point il sera judicieux de se créer un petit script unique effectuant les opérations ci-dessus :
#!/bin/sh ############################################################## # Creation d'image boot-grub.iso et Gravure de CD-RW de boot ############################################################## mkisofs -R -b boot/grub/stage2_eltorito -no-emul-boot -boot-load-size 4 -boot-info-table -V "boot-grub" -o boot-grub.iso iso umount /mnt/cdrom cdrecord blank=fast gracetime=2 dev=/dev/hdc cdrecord -v -speed=2 dev=/dev/hdc -data boot-grub.iso
Il ne reste plus qu'à “booter” le CD obtenu et vérifier qu'on obtient le résultat attendu.
Compléments
Fichier menu.lst minimal
Le fichier minimal conseillé est une copie de celui fourni par la distribution lorsqu'elle a “installé grub sur le MBR”. Prenons l'exemple suivant :
timeout 10 viewport 3 2 77 22 splashimage (hd0,0)/boot/mdv-grub_splash.xpm.gz default 0 title linux-mandriva kernel (hd0,0)/boot/vmlinuz root=/dev/hda1 resume=/dev/hda5 splash=silent vga=788 initrd (hd0,0)/boot/initrd.img title failsafe kernel (hd0,0)/boot/vmlinuz root=/dev/hda1 failsafe resume=/dev/hda5 initrd (hd0,0)/boot/initrd.img
Ici on a un Linux (Mandriva) sur la partition hda1 (ou hd0,0) en jargon grub), avec swap en hda5. L'image de fond s'appelle mdv-grub_splash.xpm.gz; on va commencer par garder cette image, donc la copier sur le CD pour qu'elle soit toujours accessible. La ligne de chargement de l'image sera donc transformée en mettant (cd) aulieu de (hd0,0) :
splashimage (cd)/boot/mdv-grub_splash.xpm.gz
Conversion qwerty => azerty
Pour convertir les touches de clavier qwerty en touches franco/françaises azerty, ce qui est très commode si on passe en mode commande lors du boot, on va ajoûter les lignes suivantes, par exemple après la ligne “default 0” :
# # Emulation directe d'un clavier azerty_FR # (important pour les modes grub interactifs) # setkey less backquote setkey greater tilde setkey ampersand 1 setkey 1 exclam setkey tilde 2 setkey 2 at setkey doublequote 3 setkey 3 numbersign setkey quote 4 setkey 4 dollar setkey parenleft 5 setkey 5 percent setkey minus 6 setkey 6 caret setkey backquote 7 setkey 7 ampersand setkey underscore 8 setkey 8 asterisk setkey backslash 9 setkey 9 parenleft setkey at 0 setkey 0 parenright setkey parenright minus setkey numbersign underscore setkey a q setkey A Q setkey z w setkey Z W setkey caret bracketleft setkey dollar bracketright setkey q a setkey Q A setkey m semicolon setkey M colon setkey bracketleft quote setkey percent doublequote setkey asterisk backslash setkey bracketright bar setkey w z setkey W Z setkey comma m setkey question M setkey semicolon comma setkey period less setkey colon period setkey slash greater setkey exclam slash setkey bar question
Menus supplémentaires
A la suite des entrées de menus par défaut, on va ajouter autant d'entrées que souhaité, tant pour le 1er disque que pour d'éventuels disques supplémentaires, par exemple ici on prévoit 10 partitions en tout sur le 1er disque, et 10 sur le second :
title Disque 1, Partition 6 rootnoverify (hd0,5) chainloader +1 title Disque 1, Partition 7 rootnoverify (hd0,6) chainloader +1 title Disque 1, Partition 8 rootnoverify (hd0,7) chainloader +1 title Disque 1, Partition 9 rootnoverify (hd0,8) chainloader +1 title Disque 1, Partition 10 rootnoverify (hd0,9) chainloader +1 title Disque 2, Partition 1 rootnoverify (hd0,0) chainloader +1 title Disque 2, Partition 2 rootnoverify (hd0,1) chainloader +1 title Disque 2, Partition 3 rootnoverify (hd0,2) chainloader +1 title Disque 2, Partition 4 rootnoverify (hd0,3) chainloader +1 title Disque 2, Partition 5 rootnoverify (hd0,4) chainloader +1 title Disque 2, Partition 6 rootnoverify (hd0,5) chainloader +1 title Disque 2, Partition 7 rootnoverify (hd0,6) chainloader +1 title Disque 2, Partition 8 rootnoverify (hd0,7) chainloader +1 title Disque 2, Partition 9 rootnoverify (hd0,8) chainloader +1 title Disque 2, Partition 10 rootnoverify (hd0,9) chainloader +1
Il n'y a aucune limitation; on pourra aussi ajouter les lignes natives d'autres Linux, par exemple si on installe une Fedora, on va commencer par configurer son amorce en début de sa partition, puis les lignes générées dans son fichier menu.lst seront recopiées dans le menu.lst “universel” qu'on gravera sur le CD de boot.
Création d'images de fond
On peut se créer ses propres images de fond, mais pas n'importe comment, ces images ont des caractéristiques très particulières :
- taille 640 * 480
- 14 couleurs
- format xpm compressé
La contrainte la plus forte est le nombre de couleurs, donc éviter de partir d'images avec beaucoup trop de couleurs différentes, la réduction à 14 risque de donner des effets assez mauvais. Ensuite, éviter les images trop détaillées, la résolution de 640 * 480 risque d'estomper beaucoup de détails.
Une façon très simple de convertir les images est de passer par ce script qui utilise ImageMagick/convert :
#!/bin/sh ############################################################## # Creation d'image splash pour grub a partir de l'image $1 ############################################################## echo "Conversion de l'image $1 en image compressee ${1%.*}.xpm.gz" convert -resize 640x480 -colors 14 $1 ${1%.*}.xpm && gzip ${1%.*}.xpm
Avec Gimp on peut utiliser les menus “Image / Mode / Couleurs indexées” puis “choisir Nombre maximal de couleurs = 14” et enfin “Aucun tramage de couleurs”. On peut dire à Gimp de compresser automatiquement quand on enregistre le fichier : il suffit de donner directement le suffixe complet xpm.gz ! L'astuce de compression automatique de Gimp est vraiment sympa; à retenir.
A noter que quelques rares images risquent de ne pas marcher; par exemple un cas de petit pingouin sur la banquise toute blanche : peut-être pas assez de couleur ?
Bref, avec un peu de chance ça devra marcher. De quoi créer le super-CD de boot de ses rêves. Manque plus que le son.