
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é (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éé une distribution Mandriva basique dans un répertoire et faire une image de ce répertoire , cette distribution pourra être personnalisé 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 (disponible dans la zone téléchargement du site).
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 est installé sur notre système, nous allons pouvoir maintenant créer notre liveCD .
Première Méthode ( création simplifier 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é
--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é les répertoires (et sous répertoires) /home/moi, le fichier .mcop du répertoire /root
--kernel < kernel > Kernel à utilisé 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 etre 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 êtres détectés automatiquement et mise en lecteur 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 persistent quand celle si 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é à 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 notament 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'arborecence de celle ci dans ce répertoire.

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

Installation du système de base :
Nous allons maintenant installé 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 :

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).

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

Nous allons maintenant copier le fichier resolv.conf de notre sytè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 commande suivantes :

Pour vérifier que la manipulation a bien fonctionné il suffit de lancer la commande et d'observer si l'environnement CHROOT à l'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 :

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 :

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

Nous allons maintenant ajouter quelques options pour permettre à l'utilisateur d'avoir une meilleur erognomie 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 ...)


Maintenant il faut mettre quelques fichiers de configurations dans notre /LiveCD :
Pour cela on 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 :

Installation du serveur X et du bureau KDE :
Installation du serveur X

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

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


Après avoir installer tout les paquetages , nous avons la création de notre bureau KDE terminé :

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

Il faut maintenant 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


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

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 (disponible sur le site dans la zone téléchargement) :

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


A ce moment de la creation , 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 installer par défaut ( xdm).
Il faut installer le paquetage kdebase-kdm (ce paquetage permettra notament de placer les boutons «terminer la session» , «arreter le système» et «redémarrer le système» lors de la fermeture du liveCD ):

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

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éclarer pour notre utilisateur en autologin
# See above
Authorize=true
Le LiveCD avec l'utilisateur demarre automatiquement maintenant.
Une fois cette opération terminé 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 lancer (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 :

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

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 fonts d'écran à installer (les fonts d'écran sont à mettre dans /LiveCD/usr/share/mdk/backgrounds. Le mieux est d'écraser les fonts déjà présent de mandriva avec les résolutions voulus 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