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.