Différences

Cette page vous donne les différences entre la révision choisie et la version actuelle de la page.

creer_un_cd_de_boot [2008/05/07 13:13]
creer_un_cd_de_boot [2017/02/21 15:10] (version actuelle)
Ligne 1: Ligne 1:
 +====== 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 : [[http://www.linux-france.org/article/sys/chargeurs/ix86/grub/grub-manual-fr.html|www.linux-france.org]] ou en anglais et plus précis : [[http://www.gnu.org/software/grub/manual/grub.html|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 :
 +
 +<code bash>
 +cd /boot/grub/
 +mkdir -p iso/boot/grub
 +cp /lib/grub/i386-mandriva/stage2_eltorito iso/boot/grub
 +</code>
 +
 +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 :
 +
 +<code bash>
 +cp menu.lst iso/boot/grub
 +cp mon-fichier-image.xpm.gz iso/boot
 +</code>
 +
 +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 :
 +
 +<code bash>
 +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
 +</code>
 +
 +====== 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 :
 +
 +<code bash>
 +umount /mnt/cdrom
 +cdrecord blank=fast gracetime=2 dev=/dev/hdc
 +</code>
 +
 +Puis pour la gravure du CD :
 +
 +<code bash>
 +cdrecord -v -speed=2 dev=/dev/hdc -data boot-grub.iso
 +</code>
 +
 +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 :
 +
 +<code bash>
 +#!/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
 +</code>
 +
 +
 +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 :
 +
 +<code bash>
 +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
 +</code>
 +
 +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) :
 +
 +<code bash>
 +splashimage (cd)/boot/mdv-grub_splash.xpm.gz
 +</code>
 +
 +===== 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" :
 +
 +<code bash>
 +#
 +# 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
 +</code>
 +
 +===== 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 :
 +
 +<code bash>
 +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
 +</code>
 +
 +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** :
 +
 +<code bash>
 +#!/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
 +</code>
 +
 +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. ;-)
 
 
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