Ubuntu Custom

De Athena.

http://www.breizh-ardente.fr/dotclear/index.php?2008/03/21/97-etape-2-quel-os-pour-un-usage-public-limite


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