website view fr/doc/scratchbook/base-system.html @ rev 1344

Resize balinor logo to 120px
author Christophe Lincoln <pankso@slitaz.org>
date Fri Jan 22 23:02:15 2021 +0100 (2021-01-22)
parents ab542c939cab
children
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 Scratchbook - Base system - Créer la base du LiveCD</title>
6 <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1" />
7 <meta name="description" content="SliTaz BusyBox création system gnu linux fonctionnant en RAM howto Documentation du projet SliTaz GNU/Linux création system gnu linux fonctionnant en RAM" />
8 <meta name="expires" content="never" />
9 <meta name="modified" content="2007-12-24 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="base-system.html#intro">Introduction</a> |
22 <a href="index.html">Table des matières</a> |
23 <a href="base-apps.html">Base apps</a>
24 </div>
25 <h1><font color="#3E1220">SliTaz Scratchbook</font></h1>
26 </div>
28 <!-- Content. -->
29 <div id="content">
30 <div class="content-right"></div>
33 <h2><font color="#DF8F06">Système de base</font></h2>
34 <p>
35 Construire une distro SliTaz GNU/Linux utilisant Busybox et fonctionnant en RAM.
36 </p>
37 <ul>
38 <li><a href="base-system.html#about">A propos de ce document.</a></li>
39 <li><a href="base-system.html#src">Wget src.</a></li>
40 <li><a href="base-system.html#prepa">Désarchiver et préparer le noyau Linux.</a></li>
41 <li><a href="base-system.html#rootfs">Création de la racine du système</a>, the root
42 file System (rootfs).</li>
43 <li><a href="base-system.html#config">Configurer sa box.</a></li>
44 <li><a href="base-system.html#initramfs">Génération de l'initramfs</a>, archive cpio compressée.</li>
45 <li><a href="base-system.html#rootcd">Construction de la racine du cdrom</a> (rootcd), et
46 des fichiers de config de Syslinux.</li>
47 <li><a href="base-system.html#mkiso">Créer un image ISO avec genisoimage ou mkisofs.</a></li>
48 <li><a href="base-system.html#testiso">Graver ou tester l'ISO avec Qemu.</a></li>
49 </ul>
50 <a name="about"></a>
51 <h3><font color="#6c0023">A propos</font></h3>
52 <p>
53 Ce document décrit la construction de la base de SliTaz, pour cela nous
54 utilisons: un noyau Linux, BusyBox, et Syslinux pour booter le système.
55 SliTaz utilise une archive initramfs décompressée en RAM par le
56 kernel au démarrage du système. Nous allons créer la box, pour qu'elle tienne
57 dans un système de fichier racine de 3 à 4 Mb, en utilisant 'strip' sur
58 les bibliothèques et les binaires, pour gagner de la place.
59 </p>
60 <p>
61 Les scripts et les fichiers de configuration sont crées avec GNU nano, il faut
62 utiliser la combinaison de touches &lt;Ctrl+X&gt; pour enregistrer et quitter.
63 Mais vous pouvez biensûr, utiliser votre éditeur de texte préféré à la place.
64 </p>
65 <p>
66 Ce document est inspiré d'un howto trouvé dans l'archive de BusyBox.
67 Qui est lui-même basé sur un papier présenté par Erik Andersen
68 à la conférence Embedded Systems en 2001.
69 </p>
70 <a name="src"></a>
71 <h3><font color="#6c0023">Wget src</font></h3>
72 <p>
73 Création d'un répertoire src pour le téléchargement et
74 la compilation:
75 </p>
76 <pre>
77 # mkdir -p src
78 # cd src
79 </pre>
80 <ul>
81 <li>Linux Kernel 2.6.20
82 (<a href="http://www.kernel.org/">http://www.kernel.org/</a>).
83 <pre># wget ftp://ftp.kernel.org/pub/linux/kernel/v2.6/linux-2.6.20.tar.bz2</pre>
84 </li>
85 <li>Busybox 1.2.2
86 (<a href="http://www.busybox.net/">http://www.busybox.net/</a>).
87 <pre># wget http://www.busybox.net/downloads/busybox-1.2.2.tar.bz2</pre>
88 </li>
89 <li>Syslinux 3.35
90 (<a href="http://syslinux.zytor.com/">http://syslinux.zytor.com/</a>).
91 <pre># wget ftp://ftp.kernel.org/pub/linux/boot/syslinux/syslinux-3.35.tar.gz</pre>
92 </li>
93 <li>SliTaz tools 1.1
94 Télécharger SliTaz tools, détarrer, sauver l'archive dans src/, et c'est tout :
95 <pre>
96 # wget http://download.tuxfamily.org/slitaz/sources/tools/slitaz-tools-1.1.tar.gz
97 # tar xzf slitaz-tools-1.1.tar.gz</pre>
98 </li>
99 </ul>
100 <a name="prepa"></a>
101 <h3><font color="#6c0023">Désarchiver et préparer le noyau Linux</font></h3>
102 <p>
103 Nous allons commencer par compiler un noyau Linux, ce qui peut prendre un
104 peu de temps.
105 </p>
106 <h4>Noyau Linux</h4>
107 <p>
108 Votre kernel doit supporter le système de fichier intramfs, sinon le
109 cd-rom ne pourra démarrer. Vous pouvez aussi installer les modules dans
110 un répertoire donné afin de ne pas toucher au système hôte. La configuration
111 des sources du noyau Linux se fait avec <code>make menuconfig</code>, en
112 ncurser ou graphiquement avec <code>make gconfig</code> ou,
113 <code>make xconfig</code>. Pour cela il faut que les paquets de développements
114 GTK et/ou QT soient installés. Vous trouverez dans
115 <a href="http://www.slitaz.org/get/tools.html">SliTaz tools</a> les
116 Makefiles de divers noyau 2.6.xx.
117 </p>
118 <p>
119 Une fonctionnalité des noyaux 2.6 est que si nous lançons make menuconfig,
120 xconfig, ou config, pour la première fois, le menu de configuration affiché
121 est basé sur la configuration de notre noyau actuel.
122 </p>
123 <p>
124 Les options choisies dépendent de vos besoins, sachez que vous pouvez installer
125 module-init-tools pour prendre en charge les modules compressés. Pour un système
126 minimum vous pouvez ne choisir que les options vitales.
127 </p>
128 <p>
129 Nous commençons par un <code>cd</code> dans les sources, <code>mrproper</code>
130 pour mettre un peu d'ordre, puis on lance une interface de configuration,
131 <code>gconfig</code>, <code>xconfig</code>, <code>menuconfig</code>, ou
132 <code>oldconfig</code>:
133 </p>
134 <pre>
135 # tar xjf linux-2.6.20.tar.bz2
136 # cd linux-2.6.20
137 # make mrproper
138 # cp ../slitaz-tools-1.1/Makefiles/linux-2.6.20-slitaz.config .config
139 # make oldconfig
140 (# make menuconfig)
141 # make bzImage
142 # make modules
143 # make INSTALL_MOD_PATH=$PWD/_pkg modules_install
144 # cd ..
145 </pre>
146 <p>
147 Si vous désirez plus d'info sur la compilation du noyau, référez-vous aux
148 pages de manuels. A noter que vous pouvez installer ce noyau et
149 redémarrer dessus, vous compilerez la suite avec votre propre noyau.
150 </p>
151 <a name="rootfs"></a>
152 <h3><font color="#6c0023">Création de la racine du sytème (rootfs)</font></h3>
153 <p>
154 La prochaine étape créera un système de fichier racine nommé 'rootfs',
155 pour Root File System, dans l'espace de travail SliTaz.
156 </p>
157 <pre>
158 # mkdir ../rootfs
159 </pre>
160 <h4>Install BusyBox</h4>
161 <p>
162 BusyBox (<a href="http://www.busybox.net/">www.busybox.net</a>) est un
163 exécutable unique qui propose des versions allégées des principaux outils
164 indispensables pour utiliser un noyau Linux. Il est principalement destiné
165 à l'embarqué et permet de presque tout faire. C'est un shell proposant les
166 commandes de coreutils et des démons système. Il y a même un serveur web, et
167 un client/serveur DHCP (udhcpc).
168 </p>
169 <pre>
170 # tar xjf busybox-1.2.2.tar.bz2
171 </pre>
172 <p>
173 Pour configurer et compiler. N'oubliez pas les options dumpkmap, init, etc,
174 pour vous aider, vous trouverez le Makefile de BusyBox dans SliTaz tools. Le
175 make install créera un répertoire _install dans le répertoire courant:
176 </p>
177 <pre>
178 # cd busybox-1.2.2
179 # cp ../slitaz-tools-1.1/Makefiles/busybox-1.2.2.config .config
180 # make oldconfig
181 (# make menuconfig)
182 # make
183 # make install
184 # chmod 4755 _install/bin/busybox
185 </pre>
186 <p>
187 Copier les fichiers de la compilation de Busybox, se trouvant dans le
188 répertoire _install, dans le système de fichiers racine (rootfs):
189 </p>
190 <pre>
191 # cp -a _install/* ../../rootfs
192 </pre>
193 <p>
194 Le lien linuxrc pointant vers bin/busybox, les dossiers /bin, /lib, et /sbin,
195 on été ajoué au répertoire /rootfs. On peut le vérifier avec ls. Il se peut que
196 le lien linuxrc ne soit pas présent si vous n'avez pas séléctionner l'option du
197 support initrd dans BusyBox. Nous effaçons le lien linuxrc, et créons un lien
198 pour init qui pointe sur bin/busybox:
199 </p>
200 <pre>
201 # cd ../../rootfs
202 # ls -CF
203 bin/ linuxrc@ sbin/ usr/
205 # rm linuxrc
206 # ln -s bin/busybox init
207 </pre>
208 <h4>ldd sur BusyBox</h4>
209 <p>
210 La commande <code>ldd</code> permet de connaître les bibliothèques utilisées par
211 un programme. Les bibliothèques utilisées par Busybox peuvent différer sen fonction
212 du système hôte utilisé, sur Debian par exemple vous devrez copier les bibliothèques
213 situées dans /lib/tls. Les commandes ci-dessous sont donnée avec l'option '-v' pour
214 verbose ou volubile. Pour éliminer les symboles des binaires exécutable et des
215 bibliothèques partagées qui servent au débuggage nous utilison strip. A noter
216 que vous pourriez aussi utiliser les bibliothèques uClibc ou mklibs :
217 </p>
218 <pre>
219 # mkdir lib
220 </pre>
221 <p>
222 Exemple sur SliTaz ou autres:
223 </p>
224 <pre>
225 # cp /lib/{libcrypt.so.1,libm.so.6,libc.so.6} lib
226 # cp /lib/ld-linux.so.2 lib
227 </pre>
228 <p>
229 Exemple sur Debian Etch:
230 </p>
231 <pre>
232 # cp /lib/tls/{libcrypt.so.1,libm.so.6,libc.so.6} lib
233 # cp /lib/ld-linux.so.2 lib
234 </pre>
235 <p>
236 Nettoyage de bibliothèques avec <code>strip</code>:
237 </p>
238 <pre>
239 # strip -v lib/*
240 </pre>
241 <h4>Linux tree et config</h4>
242 <p>
243 Création de quelques répertoires pour créer une arborrescence Linux classique pour
244 SliTaz. /dev pour les devices, /etc, /home, /usr, /proc, /root, et compagnie.
245 Pour en savoir plus sur la hierarchie d'un système de fichiers, et son contenu, il
246 existe le Filesystem Hierarchy Standard, disponible en plusieurs formats sur
247 <a href="http://www.pathname.com/fhs/">www.pathname.com/fhs/</a>.
248 </p>
249 <p>
250 Vous êtes libre de créer votre propre arbre. Dans les systèmes unix traditionnels,
251 /usr contient généralement des fichiers provenant de la distribution, /dev contient
252 les périphériques (devices), /etc contient les fichiers de configuration, /lib des
253 bibliothèques, /home pour la maison des utilisateurs, et /var des données variables.
254 A noter que nous ne créons pas /lib, /bin, /sbin, ils seront crée lors de
255 l'installation de BusyBox:
256 </p>
257 <pre>
258 # mkdir -p dev etc root home proc media mnt sys tmp var
259 # mkdir -p usr/{lib,local,games,share} \
260 var/{cache,lib,lock,log,games,run,spool} \
261 media/{cdrom,flash,usbdisk}
262 </pre>
263 <p>
264 Changement des permissions sur le répertoire /tmp:
265 </p>
266 <pre>
267 # chmod 1777 tmp
268 </pre>
269 <p>
270 Configuration de base de la glibc, /etc/ld.so.conf et /etc/rpc ne sont pas
271 indispensable pour un micro système:
272 </p>
273 <pre>
274 # touch etc/ld.so.conf
275 # cp /etc/rpc etc
276 </pre>
277 <h4>Créer le devices dans /dev</h4>
278 <p>
279 Ceci peut se faire avec le script 'mkdevs.sh' trouvé dans busybox.
280 ou avec notre script 'mktazdevs.sh' contenu dans SliTaz tools. Si vous
281 voulez des détails, lisez les scripts. Si vous utilisé la version BusyBox,
282 il faut encore créer le réperoire pts:
283 </p>
284 <pre>
285 # cp ../src/slitaz-tools-1.1/utils/mktazdevs.sh bin
286 # ./bin/mktazdevs.sh dev
287 ou:
288 # cp ../src/busybox-1.2.2/examples/bootfloppy/mkdevs.sh bin
289 # ./bin/mkdevs.sh dev
290 # mkdir -p dev/{pts,input,shm,net,usb}
291 </pre>
292 <p>
293 A noter que nous démarrons mdev -s avec le script rcS, pour créer
294 les devices dynamiquement lors du boot.
295 </p>
296 <h4>Support de la résolution des noms d'hôtes (DNS)</h4>
297 <p>
298 Copie des bibliothèques libnss_* du système hôte, dans notre
299 système SliTaz, ces bibliothèques sont utilisées pour la résolution
300 des noms et nettoyage avec strip:
301 </p>
302 <pre>
303 # cp /lib/{libnss_dns.so.2,libnss_files.so.2} lib
304 # cp /lib/libresolv.so.2 lib
305 # strip -v lib/*.so*
306 </pre>
307 <a name="config"></a>
308 <h3><font color="#6c0023">Configuration de votre Box</font></h3>
309 <p>
310 Créer les fichiers nécessaires dans /etc. Pour plus d'infos, il faut
311 simplement regarder le contenu des fichiers. Nous commençons par créer
312 quelques fichiers utiles au fonctionnement de base du sytème:
313 </p>
314 <h4>Réseau</h4>
315 <p>
316 Création des fichiers de base utilisés pour configurer le réseau:
317 </p>
318 <pre>
319 # echo "127.0.0.1 localhost" > etc/hosts
320 # echo "localnet 127.0.0.1" > etc/networks
321 # echo "slitaz" > etc/hostname
322 # echo "order hosts,bind" > etc/host.conf
323 # echo "multi on" >> etc/host.conf
324 </pre>
325 <h4>/etc/nsswitch.conf</h4>
326 <p>
327 Fichier de configuration utilisé pour la résolution des noms:
328 </p>
329 <pre>
330 # nano etc/nsswitch.conf
331 </pre>
332 <pre class="script">
333 # /etc/nsswitch.conf: GNU Name Service Switch config.
334 #
336 passwd: files
337 group: files
338 shadow: files
340 hosts: files dns
341 networks: files
343 </pre>
344 <h4>/etc/securetty</h4>
345 <p>
346 Le fichier /etc/securetty, liste les terminaux sur lesquels root peut se
347 connecter:
348 </p>
349 <pre>
350 # nano etc/securetty
351 </pre>
352 <pre class="script">
353 # /etc/securetty: List of terminals on which root is allowed to login.
354 #
355 console
357 # For people with serial port consoles
358 ttyS0
360 # Standard consoles
361 tty1
362 tty2
363 tty3
364 tty4
365 tty5
366 tty6
367 tty7
369 </pre>
370 <h4>/etc/shells</h4>
371 <p>
372 Le fichier /etc/shells, liste les shells de connection valides. Ce fichier est
373 entre autre utilisé par le serveur SSH dropbear:
374 </p>
375 <pre>
376 # nano etc/shells
377 </pre>
378 <pre class="script">
379 # /etc/shells: valid login shells.
380 /bin/sh
381 /bin/ash
382 /bin/hush
384 </pre>
385 <h4>/etc/issue et /etc/motd</h4>
386 <p>
387 Création des fichiers /etc/issue affiché à la fin du boot, et du message du
388 jour affiché après le login:
389 </p>
390 <pre>
391 # echo "SliTaz GNU/Linux 1.0 Kernel \r \l" > etc/issue
392 # echo "" >> etc/issue
393 # nano etc/motd
394 </pre>
395 <pre class="script">
397 (°- { Get documentation in: /usr/share/doc.
398 //\ Use: 'less' or 'more' to read files, 'su' to be root. }
399 v_/_
401 SliTaz is distributed in the hope that it will be useful, but
402 with ABSOLUTELY NO WARRANTY.
404 </pre>
405 <h4>/etc/busybox.conf</h4>
406 <p>
407 Ce fichier est le fichiers de configuration de BusyBox, il permet
408 de configurer, entre autre des droits sur les applications Busybox.
409 Pour plus d'informations vous pouvez lire le document texte:
410 <a href="http://doc.slitaz.org/fr:handbook:security">sécurité du système</a>
411 du Handbook. Fichier busybox.conf :
412 </p>
413 <pre>
414 # nano etc/busybox.conf
415 </pre>
416 <pre class="script">
417 # /etc/busybox.conf: SliTaz GNU/linux Busybox configuration.
418 #
420 [SUID]
421 # Allow command to be run by anyone.
422 su = ssx root.root
423 passwd = ssx root.root
424 loadkmap = ssx root.root
425 mount = ssx root.root
426 reboot = ssx root.root
427 halt = ssx root.root
429 </pre>
430 <p>
431 Pour plus de sécurité, on change les permission sur ce fichier:
432 </p>
433 <pre>
434 # chmod 600 etc/busybox.conf
435 </pre>
436 <h4>/etc/inittab</h4>
437 <p>
438 Fichier de configuration d'init minimal. Il permet d'avoir d'avoir une
439 console root sans passer par le login, et une console activable sur tty2.
440 </p>
441 <pre>
442 # nano etc/inittab
443 </pre>
444 <pre class="script">
445 # /etc/inittab: init configuration for SliTaz GNU/Linux.
447 ::sysinit:/etc/init.d/rcS
448 ::respawn:-/bin/sh
449 tty2::askfirst:-/bin/sh
450 ::ctrlaltdel:/bin/umount -a -r
451 ::ctrlaltdel:/sbin/reboot
453 </pre>
454 <p>
455 Vous trouverez aussi un large exemple d'un fichier inittab dans
456 l'archive de BusyBox.
457 </p>
458 <h4>/etc/profile</h4>
459 <p>
460 Ce fichier est lu lors de chaque login, et affecte tous les utilisateurs.
461 Il faut utiliser le fichier ~/.profile pour la config propre à chaque user.
462 </p>
463 <pre>
464 # nano etc/profile
465 </pre>
466 <pre class="script">
467 # /etc/profile: system-wide .profile file for the Bourne shells
469 PATH="/usr/sbin:/usr/bin:/sbin:/bin:/usr/games"
470 LD_LIBRARY_PATH="/usr/lib:/lib"
472 if [ "`id -u`" -eq 0 ]; then
473 PS1='\e[1m\u@\h:\w\#\e[m '
474 else
475 PS1='\e[1m\u@\h:\w\$\e[m '
476 fi
478 DISPLAY=:0.0
480 export PATH LD_LIBRARY_PATH PS1 DISPLAY ignoreeof
481 umask 022
483 </pre>
484 <h4>Utilisateurs, groupes, et mots de passes</h4>
485 <p>
486 Création des fichiers de configuration des utilisateurs, des groupes,
487 des mots de passes situé dans: etc/{passwd,shadow,group,gshadow},
488 et ajustage des permissions:
489 </p>
490 <pre>
491 # echo "root:x:0:0:root:/root:/bin/sh" > etc/passwd
492 # echo "root::13525:0:99999:7:::" > etc/shadow
493 # echo "root:x:0:" > etc/group
494 # echo "root:*::" > etc/gshadow
495 # chmod 640 etc/shadow
496 # chmod 640 etc/gshadow
497 </pre>
498 <p>
499 Vous pouvez ajouter d'autres utilisateurs, tel que <a href="hacker.txt">hacker</a>
500 utilisé par le mode liveCD de SliTaz. Vous pouvez aussi configuer un mot de passe pour
501 le super-utilisateur root, avec la commande passwd. Pour ajouter un utilisateur existant
502 dans un groupe existant, vous devez éditer les fichiers /etc/group et /etc/gshadow, car
503 l'applet adduser fourni avec busybox n'offre pas toutes les options fournies par le
504 programme original.
505 </p>
506 <h4>/etc/fstab et /etc/mtab</h4>
507 <p>
508 Liste les systèmes de fchiers à monter:
509 </p>
510 <pre>
511 # nano etc/fstab
512 </pre>
513 <pre class="script">
514 # /etc/fstab: information about static file system.
515 #
516 proc /proc proc defaults 0 0
517 sysfs /sys sysfs defaults 0 0
518 devpts /dev/pts devpts defaults 0 0
519 tmpfs /dev/shm tmpfs defaults 0 0
521 </pre>
522 <p>
523 Le fichier /etc/mtab est utilisé entre autre par mkfs*, il liste les partitions montées.
524 Il a besoin de /proc, car c'est un lien sur /proc/mounts:
525 </p>
526 <pre>
527 # chroot . /bin/ash
528 /# ln -s /proc/mounts /etc/mtab
529 </pre>
530 <h4>Clavier</h4>
531 <p>
532 Vous pouvez créer un fichier .kmap spécifique à votre clavier grâce à la
533 commande dumpkmap fournie avec BusyBox. Vous trouverez quelques fichiers kmap
534 dans l'archive <a href="http://www.slitaz.org/get/tools.html">SliTaz tools</a>
535 tel que fr_CH. Pour créer un fichier .kmap (changez fr_CH à votre
536 configuration):
537 </p>
538 <pre>
539 /# mkdir /usr/share/kmap
540 /# /bin/busybox dumpkmap &gt; /usr/share/kmap/fr_CH.kmap
541 /# exit
542 </pre>
543 <p>
544 Une fois ceci fait vous pouvez charger automatiquement votre clavier
545 avec loadkmap dans un script tel que etc/ini.d/rcS, par exemple.
546 </p>
547 <h4>/usr/share/doc</h4>
548 <p>
549 Vous pouvez aussi ajouter divers documents, comme le manuel d'utilisateur
550 de SliTaz, que vous pouvez télécharger sous forme d'archive tar.gz, depuis le
551 site web de SliTaz.
552 </p>
553 <pre>
554 # mkdir -p usr/share/doc
555 </pre>
556 <h4>Installation du script udhcpc</h4>
557 <p>
558 Udhcpc est un client DHCP stable et rapide, fourni avec Busybox, mais
559 ayant un développemnt indépandent. Site web: <a href="http://udhcp.busybox.net/"
560 >http://udhcp.busybox.net/</a>. Vous pouvez utiliser default.script
561 de l'archive BusyBox. Ce script se met dans /usr/share/udhcpc/default.script,
562 mais cela peut être modifié en ligne de commande. Sur SliTaz le client est lancé au boot
563 par le script /etc/init.d/network.sh via le fichier de configuration /etc/network.conf:
564 </p>
565 <pre>
566 # mkdir usr/share/udhcpc
567 # cp ../src/busybox-1.2.2/examples/udhcp/simple.script \
568 usr/share/udhcpc/default.script
569 # chmod +x usr/share/udhcpc/default.script
570 </pre>
571 <h4>/etc/init.d/rcS</h4>
572 <p>
573 Pour finir cette première mouture il faut encore créer le script d'initialisation
574 /etc/init.d/rcS pour monter les systèmes de fichiers, et lancer quelques commandes.
575 Pour plus d'information vous pouvez jeter un coup d'oeil au chapitre sur
576 <a href="boot-scripts.html">les scripts de démarrage et d'arrêt</a>. Vous pouvez
577 changer la valeur de la variable KMAP= pour que le bon clavier soit chargé:
578 </p>
579 <pre>
580 # mkdir etc/init.d
581 # nano etc/init.d/rcS
582 </pre>
583 <pre class="script">
584 #! /bin/sh
585 # /etc/init.d/rcS: rcS initial script.
586 #
588 KMAP=fr_CH
590 echo "Processing /etc/init.d/rcS... "
592 /bin/mount proc
593 /bin/mount -a
594 /bin/hostname -F /etc/hostname
595 /sbin/ifconfig lo 127.0.0.1 up
596 /sbin/loadkmap &lt; /usr/share/kmap/$KMAP.kmap
599 </pre>
600 <pre>
601 # chmod +x etc/init.d/rcS
602 </pre>
603 <h4>Note</h4>
604 <p>
605 A noter que vous pouvez encore installer
606 <a href="http://www.slitaz.org/get/tazpkg.html">tazpkg</a> (10 Ko).
607 C'est un gestionnaire de paquets que nous avons créé, vous touverez toutes les
608 infos d'install dans l'archive source. Vous pouvez aussi installer divers
609 fichiers depuis SliTaz tools, tel les lisences.
610 </p>
611 <a name="initramfs"></a>
612 <h3><font color="#6c0023">Build a initramfs cpio archive</font></h3>
613 <p>
614 L'initramfs est une archive <code>cpio</code> du système générée depuis la racine,
615 elle est décompressée en RAM par le noyau Linux lors du démarrage (boot), pour créer
616 le système de fichiers en mémoire vive. Pour générer une archive initramfs, nous
617 nous plaçons dans le répertoire racine du système de fichiers (rootfs), nous fesons
618 une recherche avec <code>find</code>, et nous utilisons des pipes <code>|</code>.
619 Ensuite nous créons une archive<code>cpio</code> gzipée avec <code>gzip</code>,
620 que nous plaçons dans le répertoire de travail.
621 </p>
622 <p>
623 L'initramfs de SliTaz se nomme <strong>rootfs.gz</strong>, c'est le nom du
624 système racine, mais avec l'extension <code>.gz</code>. Si vous changé
625 le nom, il faudrat le spécifier dans le fichier isolinux.cfg pour isolinux,
626 ou menu.lst pour GRUB.
627 </p>
628 <p>
629 Génération de l'initramfs:
630 </p>
631 <pre>
632 # find . -print | cpio -o -H newc | gzip -9 &gt; ../rootfs.gz
633 </pre>
634 <p>
635 Vous devriez avoir un fichier rootfs.gz d'environ 1 à 2 Mb dans le
636 répertoire de travail de SliTaz.
637 </p>
638 <p>
639 Pour une nouvelle image, lors de modif dans rootfs, il suffit de copier
640 la nouvelle archive rootfs.gz dans rootcd/boot, et de créer une nouvelle
641 image ISO avec <code>genisoimage</code> ou <code>mkisofs</code>. Pour cela vous
642 pouvez utiliser <strong>mktaziso</strong> se trouvant dans SliTaz tools. Ce script
643 se chargera de vérifier si les répertoires sont bien présents, de générer une
644 nouvelle archive cpio compressée et de créer une nouvelle image ISO bootable.
645 </p>
646 <a name="rootcd"></a>
647 <h3><font color="#6c0023">Make rootcd files</font></h3>
648 <p>
649 Les étapes suivantes vont vous permettre de créer la racine du cd-rom
650 bootable. Nous commençons par créer le répertoire rootcd, boot, et isolinux
651 pour les fichiers déstinés au cd-rom:
652 </p>
653 <pre>
654 # cd ..
655 # mkdir -p rootcd/boot/isolinux
656 </pre>
657 <p>
658 En option vous pouvez créer d'autres repértoires pour y mettre divers données,
659 tel que des documents html ou des paquets.
660 </p>
661 <a name="linux"></a>
662 <h4>Copier le kernel</h4>
663 <p>
664 Il suffit de copier le noyau préalablement compilé, dans rootcd/boot:
665 </p>
666 <pre>
667 # cp src/linux-2.6.20/arch/i386/boot/bzImage rootcd/boot
668 </pre>
669 <h4>Copie de l'initramfs dans rootcd/boot</h4>
670 <p>
671 Il ne faut pas oublier de générer une nouvelle archive initramfs
672 lors de modification dans le rootfs (root file system).
673 </p>
674 <pre>
675 # cp rootfs.gz rootcd/boot
676 </pre>
677 <h4>Install du bootloader isolinux</h4>
678 <p>
679 Le bootloader isolinux, il suffit de copier isolinux.bin depuis l'archive
680 des source de Syslinux:
681 </p>
682 <pre>
683 # cd src
684 # tar xzf syslinux-3.35.tar.gz
685 # cp syslinux-3.35/isolinux.bin ../rootcd/boot/isolinux
686 # cd ..
687 </pre>
688 <h4>isolinux.cfg - Configuration d'isolinux</h4>
689 <p>
690 Voici un exemple du fichier isolinux.cfg qui devrait bien fonctionner. Vous
691 pouvez le modifier à volonté:
692 </p>
693 <pre>
694 # nano rootcd/boot/isolinux/isolinux.cfg
695 </pre>
696 <pre class="script">
697 display display.txt
698 default slitaz
699 label slitaz
700 kernel /boot/bzImage
701 append initrd=/boot/rootfs.gz rw root=/dev/null vga=788
702 implicit 0
703 prompt 1
704 timeout 80
706 </pre>
707 <p>
708 Voici quelques changements que vous pourriez faire dans isolinux.cfg:
709 </p>
710 <ul>
711 <li>La valeur timeout correspond au nombre de secondes à attendre
712 avantde booter. Vous pouvez la mettre à 0, ou hôter la ligne pour
713 démarrer instantanément, ou choisir un temps d'attente plus long tel
714 que 10 s.</li>
715 <li>prompt peut être mis à 0 pour désactiver le 'boot:' prompt.</li>
716 <li>Vous pouvez encore ajouter plus de lignes pour afficher le contenu
717 de plusieurs fichiers textes lorsque l'utilisateur appuie sur F1, F2,
718 F3, etc.</li>
719 </ul>
720 <h4>display.txt</h4>
721 <p>
722 Un petit message de bienvenue, propulsé par isolinux, à vous de modifier
723 ce fichier comme bon vous semble:
724 </p>
725 <pre>
726 # nano rootcd/boot/isolinux/display.txt
727 </pre>
728 <pre class="script">
729 /* _\|/_
730 (o o)
731 +----oOO-{_}-OOo---------------------------------------------------+
732 ____ _ _ _____
733 / ___|| (_)_ _|_ _ ____
734 \___ \| | | | |/ _` |_ /
735 ___) | | | | | (_| |/ /
736 |____/|_|_| |_|\__,_/___|
738 SliTaz GNU/Linux - Temporary Autonomous Zone
740 &lt;ENTER&gt; to boot.
742 */
743 </pre>
744 <a name="mkiso"></a>
745 <h3><font color="#6c0023">Créer un image ISO avec genisoimage ou mkisofs</font></h3>
746 <pre>
747 # genisoimage -R -o slitaz-cooking.iso -b boot/isolinux/isolinux.bin \
748 -c boot/isolinux/boot.cat -no-emul-boot -boot-load-size 4 \
749 -V "SliTaz" -input-charset iso8859-1 -boot-info-table rootcd
750 </pre>
751 <p>
752 Pour chaque nouvelle modification dans le système de fichier racine
753 de la box, vous devez créer une nouvelle image ISO.
754 </p>
755 <p>
756 Vous pouvez créer un petit script qui se chargera de générer une nouvelle
757 archive cpio compressée et une nouvelle image ISO, ou utiliser mktaziso se
758 trouvant dans SliTaz tools. A noter que vous pouvez aussi utiliser GRUB pour
759 booter la box.
760 </p>
761 <a name="testiso"></a>
762 <h3><font color="#6c0023">Graver ou tester l'ISO avec Qemu</font></h3>
763 <p>
764 Vous pouvez graver l'image ISO avec Graveman, k3b, ou wodim, et booter
765 dessus. Voisi un exemple de commande de gravure avec wodim (valable aussi pour
766 cdrecord), avec un kernel 2.6.*:
767 </p>
768 <pre>
769 # wodim -v -speed=24 -data slitaz-cooking.iso
770 </pre>
771 <h4>Qemu</h4>
772 <p>
773 A noter que vous pouvez tester l'image ISO avec le logiciel d'émulation Qemu
774 (Sur Debian # aptitude install qemu). Pour émuler l'image ISO fraîchement crée,
775 il suffit de taper :
776 </p>
777 <pre>
778 # qemu -cdrom slitaz-cooking.iso
779 </pre>
780 <h4>Suite</h4>
781 <p>
782 La suite logique du Cookbook est le chapitre <a href="base-apps.html"
783 >Base apps</a> fournissant toutes les instructions pour installer et
784 configurer les applications de base distribuée par SliTaz.
785 </p>
788 <!-- End of content -->
789 </div>
791 <!-- Footer. -->
792 <div id="footer">
793 <div class="footer-right"></div>
794 <a href="base-system.html#top">Haut de la page</a> |
795 <a href="index.html">Table des matières</a>
796 </div>
798 <div id="copy">
799 Copyright &copy; <span class="year"></span> <a href="http://www.slitaz.org/">SliTaz</a> -
800 <a href="http://www.gnu.org/licenses/gpl.html">GNU General Public License</a>;<br />
801 Documentation publiées sous
802 <a href="http://www.gnu.org/copyleft/fdl.html">GNU Free Documentation License</a>
803 et codée en <a href="http://validator.w3.org/">xHTML 1.0 valide</a>.
804 </div>
806 </body>
807 </html>