Linux Personnaliser
Ubuntu
Tutoriel pour personnaliser un live CD Linux



Pour : Linux (Ubuntu, ...)


Pour vous aider à comprendre le tutoriel ci-dessous, je vais vous résumer vite faite en quoi consiste la manipulation.
Voici la racine du contenu du live cd de Ubuntu, dans le répertoire CASPER se trouve le fichier "filesystem.squashfs" qui fait plusieurs centaine de Mo.



Ce fichier contient tout le système d'exploitation qui sera chargé au lancement du live CD.
Les autres fichiers qui sont à la racine du live cd permettent de lancer et de charger le fichier "filesystem.squashfs" qui sera le système de fichier.
Notre but est donc de modifier le fichier "filesystem.squashfs" afin de charger notre système customisé.
Pour cela on récupérera le contenu d'un live cd puis on va extraire le contenu du fichier "filesystem.squashfs" dans un répertoire.
Puis dans ce répertoire on poura accéder à tous le système d'exploitation de notre live CD, comme ci-dessous:




Après on pourra personnaliser notre linux de A à Z, dans notre exemple se sera un Ubuntu.
(Exemple: ajout/suppression d'application, modifier configuration utilisateur par défault, ajout de fichier de données, thèmes, fond d'écrans, des services serveurs ...)
Puis il restera plus qu'a reconstruire notre nouveau fichier "filesystem.squashfs" pour le remplacer par l'ancien qui se trouve sur le live CD.
Et à reconstruire un ISO fonctionnel.


Ne vous inquiétez pas si vous avez pas tout compris, suivez les étapes une par une et vous vérez que c'est relativement simple!!!



Sommaire
1- Extraction du contenu de l'ISO
2- Récupération du système qui est chargé au démarrage
3- CHROOT (Changement de root)
4- Mise à jour et installation des paquets dans le système CHROOT
  a- Mises à jour dans le livecd
  b- Installation et désinstallation de paquets dans le livecd/a>
  c- Exemple de logiciels à intégrer au livecd
5- Démontage du CHROOT
6- Insérer des fichiers
  a- Répertoire utilisateur
  b- Dans le système
7- Modifier l'utilisateur par défaut
  a- Definir le nom par défault et droit
  b- Modifier le mot de passe
  c- Modifier UID
  d- Régénérer le fichier initrd dans le squashfs (en chroot)
8- Modifier des paramètres de boot
9- Reconstruction du Live CD
10- Création de l'ISO



1- Extraction du contenu de l'ISO


Pour commencer on créer un dossier qui va nous servir à faire toutes les manipulations.

sudo mkdir livecd



On créer le point de montage pour copier les données du disque.

sudo mkdir /mnt/iso



On monte notre image ISO dans notre point de montage "/mnt/iso".

sudo mount -o loop ubuntu-13.04-desktop-i386.iso /mnt/iso



On copie le contenu du CD.

sudo cp -av /mnt/iso ./livecd



On démonte notre image ISO.

sudo umount /mnt/iso





2- Récupération du système qui est chargé au démarrage


On installe l'outil nécessaire à la décompression du fichier "filesystem.squashfs":

sudo apt-get install squashfs-tools



On créer le le point de montage pour extraire le fichier "filesystem.squashfs" qui contient le système qui sera chargé au lancement du live cd.

sudo mkdir /mnt/squashfs



On monte le contenu du fichier "filesystem.squashfs" dans le point de montage "/mnt/squashfs":

sudo mount -t squashfs -o loop livecd/iso/casper/filesystem.squashfs /mnt/squashfs/



On copie le contenu de "/mnt/squashfs":

sudo cp -av /mnt/squashfs/ ./livecd



Démonte notre point de montage:

sudo umount /mnt/squashfs/





3- CHROOT (Changement de root)


On monte les répertoires système de notre machine dans notre futur livecd afin d'utiliser les informations du système.

sudo mount --bind /proc ./livecd/squashfs/proc sudo mount --bind /sys ./livecd/squashfs/sys sudo mount -t devpts none ./livecd/squashfs/dev/pts



On va copier la configuration réseau de notre système dans le sytème de notre futur live CD.

sudo cp /etc/resolv.conf livecd/squashfs/etc/resolv.conf sudo cp /etc/hosts livecd/squashfs/etc/hosts sudo cp /etc/apt/sources.list livecd/squashfs/etc/apt/sources.list



On modifie la variable d'environnement de notre système pour déplacer la racine du système de notre futur live CD.

sudo chroot ./livecd/squashfs



Maintenant toute les commandes éffectué sont réalisé dans le système du live CD et non dans notre système d'exploitation actuel.

ATTENTION !!! : Il est préférable que le linux hôte et le live CD dispose de la même version du système d'exploitation.



4- Mise à jour et installation des paquets dans le système CHROOT


a- Mises à jour du livecd

Mise à jour des paquets disponible:

sudo apt-get update


PS: Ne faîte les mises à jour que si le système est la même version que votre live cd.

Mise à jour du sytème:

sudo apt-get dist-upgrade



b- Installation et désinstallation de paquets dans le livecd

Nous allons lister dans le fichier "liste.txt" tous les paquets qui sont installés:

sudo dpkg-query -W --showformat='${Installed-Size} ${Package}\n' | sort -nr > liste.txt



Pour visionner tranquillement la liste des logiciels:

sudo nano liste.txt



Vous pouvez désinstaller un/des paquets sur votre futur live CD afin de gagner de la place:

sudo apt-get remove --purge nom_du_paquet



Pour installer un paquet:

sudo apt-get install nom_du_paquet



Pour supprimer un paquet téléchargé:

sudo apt-get clean



c- Exemple de logiciels à intégrer au livecd

Par défault le clavier sera en US (Qwerty), vous pouvez installer le clavier Français (Azerty) avec le paquet "console-data".

sudo apt-get install console-data


Vous pouvez installer d'autre interface de bureau comme "Gnome3", "KDE" ... au lieu de Unity.
Ou bien installer un lecteur multimédia comme VLC, des petits jeux, un serveur web (Apache2) ...



5- Démontage du CHROOT


Démontages :

sudo umount -lf /sys sudo umount -lf /proc sudo umount -lf /dev/pts



On supprime nos fichiers de configuration:

sudo rm /etc/resolv.conf sudo rm /etc/hosts



On sort du chroot:

sudo exit





6- Insérer des fichiers


a- Répertoire utilisateur

Il suffit d'insérer les fichiers dans le répertoire "/etc/skel".

sudo cp *votre fichier* ./livecd/squashfs/etc/skel


PS: Pour avoir un profil utilisateur personnaliser, démarrer le live CD, configurer tous les logiciels comme Firefox ...
Puis sauvegarder le profil complet de l'utilisateur "/home/nom_utilisateur" sur une clé USB et après il vous suffira de tous recopier dans "/etc/skel".

b- Dans le système

Il faut copier les fichiers au même emplacement que sur votre propre système.
Exemple :
- Pour les fonds d'écran:

sudo cp -r /usr/share/backgrounds/* ./livecd/squashfs/usr/share/backgrounds/


- Pour les thèmes:

sudo cp -r /usr/share/themes/* ./livecd/squashfs/usr/share/themes





7- Modifier l'utilisateur par défaut


a- Definir le nom par défault et droit


Modifier les fichiers de configuration de casper:

sudo nano ./livecd/squashfs/etc/casper.conf



L'utilisateur par default possède les droits "root" sans utiliser un mot de passe.
Si vous voulez conserver cette propriété, modifiez toutes les occurances en bleu.

# This file should go in /etc/casper.conf # Supported variables are: # USERNAME, USERFULLNAME, HOST, BUILD_SYSTEM, FLAVOUR export USERNAME="nom_utilisateur" export USERFULLNAME="nom_utilisateur LiveCD" export HOST="ubuntu" export BUILD_SYSTEM="Ubuntu" # USERNAME and HOSTNAME as specified above won't be honoured and will be set to # flavour string acquired at boot time, unless you set FLAVOUR to any # non-empty string. export FLAVOUR="mon_ubuntu_customise"



Vous pouvez passez directement au paragraphe "7-d" ou bien si vous voulez modifier ce comportement continuez ci-dessous.

Pour modifier les paramètres de l'utilisateur par défault, remplissez toutes les occurances en bleu.

# This file should go in /etc/casper.conf # Supported variables are: # USERNAME, USERFULLNAME, HOST, BUILD_SYSTEM, FLAVOUR export USERNAME="nom_utilisateur" export USERFULLNAME="nom_utilisateur LiveCD" export HOST="nom_utilisateur" export BUILD_SYSTEM="nom_utilisateur" # USERNAME and HOSTNAME as specified above won't be honoured and will be set to # flavour string acquired at boot time, unless you set FLAVOUR to any # non-empty string. export FLAVOUR="mon_ubuntu customise"



Maintenant passez au paragraphe suivant pour changer le mot de passe de votre utilisateur par défault.

b- Modifier le mot de passe

On va modifier le mot de passe de l'utilisateur par défault et celui du "root".
Pour celà on créez un mot de passe crypté avec "mkpasswd".

sudo mkpasswd -s toto 2eMNxc4ZAWoHQ



Puis on va modifier le script qui créez les utilisateurs:

sudo nano ./livecd/squashfs/usr/share/initramfs-tools/scripts/casper-bottom/10adduser



Recherchez les lignes suivante:

db_set passwd/root-password-crypted '*' db_set passwd/user-password-crypted 'U6aMy0wojraho'



Puis remplacez par votre nouveau mot de passe afin qu'il soit appliqué à l'utilisateur par défault:

db-set passwd/root-password-crypted '*' db_set passwd/user-password-crypted '2eMNxc4ZAWoHQ'


PS: Vous pouvez modifier le mot de passe root en remplaçant '*' ci-dessus soit par le même mot de passe ou par un autre que vous devrez aussi crypter.

c- Modifier UID

On va modifier l'UID qui est à 999 pour l'utilisateur par défault, afin d'éviter un bug lier à Virtualbox:

sudo nano ./livecd/squashfs/usr/share/initramfs-tools/scripts/casper-bottom/10adduser



Recherchez la ligne ci-dessous et remplacez "999" par "1001":

db_set passwd/user-uid 999



d- Régénérer le fichier initrd dans le squashfs (en chroot)

On va recréer le fichier initrd qui est chargé au boot pour prendre en compte les modifications.
Il faut éffectuer cette manipulation à l'intérieur de notre futur live CD avec la commande "chroot".

sudo chroot ./livecd/squashfs sudo update-initramfs -k all -u sudo exit





8- Modifier des paramètres de boot


- Mettre le démarrage en mode verbose, pour celà il faut supprimer l'option "quiet" du boot.
Supprimez toutes les occurrences du mot "quiet:

sudo nano iso/isolinux/isolinux.cfg



- Retirer le logo Ubuntu avec la barre de défilement:
Pour celà il faut supprimer le mot "splash".

- Utiliser le français par défaut:

sudo echo "fr" | sudo tee iso/isolinux/lang





9- Reconstruction du Live CD


- On efface le squashfs de l'ISO où il y a l'ancien système du live CD:

sudo rm ./livecd/iso/casper/filesystem.squashfs



- Puis on crée le nouveau fichier contenant la liste des paquets de notre nouveau système:

sudo chmod a+w ./livecd/iso/casper/filesystem.manifest sudo chroot ./livecd/squashfs dpkg-query -W --showformat='${Package} ${Version}\n' > ./livecd/iso/casper/filesystem.manifest sudo chmod go-w ./livecd/iso/casper/filesystem.manifest



- Puis on va compresser tous les fichiers qui ce trouve dans le répertoire où il y a le le système d'exploitation de notre futur live cd vers l'ancien ISO.
Cette commande est un peut longue, c'est pourquoi on a rajouté l'option "-info" pour utiliser le mode verbose.

sudo mksquashfs ./livecd/squashfs ../iso/casper/filesystem.squashfs -info





10- Création de l'ISO


- Dans le cas où le noyau, usplash ou le compte utilisateur ont été modifiés, il faut remplacer deux fichiers essentiels sur l'image disque, que l'on trouve dans ~/livecd/iso/casper: vmlinuz et initrd.lz

sudo cp ./livecd/squashfs/boot/vmlinuz* ./livecd/iso/casper/vmlinuz sudo cp ./livecd/squashfs/boot/initrd.img* ./livecd/iso/casper/initrd.lz



- On créer un nouveau hash MD5 de notre live CD:

sudo bash -c "find ./livecd/iso -path ./livecd/iso/isolinux -prune -o -type f -not -name md5sum.txt -print0 | xargs -0 md5sum | tee md5sum.txt"



- Pour finir il ne reste plus qu'à reconstruire une image ISO :

sudo cd livecd/iso sudo mkisofs -r -V "Custom Ubuntu Live CD" -cache-inodes -l -J -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -o custom-live-cd-i386.iso .


PS: Si vous rencontrez le message d'erreur ci-dessous lors de la construction de l'ISO:

Joliet tree sort failed. The -joliet-long switch may help you.


Recommençez la commande sans le "-J".



Par O. Cédric
Sur www.octetmalin.net

Article publié le:
30/05/2013 17:44






Cette page vous à plus?

Dîtes que vous l'aimez en cliquant sur le bouton Facebook.