website view doc/handbook/hacking-livecd.html @ rev 259
receipts: add tazwok generated variables
author | Pascal Bellard <pascal.bellard@slitaz.org> |
---|---|
date | Sun Jan 25 11:45:39 2009 +0000 (2009-01-25) |
parents | |
children | a33277122930 |
line source
1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
2 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
3 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
4 <head>
5 <title>SliTaz Handbook - Hacking LiveCD</title>
6 <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1" />
7 <meta name="description" content="modifier generer le livecd manuellement ligne de commande" />
8 <meta name="expires" content="never" />
9 <meta name="modified" content="2007-12-03 12:30:00" />
10 <meta name="publisher" content="www.slitaz.org" />
11 <meta name="author" content="Christophe Lincoln"/>
12 <link rel="shortcut icon" href="favicon.ico" />
13 <link rel="stylesheet" type="text/css" href="book.css" />
14 </head>
15 <body bgcolor="#ffffff">
17 <!-- Header and quick navigation -->
18 <div id="header">
19 <div align="right" id="quicknav">
20 <a name="top"></a>
21 <a href="gen-livecd.html">Générer un LiveCD</a> |
22 <a href="index.html">Table des matières</a>
23 </div>
24 <h1><font color="#3E1220">SliTaz Handbook</font></h1>
25 </div>
27 <!-- Content. -->
28 <div id="content">
29 <div class="content-right"></div>
31 <h2><font color="#DF8F06">Hacking SliTaz LiveCD</font></h2>
33 <ul>
34 <li><a href="#intro">Introduction.</a></li>
35 <li><a href="#pre">Organisation et préparation.</a></li>
36 <li><a href="#add-files">Ajouter des fichiers dans l'ISO.</a></li>
37 <li><a href="#isolinux">Modifier la configuration d'isolinux.</a></li>
38 <li><a href="#memtest">Installer et utiliser Memtest86.</a></li>
39 <li><a href="#rootfs">Manipuler la racine du système Live.</a></li>
40 <li><a href="#gen-iso">Générer une image ISO bootable avec isolinux.</a></li>
41 </ul>
43 <a name="intro"></a>
44 <h3><font color="#6c0023">Introduction</font></h3>
45 <p>
46 <em>Hacking SliTaz LiveCD</em> ou comment s'amuser avec l'image ISO du LiveCD,
47 la modifier, la personnaliser et la reconstruire à la main. A noter que vous
48 avez aussi la possibilité de
49 <a href="gen-livecd.html">créer une saveur avec Tazlito</a> et cela de. Créer
50 sa propre image ISO bootable ne demande que peut de temps, les étapes à suivre
51 sont soigneusement décrites dans ce document et sont faciles à réaliser. La
52 manipulation de l'images ISO permet d'ajouter des nouveaux fichiers ou de
53 modifier les fichiers existants sur le cdrom. L'image ISO de SliTaz fait moins
54 de 30 Mb et un CD-R ou CD-RW classique fournit 700 Mb, il reste donc pas mal
55 de place, pour mettre par exemple, vos photos afin de les montrer en
56 <em>live</em> via SliTaz et un diaporama propulsé par le gestionnaire
57 d'images GQview. Le <em>hacking</em> de l'image ISO permet de modifier les
58 fichiers de configuration du chargeur de démarrage (<em>boot loader</em>) et
59 son image <em>splash</em> ou d'en utiliser un autre tel que GRUB. Vous pouvez
60 aussi facilement et directement ajouter des utilitaire tel que Memtest86 (outil
61 servant à tester la RAM d'une machine). En utilisant les mêmes techniques, il
62 est également possible de modifier le contenu du système en soit, cela demande
63 quelques manipulations supplémentaires et un peu plus de temps... libre.
64 </p>
65 <a name="pre"></a>
66 <h3><font color="#6c0023">Organisation et préparation</font></h3>
67 <p>
68 Pour commencer il faut définir l'endroit ou l'on va travailler, créer un
69 répertoire de travail et plusieurs sous-répertoires destinés à accueillir les
70 différents fichiers. Le <em>hacking</em> de l'ISO peut se faire depuis un
71 système SliTaz ou tous autres système GNU/Linux tels que Debian, Fedora,
72 PCLinuxOS, Slackware, etc. Si vous utilisez SliTaz en mode LiveCD (vous pouvez
73 retirer le cdrom une fois SliTaz lancée en RAM et graver votre nouvelle ISO),
74 nous vous conseillons d'utiliser un media USB pour conserver le travail, sinon
75 il sera perdu à l'arrêt du système. Pour travailler nous vous proposons
76 d'utiliser un répertoire <code>hacked/</code> que vous pouvez créer dans
77 un répertoire <code>/home/slitaz</code>, à la racine de votre espace
78 utilisateur, ou ailleurs si vous le désirez. Utiliser un répertoire
79 <code>/home/slitaz</code> vous permet de stocker une image ISO originale et
80 de créer en options un répertoire <code>src/</code> pour télécharger
81 d'éventuelles paquets sources. Toutes les étapes de <em>hacking</em> peuvent
82 se faire en lignes de commandes via un termial X tel que XTerm ou en mode
83 texte et un terminal Linux. A noter que nous vous conseillons de faire les
84 opérations en tant que <em>root</em> afin d'éviter tous problèmes de
85 permissions. Pour devenir administrateur (<em>root</em>), créer le
86 répertoire de travail dans <code>/home/slitaz/hacked</code> et se placer
87 dedans :
88 </p>
89 <pre>
90 $ su
91 # mkdir -p /home/slitaz/hacked
92 (# mkdir -p /home/slitaz/src)
93 # cd /home/slitaz/hacked
94 </pre>
95 <h4>Récupérer les fichiers contenus sur l'ISO</h4>
96 <p>
97 Maintenant que vous êtes dans le répertoire de travail, il faut créer la
98 racine de votre cdrom modifié et récupérer les fichiers contenu dans l'ISO
99 original du LiveCD. C'est à dire le noyau Linux (<code>bzImage</code>), le
100 système de fichiers compressé (<code>rootfs.gz</code>) et les fichiers du
101 chargeur de démarrage Isolinux. Pour récupérer ces fichiers vous avez deux
102 solutions, soit les prendre depuis un cdrom gravé, soit directement depuis
103 une image ISO local. Pour créer la racine de votre CD (<code>rootcd</code>)
104 et copier les fichiers depuis un périphérique cdrom reconnu comme
105 <code>/dev/cdrom</code> et monté sur <code>/media/cdrom</code> :
106 </p>
107 <pre>
108 # mount -t iso9660 /dev/cdrom /media/cdrom
109 # mkdir rootcd
110 # cp -a /media/cdrom/* rootcd
111 </pre>
112 <p>
113 Pour monter une image ISO en <em>loop</em> sur le répertoire temporaire
114 nommé <code>/tmp/loop</code> (avec l'image ISO <code>slitaz-cooking.iso</code>
115 préalablement téléchargée ou copiée), créer la racine du CD, copier les
116 fichiers et démonter l'image ISO :
117 </p>
118 <pre>
119 # mkdir /tmp/loop
120 # mount -o loop slitaz-cooking.iso /tmp/loop
121 # mkdir rootcd
122 # cp -a /tmp/loop/* rootcd
123 # umount /tmp/loop
124 </pre>
125 <p>
126 Voilà, tous les fichiers nécessaires devraient être présents dans le répertoire
127 <code>rootcd/</code>, pour vous en assurer, vous pouvez pouver lister
128 récursivement les fichiers via la commande <code>ls</code> :
129 </p>
130 <pre>
131 # ls -R rootcd
132 </pre>
133 <a name="add-files"></a>
134 <h3><font color="#6c0023">Ajouter des fichiers dans l'ISO</font></h3>
135 <p>
136 L'ajout de divers fichiers et répertoires dans l'image ISO consiste
137 simplement à copier des données à la racine du cdrom (<code>rootcd/</code>)
138 et à générer une nouvelle image. Les données ajoutées peuvent être classées
139 dans un ou des répertoires préalablement créés à la racine du CD. Une fois
140 l'image ISO gravée sur un CD-R/CD-RW vous pourrez utiliser SliTaz comme
141 avant, monter le cdrom sur <code>/media/cdrom</code> et naviguer dans vos
142 données graphiquement avec emelFM2, dans un terminal avec Clex ou en ligne de
143 commandes. Vos données seront aussi lisibles depuis tous les systèmes GNU/Linux,
144 BSD, et même... Windows.
145 </p>
146 <h4>Créer un ou des répertoires et copier des données</h4>
147 <p>
148 Pour créer et copier des fichiers vous pouvez commencer par utiliser la
149 ligne de commande et continuer graphiquement en tant que simple utilisateur.
150 Nous allons créer un répertoires <code>images/</code> en tant que <em>root</em>
151 et changer les permissions pour que tous les utilisateurs puissent écrire
152 dedans :
153 </p>
154 <pre>
155 # mkdir rootcd/images
156 # chmod 777 rootcd/images
157 </pre>
158 <p>
159 Maintenant qu'un nouveau répertoire existe en écriture pour tous, il faut le
160 remplir. Une fois que vous avez fini de copier vos données, il suffit de
161 <a href="#gen-iso">générer une nouvelle image ISO bootable</a>.
162 </p>
163 <a name="isolinux"></a>
164 <h3><font color="#6c0023">Modifier la configuration d'isolinux</font></h3>
165 <p>
166 Modifier la configuration d'isolinux vous permet de créer des entrées
167 personnalisées avec des options de <em>boot</em> prédéfinies, vous pouvez par
168 exemple ajouter un <code>label</code> lançant SliTaz avec les options
169 <code>lang=fr</code> et <code>kmap=fr_CH</code>. Au niveau graphisme, vous
170 pouvez facilement changer l'image <em>splash</em> s'affichant au démarrage.
171 L'application <code>isolinux</code> est le chargeur de démarrage
172 (<em>boot loader</em>) du LiveCD, il est fournit par le paquet Syslinux.
173 L'archive source de Syslinux fournit diverses applications dont le rôle est
174 de démarrer un système GNU/Linux. La version binaire <code>isolinux.bin</code>
175 est déstinée aux image ISO, ce chargeur de démarrage est simple, rapide et
176 facilement configurable via un fichier de configuration principale, éditable
177 graphiquement ou dans un terminal avec votre éditeur de texte préféré.
178 La syntaxe du fichier de configuration <code>isolinux.cfg</code> est facile
179 à comprendre, pour ajouter de nouvelles entrées il suffit de copier/coller
180 en utilisant le fichier original. Pour éditer graphiquement le fichier
181 <code>isolinux.cfg</code> avec Leafpad :
182 </p>
183 <pre>
184 # leafpad rootcd/boot/isolinux/isolinux.cfg &
185 </pre>
186 <h4>Fichier de configuration isolinux.cfg</h4>
187 <p>
188 Le fichier <code>isolinux.cfg</code>, fourni en standard sur le LiveCD de
189 SliTaz, commence par la valeur <code>display</code>, cette valeur permet
190 d'afficher tel quel un fichier texte ou d'afficher un fichier
191 (<code>isolinux.msg</code>) utilisant des caractères ASCII 24 et permettant
192 d'afficher du texte avec une image <em>splash</em>. La valeur
193 <code>default</code> défini le nom du <code>label</code> à démarrer par
194 défaut après le temps d'attente (<code>timeout</code>). <em>Timeout</em>
195 correspond au nombre de secondes à attendre avant de booter, vous pouvez le
196 mettre à 0, hôter la ligne pour démarrer instantanément ou choisir un temps
197 d'attente plus long tel que 80 s. Pour finir, le <code>prompt</code> peut
198 être désactivé via la valeur <code>0</code>, les valeurs F1, F2, F3
199 affichent des fichiers d'aides et F4 est un display au format texte :
200 </p>
201 <pre class="script">
202 display isolinux.msg
203 default slitaz
204 label slitaz
205 kernel /boot/bzImage
206 append initrd=/boot/rootfs.gz rw root=/dev/null vga=788
207 implicit 0
208 prompt 1
209 timeout 80
210 F1 help.txt
211 F2 options.txt
212 F3 isolinux.msg
213 F4 display.txt
214 </pre>
215 <p>
216 Exemple d'un label <code>slitazfr</code> que vous pouvez ajouter à l'orginal,
217 pour configurer directement la langue du système en français et avoir le
218 clavier Belge :
219 </p>
220 <pre class="script">
221 label slitazfr
222 kernel /boot/bzImage
223 append initrd=/boot/rootfs.gz rw root=/dev/null lang=fr kmap=be
224 </pre>
225 <p>
226 Une fois que vous avez fini de modifier le fichier de configuration, il ne
227 faut pas oublier d'enregistrer vos changements avant de
228 <a href="#gen-iso">générer une nouvelle image ISO bootable</a> avec isolinux.
229 </p>
230 <a name="memtest"></a>
231 <h3><font color="#6c0023">Installer et utiliser Memtest86</font></h3>
232 <p>
233 L'application memtest86 (92 ko) est un outil autonome de test de mémoire vive
234 (RAM). Memetes86 permet de tester en profondeur l'état des barrettes de RAM et
235 de déceler une quelconque défaillance. L'outil s'installe dans le répertoire
236 <code>boot/</code> de la racine du cdrom et se lance directement au démarrage
237 de la machine en tapant simplement <code>memtest</code> au prompt d'isolinux.
238 Direction <code>/home/slitaz/src</code> (si le répertoire n'existe pas :
239 <code>mkdir -p /home/slitaz/src</code>) pour télécharger les sources et les
240 désarchiver :
241 </p>
242 <pre>
243 # cd /home/slitaz/src
244 # wget http://www.memtest86.com/memtest86-3.3.tar.gz
245 # tar xzf memtest86-3.3.tar.gz
246 </pre>
247 <p>
248 Le paquet source de Memtest86 étant désarchivé (vous y trouverez un fichier
249 <code>README</code> en anglais donnant des informations sur l'outil), vous
250 allez pouvoir l'installer dans le <em>root CD</em> de votre ISO hackée. En
251 partant du principe que vous utilisez un répertoire de travail
252 <code>/home/slitaz/hacked</code>, nous allons copier le binaire précompilé
253 dans le répertoire <code>boot/</code> de la racine du CD :
254 </p>
255 <pre>
256 # cp memtest86-3.3/precomp.bin \
257 /home/slitaz/hacked/rootcd/boot/memtest
258 </pre>
259 <p>
260 Maintenant que le binaire est installé dans le <em>root CD</em>, il suffit
261 d'ajouter une entrée pour Memtest86 dans le fichier de configuration d'isolinux
262 et de <a href="#gen-iso">générer une nouvelle image ISO bootable</a>.
263 Direction <code>/home/slitaz/hacked</code> pour éditer le fichier
264 <code>isolinux.cfg</code> avec LeafPad par exemple :
265 </p>
266 <pre>
267 # cd /home/slitaz/hacked
268 # leafpad rootcd/boot/isolinux/isolinux.cfg &
269 </pre>
270 <pre class="script">
271 label memtest
272 kernel /boot/memtest
273 </pre>
274 <p>
275 Site web officiel de Memtest86 :
276 <a href="http://www.memtest86.com/">http://www.memtest86.com/</a>
277 </p>
278 <a name="rootfs"></a>
279 <h3><font color="#6c0023">Manipuler la racine du système Live</font></h3>
280 <p>
281 La modification du système Live vous permet par exemple d'ajouter rapidement
282 un nouvel utilisateur avec mot de passe, de personnaliser le graphisme ou
283 d'ajouter des commandes exécutées automatiquement au démarrage du LiveCD. Les
284 opérations nécessaires à la modification du système de fichier racine (
285 <em>root file system</em>) sont : extraire le système du fichier compresé
286 <code>rootfs.gz</code>, modfier, reconstruire l'image du système compressé
287 et générer une nouvelle ISO. En partant du principe que vous avez déjà
288 <a href="#pre">préparé votre répertoire de travail</a>, il faut commencer
289 par créer un répertoire destiné à contenir les fichiers du système modifiable.
290 Le système racine compressé étant nommé <code>rootfs.gz</code>, nous vous
291 proposons d'utiliser un répertoire <code>rootfs/</code> pour l'extraire.
292 Direction le répertoire de travail <code>hacked/</code>, création du
293 répertoire racine et copie du système compressé depuis le répertoire
294 <code>rootcd/boot/</code> (la racine du cdrom) :
295 </p>
296 <pre>
297 # cd /home/slitaz/hacked
298 # mkdir rootfs
299 # cp rootcd/boot/rootfs.gz rootfs
300 </pre>
301 <p>
302 Maintenant que vous avez une copie du système compressé, il suffit de le
303 décompresser et de le désarchiver avec <code>cpio</code>. Techniquement : Le
304 fichier <code>rootfs.gz</code> est une archive Cpio compressé avec LZMA ou
305 Gzip, elle est reconnue comme une image <code>initramfs</code> par le noyau
306 Linux. Lors du démarrage de la machine, le noyau se charge en mémoire et
307 décompresse l'image du système en mémoire vive pour finir par exécuter les
308 scripts d'initialisation. Pour extraire le système dans le répertoire
309 <code>rootfs/</code> et supprimer la copie désarchivée (Rappel : vous pouvez
310 copier/coller les commandes) :
311 </p>
312 <pre>
313 # cd rootfs
314 # (zcat rootfs.gz 2>/dev/null || lzma d rootfs.gz -so) | cpio -id
315 # rm rootfs rootfs.gz
316 </pre>
317 <p>
318 Le système est prêt à être modifié, vous pouvez lister les fichiers contenus
319 à la racine de votre système hackable en utilisant la commande <code>ls</code>.
320 </p>
321 <h4>Modifier un fichier</h4>
322 <p>
323 Pour faire simple et vous aider comprendre le principe, nous allons modifier
324 un fichier script dans le but d'ajouter deux commandes exécutées
325 automatiquement à chaque démarrage du LiveCD. La cible est :
326 <code>etc/init.d/local.sh</code>, il suffit de l'ouvrir avec votre éditeur de
327 texte préféré tel que Geany :
328 </p>
329 <pre>
330 # geany etc/init.d/local.sh &
331 </pre>
332 <p>
333 Nous allons ajouter une commande affichant un message et faisant dormir le
334 système 4 secondes (c'est juste pour se faire la main). Example de lignes à
335 ajouter au script déstiné aux commandes locales :
336 </p>
337 <pre class="script">
338 echo "* Hacked SliTaz version booting..."
339 sleep 4
340 </pre>
341 <h4>Reconstruire l'image du système compressée</h4>
342 <p>
343 Une fois les modifications terminées, vous pouvez reconstruire une image
344 compressée de votre système modifié en utilisant <code>find</code> pour
345 trouver les fichiers, <code>cpio</code> pour archiver, <code>lzma</code> ou
346 <code>gzip </code> pour compresser et des pipes <code>|</code> pour connecter
347 le tout. Cette commande doit être lancée depuis le répertoire racine du
348 système (<code>rootfs/</code>) et crée un fichier compressé
349 <code>rootfs.gz</code> dans le répertoire précédant :
350 </p>
351 <pre>
352 # find . -print | cpio -o -H newc | lzma e -si -so > ../rootfs.gz
353 Ou avec gzip :
354 # find . -print | cpio -o -H newc | gzip -9 > ../rootfs.gz
355 </pre>
356 <p>
357 Pour finir il suffit de copier votre système compressé dans le répertoire
358 <code>boot/</code> de la racine du CD et de <a href="#gen-iso"
359 >générer une nouvelle image ISO bootable</a> avec isolinux. Pour copier le
360 <em>rootfs</em> en écrasant l'actuel, direction le répertoire de travail :
361 </p>
362 <pre>
363 # cd ../
364 # cp -a rootfs.gz rootcd/boot
365 </pre>
366 <a name="gen-iso"></a>
367 <h3><font color="#6c0023">Générer une image ISO bootable avec isolinux</font></h3>
368 <p>
369 La suite de commandes permettant de créer une image avec le
370 <em>boot loader</em> <code>isolinux</code>, utilise l'application
371 <code>genisoimage</code> suivie de nombreuses options. Le nom de l'ISO est
372 spécifié au début, après l'option <code>-o</code> et le répertoire racine
373 (<code>rootcd/</code>) tout à la fin, après l'option
374 <code>-boot-info-table</code> :
375 </p>
376 <pre>
377 # genisoimage -R -o slitaz-hacked.iso -b boot/isolinux/isolinux.bin \
378 -c boot/isolinux/boot.cat -no-emul-boot -boot-load-size 4 \
379 -V "SliTaz-Hacked" -input-charset iso8859-1 -boot-info-table rootcd
380 </pre>
381 <p>
382 Si vous désirez vérifier le contenu de l'ISO avant gravage, il suffit
383 de monter l'image en <code>loop</code> et de lister les fichiers. Sur SliTaz
384 et la plupart des systèmes GNU/Linux, vous pouvez graver des images au
385 format ISO avec l'utilitaire <code>wodim</code> fournit par <a
386 href="utilities.html#cdrkit">cdrkit</a>.
387 </p>
388 <h4>Générer de nouvelles ISO via un script</h4>
389 <p>
390 Si vous testez plusieurs possibilités et que vous êtes amené à souvent générer
391 des nouvelles images ISO, vous aurez peut être envie de semi-automatiser les
392 opérations via un simple petit script SHell. Ce petit script peut être créé
393 en ligne de commandes ou édité graphiquement, mais il ne faut oublier de le
394 rendre exécutable. Vous pouvez créer le script avec la commande
395 <code>cat</code>, à noter que <code>EOF</code> signifie <em>End Of File</em>,
396 c'est la que le fichier se termine. Nous vous proposons de nommer le script
397 <code>gen_hacked_iso.sh</code> et d'utiliser deux variables permettant de
398 rapidement changer le nom de l'image ISO et le chemin vers le répertoire
399 racine du cdrom :
400 </p>
401 <pre>
402 # cat > gen_hacked_iso.sh << "EOF"
403 </pre>
404 <pre class="script">
405 #!/bin/sh
406 # Gen a new hacked ISO image.
407 #
408 ISO_NAME="slitaz-hacked.iso"
409 ROOTCD="rootcd"
411 genisoimage -R -o $ISO_NAME -b boot/isolinux/isolinux.bin \
412 -c boot/isolinux/boot.cat -no-emul-boot -boot-load-size 4 \
413 -V "SliTaz-Hacked" -input-charset iso8859-1 -boot-info-table $ROOTCD
415 EOF
416 </pre>
417 <p>
418 Pour utiliser le script, il suffit de le rendre exécutable et de l'exécuter :
419 </p>
420 <pre>
421 # chmod +x gen_hacked_iso.sh
422 # ./gen_hacked_iso.sh
423 </pre>
425 <!-- End of content -->
426 </div>
428 <!-- Footer. -->
429 <div id="footer">
430 <div class="footer-right"></div>
431 <a href="#top">Haut de la page</a> |
432 <a href="index.html">Table des matières</a>
433 </div>
435 <div id="copy">
436 Copyright © 2007 <a href="http://www.slitaz.org/">SliTaz</a> -
437 <a href="http://www.gnu.org/licenses/gpl.html">GNU General Public License</a>;<br />
438 Documentation publiées sous
439 <a href="http://www.gnu.org/copyleft/fdl.html">GNU Free Documentation License</a>
440 et codée en <a href="http://validator.w3.org/">xHTML 1.0 valide</a>.
441 </div>
443 </body>
444 </html>