Comment réaliser son propre LiveCD ?


Qu'est ce qu'un LiveCD ?
Un LiveCD est un système d'exploitation complet (interface graphique, navigateur web, suite bureautique, outils de programmation, logiciels de communication, etc) sur une disquette, une clé USB, un CD voir un DVD sans rien modifier de la machine où on l'exécute. Il ne touche en effet pas à la configuration de la machine hôte, ni généralement au disque vu que le système de base (kernel, drivers et interface graphique) est chargé directement en mémoire via un RAMDisk et les logiciels sont ensuite directement décompressés puis exécutés à partir du CD-Rom.

Nous allons dans cette partie explicitée comment réaliser un liveCD avec Mandriva, nous utiliserons mklivecd pour générer une image disque du sytème. Le programme mklivecd est basé sur un script perl. Il existe deux méthodes pour réaliser un livecd à partir de ce programme soit par la création d'une image de la distribution Mandriva installée (en ayant pris soin d'avoir installé un minimum de paquetages), soit par la méthode que nous allons vous présentez avec un espace chroot. L'avantage de cette deuxième méthode vient du fait que nous allons en quelque sorte créer une distribution Mandriva basique dans un répertoire et faire une image de celui-ci, cette distribution pourra être personnalisée mais le principal avantage de cette méthode vient sa taille ( environ 230 Mo pour une Mandriva de base). De plus elle permet de mieux maîtriser la création de son LiveCD , car nous installons que les paquetages utiles à notre distribution .

Installation de mklivecd
Dans un premier temps, il faut télécharger mklivecd et ses dépendances nommées ci dessous. Afin d'automatiser l'installation de mklivecd et de ses dépendances, nous avons créé un script shell.

mklivecd-installation.sh :
rpm -ivh busybox-1.01-2mdk.i586.rpm
rpm -ivh cloop-utils-1.02-7mdk.i586.rpm
rpm -ivh mediacheck-7.3-1mdk.i586.rpm
rpm -ivh squashfs-tools-2.1-1.r2.1mdk.i586.rpm
rpm -ivh syslinux-1.76-18mdk.i586.rpm
rpm -ivh zisofs-tools-1.0.6-1mdk.i586.rpm
rpm -ivh mklivecd-0.6.0-4mdk.noarch.rpm

mklivecd installation

mklivecd est installé sur notre système, nous allons pouvoir maintenant créer notre liveCD .

Première Méthode ( création simplifiée d'un liveCD)

Pour la première méthode , il suffit de maîtriser les options disponibles avec mklivecd. Voici les différentes options avec leurs explications :

Options générales :
--root < rootdir > Répertoire racine à partir duquel le LiveCD sera généré
--tmp < tmpdir > Nom du répertoire temporaire utilisé lors de la génération de l'image du LiveCD (pas obligatoire).
--nofile < ex1 >[,][...] Exclue certains fichiers de l'image finale du LiveCD.
Par exemple :
--nofile=^/home/moi/numCB exclura le fichier numCB de l'image générée --nodir < ex1 >[,][...] Exclue certains répertoire de l'image finale du LiveCD.
Par exemple :
--nodir=^/home/moi,^/root/.mcop exclura de l'image générée les répertoires (et sous répertoires) /home/moi, le fichier .mcop du répertoire /root --kernel < kernel > Kernel à utiliser sur l'image du LiveCD (si plusieurs présents).

Options de compressions :
--blocksize < size > Taux de Compression en KiloOctets (si différent de celui par défaut) --looptype Créer une image cloop, squashfs ou iso (non- compressé) du LiveCD.

Options pour le boot de LiveCD:
--bootopt < option > Spécifie une commande additionnelle à passer au kernel
Exemple :
--bootopt noscsi (pour ne pas charger de drivers scsi) plus d'options dans l'applicatif mklivecd lui même, éditez le !
--bootmsg < msg > utilise le 'msg' d' isolinux pour le message du boot.
--bootimg < img > utilise 'img' (LSS format) comme image de fond (standard isolinux).
--mdkboot utilisation de l'image de boot mandrakelinux au démarrage du LiveCD pour afficher les messages.
--timeout < sec > Spécifie le temps par défaut avant chargement du LiveCD (en seconde).
--keyboard < mapping > Spécifie le type de clavier par défaut pour le LiveCD (peut être different de celui que vous utilisez actuellement).
--resolution < res > Spécifie la résolution pour le framebuffer (par défaut 1024x768)
--splash Créer le LiveCD avec le bootsplash6 si celui ci est disponible sur le système que vous venez de créer.
--fstab < options > Modifie les options par défaut pour fstab sur le LiveCD. Les options disponibles sont : 'auto' et 'ro' 'rw' . Ainsi les unités peuvent être détectées automatiquement et mises en lecture seule ou en lecture écriture (exemple : --fstab auto, rw -> cherchera toutes les unités disponibles et les montera en lecture/écriture).

Les options de indicatif de l'image ISO :
--application < id > Spécifie l'application avec laquelle le CD a été réalisé, équivalent à l'option '-A' de mkisofs.
--volumeid < id > Donne un nom de volume à l'image iso, équivalent à l'option '-V' de mkisofs.
--preparer < prep > Nom du créateur du CD, équivalent à l'option '-p' de mkisofs.
--publisher < pub > Nom de l'éditeur du CD, équivalent à l'option '-P' de mkisofs.

Options pour déclarer sa clé usb comme étant le /home :
--usbhome Utilisation d'une clé USB comme /home persiste quand celle-ci est présente au boot.
Exemple de commande possible pour faire un liveCD avec cette première méthode :
# mklivecd < options > < nom de l'image .iso >
=> # mklivecd --fstab=auto,rw --preparer ''Moi'' --publisher ''IUT bethune'' MonLiveCDaMoi.iso

Seconde Méthode ( création d'un liveCD avec chroot)

Cette méthode est plus longue et plus compliquée à réaliser mais le liveCD sera optimisé ( taille du liveCD , installation que des programme voulus sur sa distribution), de plus cette méthode permet de maîtriser la création de son liveCD. C'est notamment cette méthode que nous avons utiliser pour créer notre LiveCD Mandriva R&T .

Avant de lancer mklivecd , nous devons créer un répertoire qui va nous servir d'espace temporaire, cette espace va accueillir tous les paquetages nécessaires à la création d'une distribution Mandriva et créer l'arborescence de celle ci dans ce répertoire.

liveCD création

Maintenant que notre espace est créé , nous devons créer la structure nécessaire pour permettre de faire fonctionner la commande urpmi lorsque le repertoire aura été «chrooté» .


liveCD création

Installation du système de base : Nous allons maintenant installer dans notre espace temporaire les paquetages du système de base avec la commande : urpmi basesystem harddrake locales locales-fr bootsplash xorg-x11 pciutils man --root /LiveCD/ La commande va nous permettre de choisir les paquetages pour créer notre système de base en proposant plusieurs choix, nous avons choisi les paquetages suivant :

liveCD création

Nous avons choisis les paquetages suivant : 1,1, 1, 1,1et 2 (la commande urpmi va se lancer une deuxième fois apres installation de 68 paquetages , refaire les même choix pour installer maintenant 166 paquetages).

liveCD création

Après avoir installé plus d'une centaine de paquetages dans notre espace temporaire /LiveCD , on peut voir que l'arborescence a bien été créée dans notre espace temporaire.

liveCD création

Nous allons maintenant copier le fichier resolv.conf de notre système vers notre repertoire /LiveCD pour permettre les résolutions de DNS avec la commande : cp /etc/resolv.conf /LiveCD/etc/

Création de notre espace CHROOT
Je déclare maintenant que mon répertoire /LiveCD devient la racine de mon système grâce à la commande : chroot /LiveCD/
Maintenant que notre espace est CHROOTé nous allons pouvoir activer le réseau pour cette environnement à partir des commandes suivantes :

liveCD création

Pour vérifier que la manipulation a bien fonctionné, il suffit de lancer la commande et d'observer si l'environnement CHROOT a accès à internet :
ping www.google.fr

Création de l'utilisateur :
Nous allons créer un utilsateur «admin» qui figurera comme utilisateur par defaut dans notre futur LiveCD. Pour cela, on crée les fichiers nécessaires destinés au shadowing :

liveCD création

On doit créer dans un premier temps le groupe «admin», puis un utilisateur «admin» auquel on va lui attribuer un mot de passe à partir des commandes :

liveCD création

On rentre un mot de passe au choix , ici pour simplifier nous avons choisi le mot de passe admin.

liveCD création

Nous allons maintenant ajouter quelques options pour permettre à l'utilisateur d'avoir une meilleure ergnomie dans notre LiveCD.
Pour cela nous allons installer le clavier en français , nous devons ouvir un autre terminal de commande pour effectuer maintenant les opérations d'installations (clavier en français, installation du bureau kde, installation des logiciels ...)
liveCD création

liveCD création

Maintenant il faut mettre quelques fichiers de configurations dans notre /LiveCD :
Pour cela ouvrir le traitement de texte kwrite par exemple et on ouvre le fichier /etc/sysconfig/network => on inscrit le script : « NETWORKING=YES» puis on l'enregistre dans le répertoire /LiveCD/etc/sysconfig/ De même pour le fichier /etc/hosts => 127.0.0.1 localhost que l'on enregistre dans le repertoire /LiveCD/etc/ Puis dans le fichier inittab situé dans /LiveCD/etc/ , on remplace dans le script id:3:initdefault par id:5:initdefault

# Default runlevel. The runlevels used by Mandrakelinux are:
# 0 - halt (Do NOT set initdefault to this)
# 1 - Single user mode
# 2 - Multiuser, without NFS (The same as 3, if you do not have networking)
# 3 - Full multiuser mode
# 4 - unused
# 5 - X11
# 6 - reboot (Do NOT set initdefault to this)
id:5 correspond au démarrage automatique de l'interface graphique lors du lancement du liveCD alors que l'option id:3 sera en mode console.

Intallation du dhcp avec la commande suivante :

liveCD création

Installation du serveur X et du bureau KDE :

Installation du serveur X

liveCD création

On s'aperçoit d'une erreur lors de l'installation du 4ème paquetage, pour la résoudre, on lance la commande cp /etc/X11/xorg.conf /LiveCD/etc/X11 Puis installation du paquetage xdm et copie du fichier X vers notre futur LiveCD :

liveCD création

Installation du bureau KDE :
On lance la commande urpmi kdebase - -root /LiveCD
Pour avoir le bureau KDE en français on sélectionne deux fois de suite le premier choix proposé :

liveCD création

liveCD création

Après avoir installé tous les paquetages , nous avons la création de notre bureau KDE terminé :
liveCD création

On ajoute maintenant le paquetage Hotplug pour que tous les périphériques branchés en USB sur notre LiveCD fonctionnent :
liveCD création

Il faut impérativement pour que mklivecd , nous crée notre image sans probleme, installer dans notre système Mandriva (c'est à dire pas dans le répertoire chrooté) les paquetages : dkms-minimal et kernel-source-2.6-2.6.12-12mdk.i586.rpm
liveCD création

liveCD création

Installation des logiciels :
Il suffit maintenant d'intégrer comme bon nous semble les logiciels que nous voulons avoir sur notre LiveCD à partir de la commande : urpmi nom_du_logiciel –root /LiveCD
liveCD création

Avant de réaliser l'image de notre répertoire, nous devons installer le module unionfs (système de fichier permettant de joindre des systèmes de fichier en lecture seule et d'autres en écriture (ex: CD-Rom / mémoire vive en live-cd)). Pour introduire ce module dans notre liveCD , nous avons trouvé les paquetages suivants:
liveCD création

Pour mettre la distribution en français dans notre chroot , il suffit de lancer la commande localedrake et de suivre les instructions:
liveCD création

liveCD création

A ce moment de la création , nous avons une distribution liveCD qui va démarrer mais seul le compte root va pouvoir se connecter à une session KDE. Pour remédier à ce problème , nous allons tout d'abord installer l'invite d'ouverture kdm au lieu de celui installé par défaut ( xdm). Il faut installer le paquetage kdebase-kdm (ce paquetage permettra notamment de placer les boutons «terminer la session» , «arrêter le système» et «redémarrer le système» lors de la fermeture du liveCD ):
liveCD création

Une fois cette opération effectuée , il suffit de lancer la commande drakedm , cette commande va permettre de choisir quel window manager nous voulons utiliser , on choisit pour notre LiveCD kdm. Nous allons maintenant permettre à l'utilisateur d'être logué automatiquement lors du démarrage du LiveCD. Pour cela il faut spécifier à Xorg le window manager utilisé par défaut pour l’utilisateur pour cela on place dans le dossier home de l'utilisateur un fichier «.xinitrc» avec pour contenu exec startkde
liveCD création


Lors du lancement de la session , c'est le premier fichier qui va être lu pour démarrer le window manager.
Mais si l'on test notre liveCD nous allons nous rendre compte qu'avec ce fichier de configuration l’interface graphique ne démarre toujours pas , il faut analyser le fichier .xsession-errors placé dans le dossier home de l’utilisateur (sur le LiveCD). On peut observer alors «/etc/X11/Xsession: permission non accordée». On remonte donc l’arborescence à partir de / pour trouver l'origine du problème en regardant les permissions sur /etc/ , /etc/X11/ , /etc/X11/Xsession . On se rend compte que seul l’utilisateur root peut éxécuter et écrire dans /etc/X11/ . Il faut alors revenir à la création de notre liveCD , il faut maintenant rajouter les droits pour l’utilisateur et le groupe via le script que nous allons créer puis nous éxécuterons au démarrage.
On crée donc le fichier: chmod.sh dans: /etc/rc.d/init.d/ avec pour contenu:
chmod 777 /etc/X11/
Ensuite dans le dossier /etc/rc.d/rc5.d/ on voit que l’interface graphique est éxecutée en S30 («S##» les nombres après le S correspondent à l'ordre d'exécution des programmes), on crée un lien symbolique vers le script à éxecuter au démarrage portant le numéro 29 pour que les droits soit changés juste avant le chargement de l’interface graphique:
ln –s /etc/rc.d/init.d/chmod.sh S29chmod.sh
Maintenant il ne reste plus qu'a configurer le fichier kmdrc dans /LiveCD/etc/kde/kdm/
On configure le fichier comme ceci :

# Core config for 1st local display
[X-:0-Core]
# Enable automatic login on this display. USE WITH EXTREME CARE!
# Default is false
AutoLoginEnable=true //on active autologin
# The user to log in automatically. NEVER specify root! Default is ""
AutoLoginUser=admin //on déclare que l'utilisateur admin doit démarrer automatiquement lors du lancement de la session.
# The password for the user to log in automatically. This is NOT required
# unless the user is to be logged into a NIS or Kerberos domain. If you use
# it, you should "chmod 600 kdmrc" for obvious reasons. Default is ""
AutoLoginPass=progtr00 //mot de passe déclaré pour notre utilisateur en autologin
# See above
Authorize=true
Le LiveCD avec l'utilisateur demarre automatiquement maintenant.
Une fois cette opération terminée nous allons pouvoir réaliser l'image de notre distribution .
Il ne faut surtout pas oublier de fermer proprement tous les terminaux ouverts en tapant la commande «exit» plusieurs fois jusqu'à temps de ne plus avoir de terminaux lancés (en fermant les terminaux proprement cela permet de ne pas avoir la création de initrd bloqué à 97%, sinon mklivecd prend en compte la mandriva installé sur notre système au lieu de notre mandriva créer en CHROOT) une fois cette opération faite relancer un terminal pour lancer la commande ci desous avec mklivecd pour créer une image de notre système de l'espace chroot :
liveCD création

Il suffit maintenant de graver l'image avec un quelconque logiciel de gravure . Nous avons maintenant un LiveCD fonctionnel sans logiciel.

Installation des logiciels :
Il suffit maintenant d'intégrer comme bon nous semble les logiciels que nous voulons avoir sur notre LiveCD à partir de la commande : urpmi nom_du_logiciel --root /LiveCD et de refaire ensuite une image du repertoire /LiveCD
liveCD création

Mettre un fond d'écran à notre LiveCD :
Il suffit pour cela d'éditer le fichier backgroundrc contenu dans /LiveCD/etc/kde/kdm . Il faut changer la ligne de wallpaper en indiquant le chemin du fond d'écran à installer (les fonds d'écrans sont à mettre dans /LiveCD/usr/share/mdk/backgrounds. Le mieux est d'écraser les fonds déjà présents de mandriva avec les résolutions voulues selon son écran de PC car sinon ils seront mis par defaut (ceux pour Mandriva).
[Desktop0]
BackgroundMode=Flat
BlendBalance=100
BlendMode=NoBlending
ChangeInterval=60
Color1=33,68,156
Color2=192,192,192
CurrentWallpaper=0
LastChange=0
MinOptimizationDepth=1
MultiWallpaperMode=NoMulti
Pattern=fish
Program=
ReverseBlending=false
UseSHM=false
Wallpaper=/usr/share/mdk/backgrounds/Mandriva-1024x768.png
WallpaperList=
WallpaperMode=Scaled