Ce tuto n'est qu'un copié collé, il faut que je teste tout ca, donc aucune garantie sur ce coup ;)
A propos des LiveCD en général
Un LiveCD ou cédérom vivant, permet d'avoir une distribution GNU/Linux complète avec un environnement graphique, des navigateurs web, une suite bureautique complète, des outils de programmation, des lecteurs de musiques et videos, etc. Graver sur un cédérom, il est léger et amovible, pratique pour le prendre avec soit. Un LiveCD ne modifie rien sur la machine sur laquelle il est exécuté, car il ne touche pas au disque dur et à la configuration de la machine hôte.
Les premiers LiveCD on été utilisé par Slackware dès 1995, actuellement la distribution Knoppix est une des plus connue, réalisée à partir de Debian. Plusieures distibution LiveCD basées sur Debian existent, tel que Morphix, Mepis, ou encore DSL qui ne fait elle, que 50 MB et peut d'installer sur une clé usb. Il est aussi possible de construire un LiveDVD, ce que bootcd propose.
bootcd
bootcd est un programme du projet Debian qui permet de dupliquer son système
Debian existant sans risques, car il ne touche en rien la configuration
actuel. C'est un programme simple d'utilisation, qui se configure entièrement
depuis un seul fichier texte qui se nomme bootcdwrite.conf
et
qui se trouvant dans /etc/bootcd
. Un exemple est fourni dans la
suite du howto.
L'utilitaire bootcd va créer une image ISO du système, qui sera ensuite bootable, c'est à dire que l'on pourrat démarrer dessus lors de l'allumage de la machine, c'est un LiveCD! Ce logiciel est aussi idéal pour créer des sauvegarde de son PC, ou encore pour créer des clones.
Installation de bootcd
Les commandes sont toujours données avec aptitude, mais vous pouvez utiliser apt-get. Si vous avez aimé apt-get, vous allez adorer aptitude. Le paquet bootcd dépend de: bootcd-i386, cdrecord, dosfstools, fdutils, realpath, syslinux et va donc aussi les installer:
# aptitude install bootcd
Vous retrouverez bootcd dans la distribution stable, testing, unstable, et pour chaque version les source sont disponnibles sur: packages.debian.org
Éditer /etc/bootcd/bootcdwrite.conf
Toute la configuration de programme ce passe dans le fichier
bootcdwrite.conf
, contenu dans /etc/bootcd
, la chose
la plus importante à penser, est de faire en sorte que l'image ISO générée par
bootcd ne soit pas plus volumineuse que 700 MB pour un CD et 4 GB pour un DVD.
Pour gagner de la place, il faut exclure les dossiers personnels volumineux
contenus dans /home.
Mais vous ne pouvez pas exclure directement toute le répertoire ou patition,
/home, il faut spécifier tous les noms de dossiers que l'on ne veut pas. Pour
ce faire il faut modifier la ligne 37 (du fichier original)
NOT_TO_CDROM=""
. Pour un premier jet, c'est la seule ligne à
modifier. Il y a aussi peut-être la ligne 50 (du fichier original) qui définit
l'endroit, ou vous retrouverez l'image ISO générée. Ensuite vous pourrez
personnaliser encore votre config. La ligne 19 (du fichier original), permet
de spécifier l'utilisation d'un CD ou d'un DVD. On peut par exemple
personnaliser le message d'accueil (display) en modifiant le fichier
/usr/share/bootcd/default.txt.
Il faut être superutilisateur (root) pour éditer bootcdwrite.conf. On peut utiliser n'importe quel éditeur de texte, tel que Nano, Gedit, Nedit, Geany, LeafPad, etc. Editer en mode graphique:
# su # gedit /etc/bootcd/bootcdwrite.conf
Editer à la console avec Nano et utiliser Ctrl + x, pour enregister:
# su # nano /etc/bootcd/bootcdwrite.conf
Fichier bootcdwrite.conf commenté # En Français
Dans un script il y souvent des commentaires, dans notre fichier
bootcdwrite.conf, comme dans les scripts shells, les ligne commençant par
#
sont des commentaires. Nous en avons traduit quelques uns en
Français. La seule ligne de configuration que nous avons modifiée, est celle
des répertoires à exclure du cdrom (NOT_TO_CDROM=""
). Et comme
écrit en haut du fichier, tapez # man bootcdwrite.conf
dans une
console pour plus d'informations:
# # bootcdwrite.conf: Modified by Libordux.Org to have French comments. # # Tapez: man bootcdwrite.conf(5) pour plus d'informations. # # Ce chemin defini le prefix pour KERNEL, INITRD, DISABLE_CRON, NOT_TO_CD # et NOT_TO_RAM, si il y a des chemins relatif (qui ne commence par par "/") SRCDISK=/ # Nom du noyau a utiliser. KERNEL=vmlinuz # Taille de chaque ramdisk ram1 and ram2 (ram1: /dev /etc /home /root /tmp, # (ram2: /var) RAMDISK_SIZE=16384 # Type de media CD ou DVD. TYP=CD # Specifier un ou plusieurs peripherique CD a booter, en premier "auto" tente # de trouver le CD bootable sur tous les peripherique SCSI et IDE. CDDEV="auto /dev/hda /dev/hdb /dev/hdc /dev/hdd /dev/scd0 /dev/scd1" # Texte a afficer au boot (voir syslinux doku) # Cette option n'est pas supportee par hppa. DISPLAY="/usr/share/bootcd/default.txt" # Faire des verification ou non. DO_CHECK=yes # Options supplementaire a passer au noyau Linux. APPEND="" # Fichiers ou dossiers a exclure du cd. NOT_TO_CD="/home/libordux" # Exclure des fichiers ou des repertoires a charger en ram. # Because most people's home and root dir are to large to include # in RAM, subdirectories can be excluded: NOT_TO_RAM="$(find $SRCDISK/home $SRCDISK/root -maxdepth 1 -mindepth 1 -type d)" # Configuration de SSH key pour chaque CD. # SSHHOSTKEY=yes # Fichier de log. ERRLOG=/var/log/bootcdwrite.log # Dossier de destination de l'image ISO cree. VAR=/var/spool/bootcd # FLOPPY_RUNTIME_DEV=<floppy device>|"" # Quand vous booter depuis le CD les changement sont lu depuis une disquette. FLOPPY_RUNTIME_DEV=/dev/fd0 # BOOTFLOPPY=yes|no # Si vous desirez booter depuis une disquette, specifiez BOOTFLOPPY=yes. # This reduces space on floppy used by bootcdflopcp. For this to work # FLOPPY_CREATE_DEV has to be specified. # For hppa this option is not supported and must be set to no. # Default: # BOOTFLOPPY=no BOOTFLOPPY=no # If you want to boot several machines from the same cdrom, you must have # the individual configuartion (exp: /etc/network/interfaces) on floppy. # If one can not be mounted it is a good idea to stop booting and to wait # for manual interaction instead of comming up with a wrong configuration. BOOT_ONLY_WITH_FLOPPY=no # Nettoyer le reperoire /var. CLEAN_VAR=yes # Si FASTBOOT=yes des images ramdisk supplémentaires seront crees par # bootcdwrite et copiee sur le CD. Cela permet un démarrage plus rapide, # mais prend plus de place sur le CD. FASTBOOT=yes # Utiliser isolinux (yes,no,auto), auto cherche isolinux et l'utilise. ISOLINUX=auto # Utiliser l'otion -s (save, slow, stupid) de syslinux. SYSLINUX_SAVE=yes # Choisissez votre architecture. # ARCH=auto|hppa|i386|ia64 ARCH=auto # Utiliser devfs ou non. DEVFS=no # Chemin vers l'image initrd. INITRD="initrd.img" # Ajouter des entrées a fstab pour les systemes de fichiers a monter au boot. # TO_FSTAB="/dev/hdc1 /home ext3 defaults 1 1 # /dev/usb0 /mnt/usb ext3 defaults 1 1 " TO_FSTAB="" # Compression transparent du systeme de fichier ISO 9660/Rock Ridge. # ("auto" checks for space to compress the image on the local system) # COMPRESS=<yes|no|auto> COMPRESS="auto" # Fichiers ou repertoires qui ne devraient jamais être compresses sur le CD. # You have to define the Path as it is on the CD, (with /var.ro # instead of /var) NOTCOMPRESSED="" # Les fichiers liste dans DISABLE_CRON seront sur le cdrom avec un suffixe # .no_run_on_bootcd pour que run-parts ne les execute pas. Le fichier original # sera un lien vers /bin/true. # DISABLE_CRON="etc/cron.daily/find etc/cron.daily/standard etc/cron.daily/security" # Avec cette variable vous pouvez ajouter ou supprimer des options donnee # a mkisofs par bootcdwrite. # Please create debian-bugreports if you have to use special # options, not mentioned here. Then I can list this options here. # MKISOFS_CHNG="" # function extra_changes() # It is possible to define a function called extra_changes to have some # files modified on the ISO image. Here is an example: # # function extra_changes() { # echo "noname" >$VAR/changes/etc.ro/hostname # # mkdir -p $VAR/changes/etc.ro/network # ( echo "auto lo" # echo "iface lo inet loopback" # echo "" # echo "auto eth0" # echo "iface eth0 inet static" # echo " address 0.0.0.0" # echo " netmask 255.255.255.0" # ) >$VAR/changes/etc.ro/network/interfaces # # echo "127.0.0.1 localhost noname" >$VAR/changes/etc.ro/hosts # # cat $SRCDISK/etc/passwd | # grep -v -e "^bs:" -e "^bianca:" -e "^tim:" >$VAR/changes/etc.ro/passwd # # cat $SRCDISK/etc/shadow | # grep -v -e "^bs:" -e "^bianca:" -e "^tim:" >$VAR/changes/etc.ro/shadow # # cat $SRCDISK/etc/group | # grep -v -e "^bs:" -e "^bianca:" -e "^tim:" >$VAR/changes/etc.ro/group # } # # # BOOTCDMODPROBE=standard|bootcd|auto # If booted from initrd bootcd has to load the necessarry modules. # If only modules provided by initramfs-tools are needed you can # specify "standard" here. If bootcd should try extra hard to load # neccessary modules you can specify "bootcd" here. # Bootcd will use discover for this purpose. So discover has to be installed. # If you specify auto, bootcd will check if discover is installed. # If it is installed # BOOTCDMODPROBE=bootcd will be set, if not # BOOTCDMODPROBE=standard will be set. # Be aware that people have reported, that sometimes BOOTCDMODPROBE=bootcd # may not work but sometimes it is needed. BOOTCDMODPROBE=standard
Une fois que vous êtes satisfait de votre fichier de configuration, vous
pouvez lancer bootcdwrite
pour qu'il commence le processus de
construction de l'image ISO.
Lancer bootcd pour construire l'ISO
Avant de lancer le programme pour la première fois, il est probale, celon
votre configuration, qu'il faille lancer bootcdmkinitrd
avant
bootcdwrite. Pour lancer bootcdwrite
, en root. Il suffit de
taper:
# bootcdwrite
Pendant que la construction se fait, le programme affichera si tout se passe bien, ou les problèmes éventuels, comme par exemple le fait qu'il n'y ai pas assez de place sur un seul CD, et à chaque vous pouvez choisir d'ignoer l'avertissement. a noter que le temps de construction dépend de la puissance de votre machine.
Récupérer l'image ISO construite
Une fois la construction de l'image finie, et si vous n'avez pas modifé la destination de l'image, vous la trouverez dans /var/spool/bootcd/cdimage.iso. Vous pouvez tout de suite tester l'image avec Qemu ou graver l'ISO. Vous pouvez aussi déplacer l'image ISO dans votre répertoire personnel, et lui changer les permissions afin qu'elle vous appartienne:
# ls /var/spool/bootcd cdimage.iso # mv /var/spool/bootcd/cdimage.iso $HOME # chown VotreNom $HOME/cdimage.iso # chgrp VotreNom $HOME/cdimage.iso
Vous pouvez évidemment renomer l'image comme bon vous semble.
Qemu pour tester l'image ISO
Qemu est un emulateur, je ne vais pas le décrire car ce n'est pas le but de ce howto, et qemu a tellement de possibilités qu'il vaut un howto à lui tout seul. En gros qemu fait de votre machine, une deuxième, l'image ISO est lancée, et le système contenu dans l'image ISO (votre LiveCD) démarre comme au boot de la machine. A essayer, c'est assez incroyable, et cela permet de tester toute sortes de LiveCD sans les graver. Pour installer qemu avec aptitude:
# aptitude install qemu
Pour tester l'image laisée dans /var/spool/bootcd:
# qemu -cdrom /var/spool/bootcd/cdimage.iso
Ou depuis le répertoire dans lequel se trouve l'ISO:
# qemu -cdrom cdimage.iso
Gravure d'ISO
Vous pouvez graver l'image ISO avec Graveman, k3b, ou wodim, et booter dessus. Voisi un exemple de commande de gravure avec wodim (valable aussi pour cdrecord), avec un kernel 2.6.*:
# wodim -v -speed=24 -data cdimage.iso
Trucs et astuces pour aller plus loin
Pour Mozilla, il faut mettre le répertoire var/lib/mozilla dans la variable
NOT_TO_RAM, du fichier /etc/bootcd/bootcdwrite.conf
, si l'on veut
que mozilla fonctionne sur son système LiveCD.
Si vous voulez créer un système LiveCD vraiment pérformant, vous pourriez destiner un système ou une machine à cela en installant que les logiciels que vous désirez. On pourrait par exemple, installer un environnement graphique léger tel que Blackbox, avec juste les outils utiles pour le web. Une autre solution possible est de créer un environnement chrooté, pour s'y enfermer et créer un système sur mesure, avec debootstrap on pourrait même créer un LiveCD basé sur la version testing, depuis une Debian stable.
Enfin je ne connais pas toutes les possibilités, toutes suggestion sur ce howto est la bienvenue, j'espère que vous avez réussis à mettre votre box sur un CD ou un DVD, et que vous avez booté dessus sans problèmes. Si vous désirez allez encore plus loin, je vous conseil de jeter un coup d'oeil au cookbook de Slitaz. Le cookbook donne les instructions complètes pour créer un système Live de A à Z en compilant tous les paquets depuis les sources.