Ce billet est le second de la série commencée par :
- [Logiciels et licences libres en entreprise] étape 1 : le hardware
Choix de l'OS
Le choix du matériel devant équiper les bornes d'accès libre à internet n'est pas encore définitivement arrêté, mais il est temps de se pencher sur la question de l'OS qui va y résider. Mon choix se porte naturellement sur Ubuntu :), voyons voir le cahier des charges, et comment adapter ubuntu à ces exigences.
- navigation web performante : firefox avec ses principales extensions (flash, java, adblock, mozilla-mplayer)
- compte utilisateur limité : pas de droits d'administration
- zéro maintenance
Une installation classique avec un compte utilisateur limité peut s'envisager, mais un minimum de maintenance est nécessaire. De plus, à moins de verrouiller complètement la session, les utilisateurs peuvent modifier l'apparence du bureau et je ne tiens pas à avoir à le remettre en place tous les matins. J'ai bien pensé à un script qui écraserai le répertoire /home de l'utilisateur à chaque boot, mais ce n'est pas très élégant, et ça ne résout pas le problème de la maintenance du poste.
La meilleure solution serait un liveCD, ou mieux, un liveUSB. C'est facile à mettre en place sur une carte CF, j'ai déjà mis en ligne la manip avec l'article USBuntu. Il n'y a qu'a la reproduire, en shuntant l'activation du mode persistant.
Reste à personnaliser l'image iso selon mes besoins. Je me suis déjà pas mal amusé avec reconstructor, je sais que c'est faisable. Il existe aussi le script de frafa, que vous pouvez trouver sur le forum ubuntu-fr, mais je ne vois pas trop comment obtenir exactement ce que je veux. Enlever/ajouter des programmes, pas de problème, par contre, configurer firefox (page d'accueil, modules, réglages pour ne pas conserver de mots de passe et de cookies), ou modifier les applications apparaissant dans les menus...
Finalement, la solution pour cette dernière étape ne se révèle pas la plus compliquée. Je me suis largement inspiré des pages de la doc ici, là et là.
Après quelques essais, voici la façon dont j'ai procédé :
CREATION DE L'ESPACE DE TRAVAIL
~$ mkdir ~/livecd
~$ export CD=~/livecd
MONTAGE ET COPIE DE L'ISO
~$ sudo mount -o loop /media/Documents/iso/gutsy-desktop-i386.iso /mnt/iso
[sudo] password for traaf:
~$ cd $CD
~/livecd$ mkdir extract
~/livecd$ sudo cp -a /mnt/iso/. extract/
~/livecd$ sudo chmod -R u+w extract/
~/livecd$ sudo umount /mnt/iso
~/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 SQUASHFS
~/livecd$ mkdir squashfs
~/livecd$ sudo mount -t squashfs -o loop /home/traaf/livecd/extract/casper/filesystem.squashfs /mnt/iso
~/livecd$ sudo cp -a /mnt/iso/. /home/traaf/livecd/squashfs
~/livecd$ sudo umount /mnt/iso
~/livecd$ ls
extract squashfs
PREPARATION DU CHROOT
je rajoute mon sources.list et je désactive certains dépôts
~/livecd$ cat /etc/apt/sources.list | sudo tee squashfs/etc/apt/sources.list
~/livecd$ sudo gedit squashfs/etc/apt/sources.list
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
id: ne peut trouver le nom de l'identificateur de groupe 1003
chroot:/# wget -q http://fr.packages.medibuntu.org/medibuntu-key.gpg -O- | apt-key add -
OK
chroot:/# apt-get update
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
...
chroot:/# apt-get dist-upgrade
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
gstreamer0.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*
chroot:/# apt-get install language-pack-fr language-pack-gnome-fr language-support-fr language-pack-kde-fr language-selector
chroot:/# apt-get install console-data
chroot:/# dpkg-reconfigure console-data
chroot:/# apt-get remove --purge ubiquity pidgin gparted gnome-terminal xterm serpentine sound-juicer synaptic tomboy
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
DEPLACEMENT DE FICHIERS ET THEMES
KERNEL
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
DEMARRAGE EN FRANCAIS
Pour ne pas à avoir à sélectionner la langue au démarrage
~/livecd$ echo "fr" | sudo tee extract/isolinux/lang
fr
~/livecd$ cat extract/isolinux/lang
fr
AJOUT DES THEMES
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.
~/livecd$ sudo cp -ra /home/traaf/.themes/Murrina-Fruits/ /home/traaf/livecd/squashfs/usr/share/themes/
~/livecd$ sudo cp -ra /home/traaf/.themes/MurrineRounded/ /home/traaf/livecd/squashfs/usr/share/themes/
~/livecd$ sudo cp -a /home/traaf/Images/backgrounds/ubunlight-or_by_harrypopof.png /home/traaf/livecd/squashfs/usr/share/backgrounds/
~/livecd$ sudo chown -R root:root /home/traaf/livecd/squashfs/usr/share/themes
~/livecd$ sudo chown -R root:root /home/traaf/livecd/squashfs/usr/share/backgrounds
~/livecd$ 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
~/livecd$ 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
~/livecd$ 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 A JOUR INITRD
Indispensable pour que la modification de l'utilisateur et des droits s'appliquent au boot
~/livecd$ sudo chroot squashfs
chroot:/# sudo update-initramfs -k all -u
chroot:/# exit
exit
~/livecd$ sudo cp squashfs/boot/initrd.img-2.6.22-14-generic extract/casper/initrd.gz
RECONTRUCTION DU SQUASHFS
~/livecd$ sudo chmod a+w /home/traaf/livecd/extract/casper/filesystem.manifest
~/livecd$ sudo chroot /home/traaf/livecd/squashfs dpkg-query -W --showformat='${Package} ${Version}\n' > $CD/extract/casper/filesystem.manifest
~/livecd$ sudo chmod go-w /home/traaf/livecd/extract/casper/filesystem.manifest
~/livecd$ sudo chmod a+w /home/traaf/livecd/extract/casper/filesystem.manifest-desktop
~/livecd$ sudo chroot /home/traaf/livecd/squashfs dpkg-query -W --showformat='${Package} ${Version}\n' > /home/traaf/livecd/extract/casper/filesystem.manifest-desktop
~/livecd$ sudo chmod go-w /home/traaf/livecd/extract/casper/filesystem.manifest-desktop
~/livecd$ cd squashfs
~/livecd/squashfs$ sudo mksquashfs . ../extract/casper/filesystem.squashfs
~/livecd/squashfs$ cd ..
~/livecd$ 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
...
~/livecd$ sudo chown traaf:traaf nectarin-i386.iso
TEST DE L'IMAGE ISO ET REGLAGES DU PROFIL
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
AJOUT DES INFOS PROFIL
je décompresse mon dossier utilisateur dans un repertoire que je nomme profil, et je recopie sont contenu dans /etc/skel
~/livecd$ sudo cp -r profil/. squashfs/etc/skel
~/livecd$ sudo chown -R root:root /etc/skel
RECONSTRUCTION DE LA NOUVELLE ISO
On supprime le fichier squashfs existant
~/livecd$ sudo rm extract/casper/filesystem.squashfs
Et on le recompresse, avant de recréer une image iso.
Le résultat est très satisfaisant, et une fois installé sur clé USB, le système est très fluide, ne consomme que 103 Mo de RAM au démarrage, et l'utilisation du moteur GTK2 murrine apporte vraiment une impression de légèreté, si vous le l'avez pas encore testé, je vous le recommande très vivement, les temps de réaction sont très courts et l'affichage est très agréable
Un aperçu de ce que ça donne :