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 8-)
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. ;-)

 
creer_un_cd_de_boot.txt · Dernière modification: 2017/02/21 15:10 (édition externe)
 
Sauf mention contraire, le contenu de ce wiki est placé sous la licence suivante:CC Attribution-Noncommercial-Share Alike 3.0 Unported
Recent changes RSS feed Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki