{"id":500,"date":"2009-05-15T14:00:43","date_gmt":"2009-05-15T12:00:43","guid":{"rendered":"http:\/\/linux.leunen.com\/?p=500"},"modified":"2009-05-15T14:00:43","modified_gmt":"2009-05-15T12:00:43","slug":"customiser-le-livecd-dubuntu","status":"publish","type":"post","link":"https:\/\/www.leunen.com\/linux\/2009\/05\/customiser-le-livecd-dubuntu\/","title":{"rendered":"Customiser le liveCD d&rsquo;Ubuntu"},"content":{"rendered":"<p>En ce qui me concerne, j&rsquo;utilise les liveCD pour installer Ubuntu, pour partitionner un disque, cr\u00e9er ou recharger une image disque, r\u00e9cup\u00e9rer des fichiers effac\u00e9s par erreurs&#8230; Autrement dit de la maintenance principalement. Malheureusement, sur le liveCD d&rsquo;Ubuntu, il n&rsquo;y a aucun des outils dont je me sers le plus. Pas de PartImage, de PhotoRec&#8230;<br \/>\nIl existe un certain nombre de LiveCD sp\u00e9cialement pr\u00e9vus pour cela (Ubuntu Rescue Remix par exemple). Alors pourquoi vouloir cr\u00e9er le sien? Pour le plaisir de le faire soi-m\u00eame et d&rsquo;apprendre quelque chose. Tout simplement.<br \/>\nLa technique que j&rsquo;ai utilis\u00e9e est bas\u00e9e principalement sur l&rsquo;article correspondant de la documentation du site Ubuntu-fr mais adapt\u00e9 \u00e0 mes besoins et \u00e0 Jaunty.<\/p>\n<p>La premi\u00e8re chose \u00e0 faire est de t\u00e9l\u00e9charger l&rsquo;image iso d&rsquo;Ubuntu et de la sauvegarder dans le r\u00e9pertoire <em>~\/tmp<\/em> (par exemple):<\/p>\n<pre class=\"codesource\">\r\n$ wget -c http:\/\/ftp.belnet.be\/mirror\/ubuntu.com\/releases\/jaunty\/ubuntu-9.04-desktop-i386.iso\r\n<\/pre>\n<p>Ensuite, on cr\u00e9e quelques r\u00e9pertoires dont nous aurons besoin et on installe <em>squashfs<\/em> qui est un syst\u00e8me de fichiers en lecture seule souvent utilis\u00e9 avec les liveCd :<\/p>\n<pre class=\"codesource\">\r\n$ mkdir ~\/tmp\/liveCD ~\/tmp\/customCD ~\/tmp\/customCD\/iso ~\/tmp\/customCD\/squashfs\r\n$ sudo aptitude install squashfs-tools\r\n<\/pre>\n<p>On monte l&rsquo;image dans <em>~\/tmp\/liveCD<\/em> et on copie le contenu du liveCD dans <em>~\/tmp\/customCD\/iso<\/em>:<\/p>\n<pre class=\"codesource\">\r\n$ sudo mount -o loop ~\/tmp\/ubuntu-9.04-desktop-i386.iso ~\/tmp\/liveCD\r\n$ sudo cp -av ~\/tmp\/liveCD\/. ~\/tmp\/customCD\/iso\r\n$ sudo umount ~\/tmp\/liveCD\r\n <\/pre>\n<p>De tous les fichiers pr\u00e9sents sur le liveCD, on peut sans probl\u00e8me se d\u00e9barrasser des fichiers en rapport avec l&rsquo;installation depuis Windows. Ce n&rsquo;est de toute fa\u00e7on pas notre but et cela fera un peu de place pour les paquets que nous allons rajouter:<\/p>\n<pre class=\"codesource\">  \r\n$ cd ~\/tmp\/customCD\/iso\r\n$ sudo rm -r pics autorun.inf wubi.exe\r\n<\/pre>\n<p>Nous allons maintenent copier le syst\u00e8me de fichier du liveCD sur le disque dur. Pour cela, il faut que le module <em>squashfs<\/em> soit activ\u00e9 pr\u00e9alablement:<\/p>\n<pre class=\"codesource\">\r\n$ sudo modprobe squashfs\r\n$ sudo mount -t squashfs -o loop ~\/tmp\/customCD\/iso\/casper\/filesystem.squashfs ~\/tmp\/liveCD\r\n<\/pre>\n<p>Comme je l&rsquo;ai dit plus haut, <em>sqaushfs<\/em> est un syst\u00e8me de fichiers dans lequel on ne peut pas \u00e9crire. On va donc le copier dans <em>~\/tmp\/customCD\/squashfs<\/em> de fa\u00e7on \u00e0 pouvoir le modifier:<\/p>\n<pre class=\"codesource\">\r\n$ sudo cp -a ~\/tmp\/liveCD ~\/tmp\/customCD\/squashfs\r\n$ sudo umount ~\/tmp\/liveCD\r\n<\/pre>\n<p>Et c&rsquo;est ici que les choses deviennent s\u00e9rieuses. Pour pouvoir faire les modifications que l&rsquo;ont veut dans le syst\u00e8me de fichiers du liveCD, on va passer en <em>chroot<\/em>. Cela signifie que l&rsquo;on va changer le r\u00e9pertoire racine (root) pour qu&rsquo;il corresponde \u00e0 notre syst\u00e8me de fichiers du liveCD.<br \/>\nIl faut aussi monter les r\u00e9pertoires <em>\/proc<\/em> et <em>\/sys<\/em>. On va copier aussi les configurations r\u00e9seau du syt\u00e8me h\u00f4te afin que celui-ci fonctionne dans le chroot. On pourra ainsi t\u00e9l\u00e9charger de nouveaux paquets \u00e0 installer:<\/p>\n<pre class=\"codesource\">\r\n$ sudo cp \/etc\/resolv.conf ~\/tmp\/customCD\/squashfs\/etc\/resolv.conf\r\n$ sudo cp \/etc\/hosts ~\/tmp\/customCD\/squashfs\/etc\/hosts\r\n$ sudo cp \/etc\/apt\/sources.list ~\/tmp\/customCD\/squashfs\/etc\/apt\/sources.list\r\n$ sudo chroot ~\/tmp\/customCD\/squashfs\r\n# sudo mount -t proc none \/proc\/\r\n# sudo mount -t sysfs none \/sys\/\r\n<\/pre>\n<p>Une fois ces commandes introduites, on se retrouve en root et l&rsquo;acc\u00e8s est restreint \u00e0 notre syst\u00e8me de fichiers <em>chroot\u00e9<\/em>.<br \/>\nLa premi\u00e8re chose \u00e0 faire est de mettre \u00e0 jour la liste des paquets et de mettre \u00e0 jour le syt\u00e8me:<\/p>\n<pre class=\"codesource\">\r\n# aptitude update\r\n# aptitude upgrade\r\n<\/pre>\n<p>On va maintenant supprimer les paquets dont on n&rsquo;a pas besoin, \u00e0 commencer par les paquets contenant les diff\u00e9rents langages. Affichons d&rsquo;abord la liste des paquets langages:<\/p>\n<pre class=\"codesource\">\r\n# dpkg-query -W --showformat='${Package}\\n' | grep language-pack\r\n  language-pack-bn\r\n  language-pack-bn-base\r\n  language-pack-de\r\n  language-pack-de-base\r\n  language-pack-en\r\n  language-pack-en-base\r\n  language-pack-es\r\n  language-pack-es-base\r\n  language-pack-fr\r\n  language-pack-fr-base\r\n  language-pack-gnome-bn\r\n  language-pack-gnome-bn-base\r\n  language-pack-gnome-de\r\n  language-pack-gnome-de-base\r\n  language-pack-gnome-en\r\n  language-pack-gnome-en-base\r\n  language-pack-gnome-es\r\n  language-pack-gnome-es-base\r\n  language-pack-gnome-fr\r\n  language-pack-gnome-fr-base\r\n  language-pack-gnome-pt\r\n  language-pack-gnome-pt-base\r\n  language-pack-gnome-xh-base\r\n  language-pack-pt\r\n  language-pack-pt-base\r\n  language-pack-xh\r\n  language-pack-xh-base\r\n<\/pre>\n<p>De toutes ces langues, on ne garde que l&rsquo;anglais et bien s\u00fbr le fran\u00e7ais:<\/p>\n<pre class=\"codesource\">\r\n# aptitude purge language-pack-bn language-pack-bn-base language-pack-de language-pack-de-base language-pack-es language-pack-es-base language-pack-gnome-bn language-pack-gnome-bn-base language-pack-gnome-de language-pack-gnome-de-base language-pack-gnome-es language-pack-gnome-es-base language-pack-gnome-pt language-pack-gnome-pt-base language-pack-gnome-xh language-pack-gnome-xh-base\r\n<\/pre>\n<p>Pour pouvoir ajouter tous les paquets que l&rsquo;on veut, il faut cependant encore faire de la place.<br \/>\nSupprimons <em>OpenOffice<\/em> qui n&rsquo;a rien \u00e0 faire sur un liveCD de m\u00eame que les <em>jeux Gnome<\/em>, <em>F-Spot<\/em>, <em>tomboy<\/em>,  <em>gnome-orca<\/em>,<em>RhythmBox<\/em> et <em>Gimp<\/em>.<\/p>\n<pre class=\"codesource\">\r\n# aptitude purge openoffice.org-base-core openoffice.org-calc openoffice.org-common openoffice.org-core openoffice.org-draw openoffice.org-emailmerge openoffice.org-gnome openoffice.org-gtk openoffice.org-help-en-gb openoffice.org-help-en-us openoffice.org-hyphenation openoffice.org-hyphenation-en-us openoffice.org-impress openoffice.org-l10n-common openoffice.org-l10n-en-gb openoffice.org-l10n-en-za openoffice.org-math openoffice.org-style-human openoffice.org-thesaurus-en-au openoffice.org-thesaurus-en-us openoffice.org-writer\r\n      \r\n# aptitude purge gnome-games gnome-orca tomboy f-spot rhythmbox gimp\r\n<\/pre>\n<p>Maintenant que nous avons lib\u00e9r\u00e9 de la place, nous pouvons installer les paquets et applications que nous voulons:<\/p>\n<pre class=\"codesource\">\r\n# aptitude install gftp partimage gparted gtkterm wireshark thunderbird ghex gnumeric encfs ccrypt vlc samba samba-common smbclient nautilus-share nautilus-open-terminal nautilus-gksu \r\n# aptitude clean\r\n<\/pre>\n<p>Notre syst\u00e8me de fichiers dans le liveCD ayant \u00e9t\u00e9 mis \u00e0 jour, on peut sortir du <em>chroot<\/em>.<\/p>\n<pre class=\"codesource\">\r\n# rm -rf \/tmp\/*\r\n# rm -f \/etc\/hosts \/etc\/resolv.conf\r\n# rm -f \/etc\/hosts\r\n# umount \/proc\r\n# umount \/sys\r\n# exit\r\n<\/pre>\n<p>Tant qu&rsquo;on y est, on peut modifier le langage par d\u00e9faut de fa\u00e7on \u00e0 ce que le liveCD d\u00e9marre en fran\u00e7ais:  <\/p>\n<pre class=\"codesource\">\r\n$ echo \"fr\" | sudo tee ~\/tmp\/customCD\/iso\/isolinux\/lang\r\n<\/pre>\n<p>Cr\u00e9ons maintenant la nouvelle image <em>iso<\/em>.<br \/>\nEffacement de l&rsquo;ancien <em>squashfs<\/em>:<\/p>\n<pre class=\"codesource\">\r\n$ sudo rm ~\/tmp\/customCD\/iso\/casper\/filesystem.squashfs\r\n<\/pre>\n<p>Cr\u00e9ation du nouveau syst\u00e8me de fichier:<\/p>\n<pre class=\"codesource\">\r\n$ sudo chmod a+w ~\/tmp\/customCD\/iso\/casper\/filesystem.manifest\r\n$ sudo chroot ~\/tmp\/customCD\/squashfs dpkg-query -W --showformat='${Package} ${Version}\\n' > ~\/tmp\/customCD\/iso\/casper\/filesystem.manifest\r\n$ sudo chmod go-w ~\/tmp\/customCD\/iso\/casper\/filesystem.manifest\r\n$ sudo chmod a+w ~\/tmp\/customCD\/iso\/casper\/filesystem.manifest-desktop\r\n$ sudo chroot ~\/tmp\/customCD\/squashfs dpkg-query -W --showformat='${Package} ${Version}\\n' > ~\/tmp\/customCD\/iso\/casper\/filesystem.manifest-desktop\r\n$ sudo chmod go-w ~\/tmp\/customCD\/iso\/casper\/filesystem.manifest-desktop\r\n<\/pre>\n<p>On recr\u00e9e le filesystem <em>squashfs<\/em>. Attention cette op\u00e9ration prend du temps:<\/p>\n<pre class=\"codesource\">\r\n$ sudo rm -f ~\/tmp\/customCD\/iso\/casper\/filesystem.squashfs\r\n$ sudo mksquashfs ~\/tmp\/customCD\/squashfs ~\/tmp\/customCD\/iso\/casper\/filesystem.squashfs\r\n<\/pre>\n<p>Mise \u00e0 jour du fichier md5sum.txt:<\/p>\n<pre class=\"codesource\">\r\n$ sudo rm ~\/tmp\/customCD\/iso\/md5sum.txt\r\n$ cd ~\/tmp\/customCD\/iso\r\n$ sudo bash -c \"find . -path .\/isolinux -prune -o -type f -not -name md5sum.txt -print0 | xargs -0 md5sum | tee md5sum.txt\"\r\n<\/pre>\n<p>Cr\u00e9ation du nouveau fichier <em>iso<\/em>. L&rsquo;endroit d&rsquo;o\u00f9 est lanc\u00e9 le programme <em>mkisofs<\/em> est important; veillons donc \u00e0 nous placer dans le bon r\u00e9pertoire:<\/p>\n<pre class=\"codesource\">\r\n$ cd ..\r\n$ sudo mkisofs -r -V \"Custom Ubuntu 9.04\" -b isolinux\/isolinux.bin -c isolinux\/boot.cat -cache-inodes -J -l -no-emul-boot -boot-load-size 4 -boot-info-table -o custom-ubuntu-9.04-i386.iso iso\r\n<\/pre>\n<p>Voil\u00e0, la nouvelle image est pr\u00eate. Il ne reste plus qu&rsquo;\u00e0 la graver sur un CD et \u00e0 la tester en vrai. Si quelque chose manquait, vous pouvez modifier le contenu du liveCD en reprennant les op\u00e9rations depuis le passage en <em>chroot<\/em>. <\/p>\n","protected":false},"excerpt":{"rendered":"<p>En ce qui me concerne, j&rsquo;utilise les liveCD pour installer Ubuntu, pour partitionner un disque, cr\u00e9er ou recharger une image disque, r\u00e9cup\u00e9rer des fichiers effac\u00e9s par erreurs&#8230; Autrement dit de la maintenance principalement. Malheureusement, sur le liveCD d&rsquo;Ubuntu, il n&rsquo;y a aucun des outils dont je me sers le plus. Pas de PartImage, de PhotoRec&#8230; [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[5],"tags":[],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/www.leunen.com\/linux\/wp-json\/wp\/v2\/posts\/500"}],"collection":[{"href":"https:\/\/www.leunen.com\/linux\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.leunen.com\/linux\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.leunen.com\/linux\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.leunen.com\/linux\/wp-json\/wp\/v2\/comments?post=500"}],"version-history":[{"count":7,"href":"https:\/\/www.leunen.com\/linux\/wp-json\/wp\/v2\/posts\/500\/revisions"}],"predecessor-version":[{"id":507,"href":"https:\/\/www.leunen.com\/linux\/wp-json\/wp\/v2\/posts\/500\/revisions\/507"}],"wp:attachment":[{"href":"https:\/\/www.leunen.com\/linux\/wp-json\/wp\/v2\/media?parent=500"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.leunen.com\/linux\/wp-json\/wp\/v2\/categories?post=500"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.leunen.com\/linux\/wp-json\/wp\/v2\/tags?post=500"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}