Ubuntu Custom
De Athena.
Sommaire |
Log =
Ubuntu_Custom:Log Essais actuels de customisation
Pré-requis
- Espace disque / mémoire / temps
- Une ISO ubuntu
- Squashfs opérationnel
- Pas forcément le plus simple, cela dépend de votre installation actuelle...
Création de l'espace de travail
~$ mkdir ~/livecd
~$ export CD=~/livecd
Montage et copies de l'ISO
"Montage" l'image iso pour accéder à son contenu (ici dans /mnt/iso)
~$ sudo mount -o loop /media/Documents/iso/gutsy-desktop-i386.iso /mnt/iso
"Extraction" du contenu, par copie... La copie terminée, on démonte l'image iso d'origine.
~$ cd $CD ~/livecd$ mkdir extract ~/livecd$ sudo cp -a /mnt/iso/. extract/ ~/livecd$ sudo chmod -R u+w extract/ ~/livecd$ sudo umount /mnt/iso
On "entre" dans la copie extraite, et on procède à un nettoyage...
~/livecd$ cd extract/ ~/livecd/extract$ sudo rm -rf bin pics disctree programs autorun.inf ubuntu.ico start.bmp start.exe start.ini wubi-cdboot.exe
~/livecd/extract$ cd $CD ~/livecd$ ls extract
Montage et extraction du "coeur" squasfs
~/livecd$ mkdir squashfs ~/livecd$ sudo mount -t squashfs -o loop ~/livecd/extract/casper/filesystem.squashfs /mnt/iso
Copie du coeur de distrib. Attention, c'est très long...
~/livecd$ sudo cp -a /mnt/iso/. ~/livecd/squashfs
~/livecd$ sudo umount /mnt/iso
Préparation du chroot
Copie du resolv.conf pour avoir le net, et montage de /proc et /sys /!\ Ne pas oublier de les supprimer avant de quitter le chroot) /!\
~/livecd$ sudo cp /etc/resolv.conf squashfs/etc/resolv.conf ~/livecd$ sudo mount -t proc -o bind /proc squashfs/proc ~/livecd$ sudo mount -t sys -o bind /sys squashfs/sys
Passage en chroot
~/livecd$ sudo chroot squashfs /bin/bash
chroot:/# cp /usr/share/doc/apt/examples/sources.list /etc/apt/
chroot:/# apt-get update chroot:/# apt-get dist-upgrade
6438ko réceptionnés en 27s (235ko/s) Lecture des listes de paquets... Fait chroot:/# apt-get upgrade 237 mis à jour, 0 nouvellement installés, 0 à enlever et 1 non mis à jour. Il est nécessaire de prendre 303Mo dans les archives. Après dépaquetage, 80,8Mo d'espace disque supplémentaires seront utilisés. Souhaitez-vous continuer [O/n] ? o ...
Ici, je rajoute tout ce qui va bien, plugins multimédia etc...
chroot:/# apt-get install ubuntu-restricted-extras gstreamer0.10-plugins-bad gstreamer0.10-plugins-bad-multiverse gtreamer0.10-plugins-ugly gstreamer0.10-plugins-ugly-multiverse gstreamer0.10-ffmpeg gstreamer0.10-fluendo-mp3 gstreamer0.10-fluendo-mpegdemux gstreamer0.10-gl gstreamer0.10-pitfdll mozilla-mplayer mplayer-fonts w32codecs flashplugin-nonfree msttcorefonts sun-java6-plugin sun-java6-fonts gtk2-engines-murrine libggi-target-x gsfonts-x11
0 mis à jour, 65 nouvellement installés, 0 à enlever et 0 non mis à jour.
Il est nécessaire de prendre 64,5Mo dans les archives.
Après dépaquetage, 178Mo d'espace disque supplémentaires seront utilisés.
Souhaitez-vous continuer [O/n] ? o
J'enlève tous les fichiers de localisation, avant de ne réinstaller que le pack français, et j'enlève les outils de mise à jour et d'installation, ainsi que les terminaux (gnome-terminal et xterm) et 2 ou 3 autres bricoles.
chroot:/# apt-get remove language* (-117Mo) chroot:/# apt-get install language-pack-fr language-pack-gnome-fr language-support-fr language-selector (+50Mo) chroot:/# apt-get install console-data chroot:/# dpkg-reconfigure console-data ... chroot:/# umount /sys chroot:/# umount /proc chroot:/# rm /etc/resolv.conf chroot:/# exit exit
Sortie du chroot
Sans avoir oublié de démonter /proc /sys et effacé resolv.conf
Sauvegarde
Je fais une copie des répertoires après la mise à jour, pour ne pas avoir à tout retélécharger si je dois recommencer la manip
~/livecd$ mkdir squashfs.bakup ~/livecd$ sudo cp -a squashfs/. squashfs.bakup ~/livecd$ sudo mkdir extract.backup ~/livecd$ sudo rm extract/casper/filesystem.squashfs ~/livecd$ sudo cp -a extract/. extract.backup
NETTOYAGE
Purge du cache apt pour ne pas encombrer l'iso
~/livecd$ sudo chroot squashfs chroot:/# apt-get clean chroot:/# exit exit
Déplacement noyau et thèmes
(Facultatif!)
Après mise à jour du kernel, le copier en remplacement du kernel d'origine de l'iso
~/livecd$ sudo cp squashfs/boot/vmlinuz-2.6.22-14-generic extract/casper/vmlinuz ~/livecd$ sudo cp squashfs/boot/initrd.img-2.6.22-14-generic extract/casper/initrd.gz
Démarrage en français
(à vérifier!)
Pour ne pas à avoir à sélectionner la langue au démarrage
~/livecd$ echo "fr" | sudo tee extract/isolinux/lang fr ~/livecd$ cat extract/casper/lang fr
Ajout des thèmes
J'ai choisi les thème Murrina-Fruits (après installation du moteur GTK2 Murrine) et Murrine-rounded pour les bordures, que vous pouvez trouver ici (merci Chilperik).
Quelques captures d'écran en bas de page.
$ sudo cp -ra ~/.themes/Murrina-Fruits/ ~/livecd/squashfs/usr/share/themes/ $ sudo cp -ra ~/.themes/MurrineRounded/ ~/livecd/squashfs/usr/share/themes/ $ sudo cp -a ~/Images/backgrounds/ubunlight-or_by_harrypopof.png /home/traaf/livecd/squashfs/usr/share/backgrounds/ $ sudo chown -R root:root ~/livecd/squashfs/usr/share/themes $ sudo chown -R root:root ~/livecd/squashfs/usr/share/backgrounds $ sudo rm -rf squashfs/etc/skel/Examples
MODIFICATION DU USER
L'étape qui m'a donné le plus de mal, merci frafa pour le coup de pouce
$ sudo gedit squashfs/etc/casper.conf export USERNAME="nectarin" export USERFULLNAME="nectarin" export HOST="nectarin" export BUILD_SYSTEM="Nectarin"
MODIFICATION DES DROITS
~/livecd$ mkpasswd -s motdepasse
E/RzddfzlTY0A
$ sudo gedit squashfs/usr/share/initramfs-tools/scripts/casper-bottom/10adduser set passwd/root-password-crypted E/RzddfzlTY0A set passwd/user-password-crypted E/RzddfzlTY0A
Mise à jour de l'initrd
Indispensable pour que la modification de l'utilisateur et des droits s'appliquent au boot
$ sudo chroot squashfs chroot:/# sudo update-initramfs -k all -u chroot:/# exit exit
$ sudo cp squashfs/boot/initrd.img-2.6.22-14-generic extract/casper/initrd.gz
RECONTRUCTION DU SQUASHFS
$ sudo chmod a+w ~/livecd/extract/casper/filesystem.manifest
$ sudo chroot ~/livecd/squashfs dpkg-query -W --showformat='${Package} ${Version}\n' > $CD/extract/casper/filesystem.manifest
$ sudo chmod go-w ~/livecd/extract/casper/filesystem.manifest
$ sudo chmod a+w /home/traaf/livecd/extract/casper/filesystem.manifest-desktop
$ sudo chroot /home/traaf/livecd/squashfs dpkg-query -W --showformat='${Package} ${Version}\n' > /home/traaf/livecd/extract/casper/filesystem.manifest-desktop
$ sudo chmod go-w /home/traaf/livecd/extract/casper/filesystem.manifest-desktop
$ cd squashfs $ sudo mksquashfs . ../extract/casper/filesystem.squashfs
(oups : https://bugs.launchpad.net/ubuntu/+source/squashfs/+bug/208532
- => install version précédente des squashfs-tools)
$ cd .. $ sudo mkisofs -r -V "Nectarin Live CD" -cache-inodes -J -l -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -o nectarin-i386.iso extract
...
Test ISO
- Tester plutôt par utilisation de VirtualBox !
Pour cette étape, pas de code à taper. Je boote sur l'iso, toutes mes modifications sont bien effectives. Je procède alors aux réglages du compte utilisateur en appliquant les thèmes que j'ai ajoutés, je configure firefox bien comme il faut et je modifie un peu la disposition des menus. Quelques liens bien choisis en évidence sur le bureau avec des icônes sympa.
Pour la sauvegarde, j'opte pour la simplicité : ouvrir nautilus, remonter d'un niveau pour atteindre /home, un clic droit sur le dossier utilisateur > créer une archive. Et je me l'envoie par email
Information de profil
je décompresse mon dossier utilisateur dans un repertoire que je nomme profil, et je recopie sont contenu dans /etc/skel
$ sudo cp -r profil/. squashfs/etc/skel $ sudo chown -R root:root /etc/skel
Reconstruction ISO
On supprime le fichier squashfs existant
$ sudo rm extract/casper/filesystem.squashfs
