Cette page n'a pas encore d'étiquettes.
Apportez votre aide…

Ceci est une ancienne révision du document !


Version Hoary

Traduit par FredB

Nous expliquerons ici comment construire un LiveCD Ubuntu personnalisé, basé sur la nouvelle infrastructure du LiveCD (le premier utilisé dans le cycle de développement de Hoary Hedgehog). La méthode consistera en la modification d'un CD déja existant et sa reconstruction. Cette méthode est moins souple, mais évite la plupart des difficultés (totalement inutiles) de la construction d'un CD à partir de rien. Pourquoi? Et bien, parce que certaines personnes souhaitent créer un Live CD spécialisé afin de disposer d'une application particulière ou dans une langue spécifique. Si vous pensez à d'autres choses qui peuvent être faites, mettez le dans ce Wiki.

  • Environ 3 gigaoctets d'espace disque disponible
  • Les outils cloop (paquet cloop-utils) afin de compresser et de décompresser l'image du système de fichier
  • mkisofs
  • Le module cloop (donc noyau Ubuntu à partir du 2.6.9-7)
  • Beaucoup d'espace de Swap (3 à 5 Go). Vous devez être en mesure de stocker deux fois dans le Swap le système de fichier extrait de l'image. Sinon la procédure de recompression échouera.

Si vous n'avez pas assez d'espace mémoire, faites :

sudo dd if=/dev/zero of=/tmp/swap bs=1M count=3000
sudo mkswap /tmp/swap
sudo swapon /tmp/swap

Copiez-collez:

sudo apt-get install cloop-utils mkisofs
echo "Kernel version is" $(dpkg-query -W --showformat '${Version}' linux-image-$(uname -r))

Dans un premier temps vous devrez extraire l'image du système de fichier compressé (Cloop, ainsi nous serons en mesure de la personnaliser) ce qui habituellement signifie parametrer et installer des logiciels dont nous souhaiterions disposer à partir du LiveCD, préparer quelques une des configurations et bien plus encore. Un fois que tout cela sera fait nous recréerons un nouveau LiveCD. Simple.

NOTE: Avant de commencer assurez vous que votre variable locale est définie à C (en évitant Unicode – mais ne le faites pas partout sauf si vous savez ce que vous faites), cela rend juste la vie plus facile:

$ export LC_ALL=C

Récupérez une image du CD à partir de http://cdimage.ubuntu.com/ et mettez la dans un répertoire vide. Assurez vous que c'est une image Hoary (Warty utilise un autre système).

1. Montez l'image en tant que périphérique local de type boucle:

$ mkdir mnt
$ sudo mount hoary-live-i386.iso mnt -o loop

2. Extrayez tout, à l'exception du systeme de fichier compressé, vers un répertoire temporaire:

$ rsync --exclude=/casper/filesystem.cloop -a mnt/ extracted_cd

3. Là, nous décompressons et nous extrayons le système de fichier compressé:

$ extract_compressed_fs mnt/casper/filesystem.cloop > extracted_fs

(Allez prendre un thé, parcequ'il y en a pour un moment)

4. Après tout ça nous en avons fini avec le CD original et nous pouvons le démonter (et peut-être l'effacer si vous manquez d'espace disque):

$ sudo umount mnt

Afin de personnaliser nous montons le système de fichier que nous venons de décompresser, utilisons “chroot” afin de faire nos modifications puis nous remettons tout en place.

Preparation du “chroot”

1.Afin de monter le système de fichier décompressé nous faisons:

$ sudo mount extracted_fs mnt -o loop

2.Monter “proc” et “sysfs” peut également être une bonne idée:

$ sudo mount -t proc proc mnt/proc
$ sudo mount -t sysfs sysfs mnt/sys

3.Si vous souhaitez transférer des données depuis votre répertoire personnel, la méthode la plus simple consiste à faire un montage lié:

$ sudo mount -o bind /home mnt/home

NOTE: évidemment préserver l'espace disque sur le système de fichier compressé est une bonne idée, aussi lors de ces personnalisations quelques parties du système de fichier peuvent être temporairement montées avec “tmpfs” et démontées plus tard. Ainsi une grande quantité d'espace disque peut être préservée. Quelques unes des bonnes cibles pour ces montages sont var/log var/run var/cache/apt var/lib/apt tmp. Rappelez vous juste de les démonter avant de démonter extracted_fs!!!

Support de langues (hoary)

Afin d'ajouter le support d'une langue spécifique au liveCD, suivez la section "Mise à jour de paquetages spécifiques" ci-dessous afin d'installer le “language-support” approprié et les paquetages “language-pack” désirés pour les différentes langues.

Vous pouvez pré-sélectionner une langue au boot en suivant la procédure suivante: éditez extracted_cd/isolinux/isolinux.cfg afin d'ajouter preseed/locale=foo_BAR à la section APPEND. Cela évitera la section de séléction de la langue dans l'installeur, et presumera que vous avez installé les paquetages de langue et de paramètres régionaux adéquates.

Par exemple, afin de supporter le grec, installez language-pack-el, language-support-el, et preseed/locale=el_GR dans isolinux.cfg. Les fichiers installés n'ont générallement besoin que du language(en, es, el, etc.) tandis que isolinux.cfg nécessite le paramètre régional complet (en_US, en_GB, etc.)

Afin de définir également le clavier par défaut, ajoutez preseed/locale=en_US kbd-chooser/method=us à isolinux.cfg.

Support de langues (breezy)

Comme précédemment, à l'exception qu'il faut remplacer preseed/locale par debian-installer/locale, et installer language-pack-gnome-toto-base ou language-pack-kde-toto-base en plus des paquetages ci-dessus.

Mise à jour de paquetages spécifiques

1.Si vous avez besoin de tester un paquetage supplémentaire sur un live CD, c'est facile:

$ sudo chroot mnt/ /bin/sh
# cd dir-holding-all-packages/
# dpkg -BOGiE *.deb

Cela ne fera que mettre à jour les paquetages déjà présent sur le liveCD, avec la version la plus récente disponible.

Installation de paquetages supplémentaires

Le but pour un LiveCD est de mettre à disposition une application qui n'est normalement pas installée sur le CD.

NOTE: L'utilisateur par défaut est créé au démarrage, si vous souhaitez copier un fichier vers le répertoire personnel de cet utilisateur vous devez le placer dans mnt/etc/skel.

1.Copiez resolv.conf (contenant des addresses DNS déja résolues, car le DNS ne fonctionnent pas dans le “chroot”):

$ sudo cp /etc/resolv.conf mnt/etc

2.Si les paquetages que vous souhaitez ajouter ne sont pas disponibles avec le fichier source.list par défaut, vous devez le modifier ou copier le votre:

$ sudo vi mnt/etc/apt/sources.list

3.Finalement, on se place dans le “chroot” et on installe quelques paquetages, en mettant à jour le cache apt, et en s'assurant de le purger au lieu de juste effacer ce dont on souhaite de débarrasser:

$ sudo chroot mnt /bin/bash
# apt-get update
# apt-get install banana deadly-weapon
# apt-get clean
# dpkg --purge foobaz
# exit

4.On régénère le “manifest” afin qu'il reflète tous les changements que l'on a apporté:

$ sudo chroot mnt dpkg-query -W --showformat='${Package} ${Version}\n' > extracted_cd/casper/filesystem.manifest

Trouver les paquetages à supprimer

Evidemment supprimer des paquetages est dangereux ; vous procédez à vos risques et périls. Quoiqu'il en soit, vous pouvez trouver les plus grands paquetages (et parfois ceux qu'il faut supprimer si vous avez besoin d'espace) avec cette commande executée dans le “chroot”:

dpkg-query -W --showformat='${Installed-Size;10} ${Package}\n' | sort -gr | less 

A FAIRE :

* Aider à supprimer des trucs – liste de paquetages 'recommandés' à supprimer, incluant les languages supplémentaires et tout ce qui prend beaucoup d'espace ainsi vous pourrez mettre vos propres applications sur le CD. Vous pouvez voir ce que le “GNOME liveCD” supprime à: http://cvs.gnome.org/viewcvs/livecd-project/livecd.conf?view=markup

Personnalisations GNOME

Une liste des personnalisations spécifiques à GNOME (modifications de clés gconf, modifications de couleurs de GDM, etc.) est sur cette page wiki.

Fermeture du “chroot”

Assurez vous de démonter tout ce qui à été monté lors de la création du “chroot” (tmp?? var/log??):

$ sudo umount mnt/proc
$ sudo umount mnt/sys
$ sudo umount mnt

Afin de créer un écran de démarrage personnalisé:

  1. Créez une image de 640 pixels de large et ayant une hauteur située entre 200 et 300 pixels, en 16 couleurs. (Vous pouvez convertir en 16 couleurs dans GIMP avec le menu "Image→Mode→Indexé… " déselectionnez "dithering" lors de la conversion, (pour un meilleur résultat.). Comme point de départ vous pouvez utiliser Inkscape et ce fichier exemple.
  1. Sauvez l'image en BMP, ou si ce n'est pas possible en .png et lancez convert splash.png splash.bmp
  1. Convertissez le BMP en format RLE : bmptoppm < splash.bmp | ppmtolss16 > splash.rle Sivous n'avez pas ces outils, bmptoppm est dans le paquetage netpbm, et ppmtolss16 is dans le paquetage syslinux.
  1. Copiez le résultat (splash.rle) dans extracted_cd/isolinux/

Ok, voici le blem: si vous avez effacé des fichiers, les blocs correspondants dans extracted_fs ne sont pas remis à zéro. Aussi pour le programme create_compressed_fs (celui qui compresse l'image extracted_fs) concerné, les fichiers sont toujours là. Au final, les fichiers que vous avez effacés ne vont pas réellement agrandir l'espace disque libre :(.

Aussi la méthode simple consiste à copier l'ancienne image dans une nouvelle:

$sudo mkdir mnt.new 
$sudo dd if=/dev/zero of=extracted_fs.new bs=1M count=2000 
$sudo mkfs.ext2 extracted_fs.new 
$sudo mount -o loop,noatime,nodiratime extracted_fs mnt 
$sudo mount -o loop,noatime,nodiratime extracted_fs.new mnt.new 
$sudo rsync -avx --progress mnt/. mnt.new/. 
$sudo umount mnt mnt.new 

Maintenant, vous avez une nouvelle image, extracted_fs.new, les deux sont defragmentés et mises à zero.

OK, tout est fait. Nous n'avons plus qu'à reconstruire le CD.

  1. Compressez le système de fichier et remettez le sur le CD (une autre tasse de thé s'avère nécessaire):
$ sudo create_compressed_fs extracted_fs.new 65536 > extracted_cd/casper/filesystem.cloop

TRUC: Si vous souhaitez un meilleur compression (MattZimmerman: Je n'ai pas trouvé mieux –le meilleur afin de produire une compression significativement plus élevée, mais son approche est discutable), mais BEAUCOUP PLUS LENT (5-fois, au moins), faîtes:

$ sudo create_compressed_fs --best extracted_fs.new 65536 > extracted_cd/casper/filesystem.cloop
  1. Générez le fichier md5sum.txt :
$ (cd extracted_cd && find . -type f -print0 | xargs -0 md5sum > md5sum.txt)
  1. Là nous reconstruisons le CD. NOTE : Cette procedure est spécifique aux LiveCD pour plateforme Intel x86 (i386) et x86_64 (amd64). D'autre architectures, comme les PowerPC et les IA64, auront besoin d'autres lignes de commande.
$ sudo mkisofs -r -V "Custom Ubuntu 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 custom-hoary-live-i386.iso extracted_cd

Sur PowerPC, download http://people.ubuntu.com/~cjwatson/hfs.map, et utilisez la commande suivante:

$ sudo mkisofs -r -V "Custom Ubuntu Live CD" \
            --netatalk -hfs -probe -map hfs.map \
            -part -no-desktop \
            -hfs-bless extracted_cd/install \
            -hfs-volid Ubuntu/PowerPC_hoary \
            -o custom-hoary-live-powerpc.iso extracted_cd

Je me suis aperçu que la commande ci-dessus ne créait pas de CD bootable, en googlant en rond pendant 5 jours j'ai trouvé ça et maintenant ça boot :

$ sudo mkisofs -o new_image.iso -chrp-boot \
        -U -part -hfs -T -r -l -J -A "application_id" \
        -sysid PPC -V "volid" -volset 4 -volset-size 1 \
        -volset-seqno 1 -hfs-volid "volume_name_hfs" \
        -hfs-bless extracted_cd/install \
        -map hfs.map -no-desktop -allow-multidot extracted_ppc_cd

Enfin nous y sommes!

Le LiveCD est basé sur l'installeur Ubuntu et utilise son infrastructure afin d'amorcer le système. Un composant additionnel de l'installeur (casper) est utilisé afin de charger l'environnement Live après que l'amorçage soit accompli. Peut-être pouvez-vous trouver plus d'informations ici: LiveCDDesign, LiveCD (en anglais). Ou regardez dans le code en téléchargeant casper et l'installeur debian (apt-get source casper debian-installer).

NOTE: aucune modification du code source n'est nécessaire afin de personnaliser l'environnement (exemple, installation de paquetages supplémentaires). Ceci est purement à titre informatif.

  • installation/custom_livecd.1179755800.txt.gz
  • Dernière modification: Le 18/04/2011, 14:49
  • (modification externe)