Ayant eu besoin de faire un cdrom bootable avec grub et menu.lst j'en ai gardé une trace pour ce tuto.
Il me fallait la totalité de /boot/, mais pour faire un cdrom grub seuls menu.lst et stage2_eltorito ainsi que éventuellement device.map sont nécessaire.
Mais comme d'un autre côté ça simplifie la réalisation, et la place sur le cdrom ne manquant pas, autant avoir une copie de sauvegarde complète de /boot à l'instant T au cas ou.
Donc la procédure se limite à :
- créer le répertoire iso et le sous répertoire boot :
:~$ mkdir -p iso/boot
- copier /boot/. dans iso/boot/ :
:~$ sudo cp -a /boot/. iso/boot/
* à ce stade il semble préférable d'adapter menu.lst pour le rendre utilisable sur toutes les configurations. Il faudra donc éditer le fichier menu.lst avec nano ou autre éditeur (voir poste #8) :
sudo nano -w iso/boot/grub/menu.lst
et en utilisant le "title" habituel de lancement du système, il faudra créer un nouveau "title", supprimer la première ligne ainsi que la ligne savedefault inutiles, et ajouter le chemin selon la désignation grub sur les lignes kernel et initrd pour avoir au final dans le fichier menu.lst du cdrom (exemple à adapter à votre configuration) :
title Ubuntu, depuis cdrom
kernel (hd0,0)/boot/vmlinuz-2.6.15-20-386 root=/dev/hda1 ro
initrd (hd0,0)/boot/initrd.img-2.6.15-20-386
boot
title Ubuntu, kernel 2.6.15-20-386 # menu d'origine
root (hd0,0)
kernel /boot/vmlinuz-2.6.15-20-386 root=/dev/hda1 ro quiet splash
initrd /boot/initrd.img-2.6.15-20-386
savedefault
boot
Puis puis ctrl + o et ctrl + x pour enrégistrer et sortir après avoir fait les modifications.
Ensuite on poursuit la réalisation de l'iso :
- copier stage2_eltorito depuis /lib/ vers iso/boot/grub
:~$ sudo cp /lib/grub/i386-pc/stage2_eltorito iso/boot/grub
Sur les versions récentes de la distribution, les différents stage_ sont maintenant dans /usr/lib/grub/i386-pc/
La commande sera donc :
sudo cp /usr/lib/grub/i386-pc/stage2_eltorito iso/boot/grub
- on vérifie qu'il est bien là :
:~$ ls -al iso/boot/grub/stage2_el*
-rw-r--r-- 1 root root 105428 2006-04-20 18:38 iso/boot/grub/stage2_eltorito
- générer avec mkisofs l'image bootable grubcd.iso basée sur stage2_eltorito avec boot.catalog depuis le répertoire iso (à noter que la commande est notée sur une seule ligne) :
:~$ sudo mkisofs -R -b boot/grub/stage2_eltorito -no-emul-boot -boot-load-size 4 -boot-info-table -o grubcd.iso iso
Les commentaires générés par mkisofs se terminent dans mon cas par ces lignes :
Total translation table size: 2048
Total rockridge attributes bytes: 5180
Total directory bytes: 8192
Path table size(bytes): 34
Max brk space used 21000
30159 extents written (58 MB)
Ne pas tenir compte de la taille de 58 MB, qui vient du fait que je devais y ajouter certains éléments inutiles pour un simple cdrom grub.
Si vous voulez vérifier votre image, vous pouvez la monter :
:~$ sudo losetup -f
:~$ sudo losetup /dev/loop0 grubcd.iso
:~$ sudo mount /dev/loop0 /mnt
Puis pour la démonter :
:~$ sudo umount /dev/loop0
:~$ sudo losetup -d /dev/loop0
Il ne reste plus qu'à graver l'image grubcd.iso avec le logiciel de votre choix.