Le contenu de ce billet est sous double licence car il provient du wiki d'ubuntu-fr :
CC BY-SA et GNU FDL
La formidable communauté francophone d'Ubuntu a décidé de créer une version française de la version "Desktop" de la Ubuntu. Les différences principales avec la version officielle sont :
- Le menu de boot du cd est directement en français, ainsi que le clavier.
- L'ensemble des paquets de support linguistiques pour le français sont installés
- Les exemples ont été traduits, et les vidéos sous-titrées
Désigné volontaire pour créer la version francisée de la Ubuntu 8.10. Version qui sera gravée sur les CD en vente pour l'association ubuntu-fr (association qui ne vit pas de l'air du temps, ni d'une quelconque aide extérieure et qui est composée de gentils bénévoles). Me voilà attelé à la remise à plat des différents didacticiels utilisés pour la version précédente (8.04). Exercice que j'affectionne, faire de la synthèse de connaissance 
Après pas mal de remaniements, beaucoup de simplifications, correction d'erreurs et insertion de lignes de commandes finement pensées
voici la version 1.0 de ce didacticiel. Il est bien évidemment disponible sur le wiki d'ubuntu-fr. Un grand merci à tout ceux qui ont travaillé précédemment sur ce projet de francisation ou qui ont contribué directement ou indirectement à l'achèvement de cette documentation.
Création du live-CD Ubuntu 8.10 français
L'ensemble de ces opérations a été testé et validé depuis une Ubuntu 8.04 mais doit être valable également depuis une Ubuntu 8.10.
Préparation
Installation des outils nécessaires
Le paquet squashfs est nécessaire afin de pouvoir décompresser le système de fichier embarqué sur le live-cd. Le paquet mkisofs servira à la génération de l'iso finale.
sudo apt-get install squashfs-tools mkisofs
Placer l'iso de la Ubuntu 8.10 version desktop dans le répertoire personnel
cd ~
wget http://cdimage.ubuntu.com/daily-live/current/intrepid-desktop-i386.iso
Nota : ce lien est à adapter bien évidemment afin de récupérer l'image officielle.
Création d'un répertoire de travail :
mkdir ~/live
cd ~/live
Utilisation de l'image iso récupérée
Nous allons monter l'image iso, afin de pouvoir en parcourir son contenu, et nous faisons une copie locale des fichiers de l'iso afin de pouvoir les modifier.
Extraction du contenu de l'iso :
mkdir mnt
sudo mount -o loop ~/intrepid-desktop-i386.iso mnt
mkdir extract-cd
rsync --exclude=/casper/filesystem.squashfs -a mnt/ extract-cd
Nota : nom de l'iso à adapter éventuellement
Dans la foulée nous décompressons le système de fichier embarqué dans l'iso afin de pouvoir y faire des modifications. Ce système sera celui sous lequel l'utilisateur se retrouve lorsqu'il arrive sur la session de test du live-cd. Donc c'est dans ce dernier qu'il faut agir pour ajouter des paquets, changer le fond d'écran etc.
Extraction du système :
mkdir edit
sudo unsquashfs -d edit/. -f mnt/casper/filesystem.squashfs
Pour finir, on démonte l'iso :
sudo umount mnt
Le Chroot
Nous allons entrer dans le système de fichier contenu dans le live-cd (et que nous avons décompressé). Mais plus encore nous allons le lancer, faire comme si le live-cd était lancé et nous y connecter. C'est ce à quoi sert un chroot. Nous allons donc nous retrouver dans l'environnement du live-cd et chacune de nos actions va avoir des répercutions sur l'iso que nous génèrerons au final. Nous allons également monter quelques répertoires afin de nous donner accès au net depuis notre chroot.
Quelques réglages préalables puis passage en chroot pour personnaliser le système :
sudo cp /etc/resolv.conf edit/etc/
sudo cp /etc/hosts edit/etc/
sudo mount --bind /dev/ edit/dev
sudo chroot edit /bin/bash
mount -t proc none /proc
mount -t sysfs none /sys
export HOME=/root
Mises à jour des dépôts
Nous sommes dans le chroot. La première étape est de sauvegarder le fichier des dépôts du livecd et d'ajouter les dépôts universe afin de pouvoir récupérer certains paquets (nous pourrions également ajouter les dépôts multiverse). Une fois ces modifications faites, on met à jour la liste des paquets disponibles (apt-get update).
Modification des dépôts :
cp -a /etc/apt/sources.list /etc/apt/sources.sos
echo "deb http://archive.ubuntu.com/ubuntu intrepid universe" >> /etc/apt/sources.list
echo "deb http://archive.ubuntu.com/ubuntu intrepid-updates universe" >> /etc/apt/sources.list
echo "deb http://archive.ubuntu.com/ubuntu intrepid-security universe" >> /etc/apt/sources.list
apt-get update
Suppression des paquets inutiles
Afin de libérer de la place on supprime les paquets linguistiques qui sont déjà installés.
apt-get remove --purge $(dpkg -l | awk '{print $2}' | egrep "language-pack|aspell-|gimp-help-|language-support-|myspell-|language-pack-gnome-|gimp-help-|thunderbird-locale-" | xargs)
Installation des paquets français
Maintenant on ajoute les paquets linguistiques pour le français :
apt-get install language-pack-fr language-pack-fr-base hunspell-fr gimp-help-fr language-support-fr language-support-translations-fr language-support-writing-fr thunderbird-locale-fr language-pack-gnome-fr language-pack-gnome-fr-base manpages-fr manpages-fr-dev openoffice.org-hyphenation openoffice.org-help-fr openoffice.org-l10n-fr wfrench gimp-help-common gimp-help-en hunspell
Suppression des .mo inutiles
On continue notre nettoyage en installant localepurge qui va permettre de supprimer toutes les locales installées pour ne garder au final que celle pour le français.
apt-get install localepurge
Ne sélectionner que fr, fr_FR, fr_fr@euro et fr_FR.UTF-8
On lance la purge et on supprime le paquet :
localepurge
apt-get remove --purge localepurge
Suppression des docs GNOME et des pages de manuels inutiles
Toujours dans notre recherche de place on supprime les fichiers de documentations et de manuel non français.
find /usr/share/gnome/help/ -depth -mindepth 2 -maxdepth 2 -type d ! \( -name "fr*" -o -name "C" -o -name "en*" -o -name "us" \) | xargs rm -rf
find /usr/share/man/ -depth -maxdepth 1 -mindepth 1 -type d ! \( -name "fr*" -o -name "man?" \) | xargs rm -rf
Modifier le nom d'utilisateur
Lorsque vous être sur le livecd, vous êtes connecté comme étant Live session user. Nous remplaceons ça par Session CD 
sed -i "s/Live session user/Session CD/g" /etc/casper.conf
sed -i "s/Live session user/Session CD/g" /usr/share/initramfs-tools/scripts/casper
Nota : la re-génération de initrd est nécessaire afin que soit prise en compte cette modification.
Marque-page Firefox
Firefox 3 a ses menus en français, mais les marque-pages sont ceux de la version anglaise. Nous allons donc récupérer une archive française de firefox et en extraire les marque-pages en remplacement de ceux existant.
(cd /tmp && wget ftp://ftp.mozilla.org/pub/firefox/releases/3.0.3/linux-i686/fr/firefox-3.0.3.tar.bz2 \
&& tar jxvf firefox-3.0.3.tar.bz2 && cp -a firefox/defaults/profile/bookmarks.html /etc/firefox-3.0/profile/bookmarks.html \
&& rm -rf firefox*)
Les exemples en français
Nous remplaçons ici les exemples du live-cd officiel par ceux traduits par la communauté ubuntu-fr :
cd /etc/skel/Examples
rm *
wget http://XXX.XXXXX.XXX/Exemples2.tar.bz2
tar xvf Exemples2.tar.bz2
rm Exemples2.tar.bz2
cd
Nota : cette procédure est donnée à titre d'exemple 
Autres...
On corrige le nom du dossier Example en Exemple :
mv /etc/skel/Examples /etc/skel/Exemples
sed -i 's/Desktop/Bureau/g;s/Examples/Exemples/g' /usr/share/initramfs-tools/scripts/casper-bottom/10adduser
Initrd
Là nous mettons à jour le initrd afin de prendre en compte les changements fait plus haut dès qu'on touche à casper :
mkinitramfs -o /initrd.gz 2.6.27-7-generic
Nota : il faudra (voir plus loin) faire prendre en compte ce nouvel initrd par le noyau du live-cd. Sinon cela ne sert à rien 
Vérifications
Recherche des logins dont l'uid est supérieur ou égal à 1000
grep '^^:*:^:*:1-90-90-90-9:' /etc/passwd
grep '^^:*:^:*:120-90-90-90-9:' /etc/passwd
Si les commandes précédentes renvoient quelque chose, il faut forcer l'uid à une valeur plus faible, sinon le live-cd ne démarrera pas :
usermod -u 500 $login
Sortie du chroot et nettoyage
On a fini les modifications donc on en sort proprement en enlevant nos traces, qui sinon se retrouveront sur le système final. Comme par exemple les paquets téléchargés qui vont gonfler inutilement la taille de notre système au final.
apt-get clean
rm -rf /tmp/*
rm /etc/resolv.conf
rm /etc/hosts
umount /proc
umount /sys
rm /etc/apt/sources.list
mv /etc/apt/sources.sos /etc/apt/sources.list
exit
sudo umount edit/dev
On récupère le initrd.gz
On récupère le initrd.gz précédemment compilé et on le place au bon emplacement afin qu'il soit utilisé par le noyau du live-cd
sudo mv edit/initrd.gz extract-cd/casper/
Pour gfxboot
Ici nous allons modifier le tout premier écran qui apparait lorsque vous démarrez sur le live-cd. Nous modifions le fichier langlist afin qu'il ne propose plus le choix de toutes les langues et que celle choisi automatiquement soir le français. De plus nous créons le fichier lang qui fait en sorte que la langue d'affichage des menus soit le français.
sudo su
cd extract-cd/isolinux
echo "fr" > langlist
echo "fr" > lang
exit
Le bug #291492 empêche d'avoir les menus d'aides en français
Création du CD
Pour le manifest
chmod +w extract-cd/casper/filesystem.manifest
sudo chroot edit dpkg-query -W --showformat='${Package} ${Version}\n' > extract-cd/casper/filesystem.manifest
sudo cp extract-cd/casper/filesystem.manifest extract-cd/casper/filesystem.manifest-desktop
sudo sed -i '/ubiquity/d' extract-cd/casper/filesystem.manifest-desktop
Création du squashfs
Nous allons maintenant créer l'image de notre système de fichier que nous avons personnalisé :
sudo rm extract-cd/casper/filesystem.squashfs
sudo mksquashfs edit extract-cd/casper/filesystem.squashfs -nolzma
Nota : la première commande peut retourner une erreur (aucun fichier). C'est juste pour s'assurer qu'on est prêt pour la deuxième commande.
Création du md5sum
Ici on reconstruit le fichier md5sum.txt qui sert lors de l'auto-vérification du cd depuis le menu de boot.
sudo -s
rm extract-cd/md5sum.txt
(cd extract-cd && find . -type f -not -name md5sum.txt -not -path '*/isolinux/*' -print0 | xargs -0 -- md5sum > md5sum.txt )
exit
Création de l'image iso finale
Il est temps de créer notre iso :
cd extract-cd
sudo mkisofs -r -V "Intrepid Fr" -cache-inodes -J -l -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -o ../ubuntu-8.10-desktop-i386-fr.iso .
Conclusion
Vous pouvez tester votre iso de la manière que vous souhaitez. Par gravure sur un cd ou bien dans une machine virtuelle (qemu/vmware/virtualbox etc.), méthode conseillée afin de vérifier votre cd avant de graver pour rien 