rev |
line source |
pankso@280
|
1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
pankso@280
|
2 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
pankso@280
|
3 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
|
pankso@280
|
4 <head>
|
pankso@280
|
5 <title>SliTaz Handbook - Chroot env</title>
|
pankso@280
|
6 <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1" />
|
pankso@280
|
7 <meta name="description" content="SliTaz chroot environnement chrooté développer tester" />
|
pankso@280
|
8 <meta name="expires" content="never" />
|
pankso@280
|
9 <meta name="modified" content="2007-12-03 12:30:00" />
|
pankso@280
|
10 <meta name="publisher" content="www.slitaz.org" />
|
pankso@280
|
11 <meta name="author" content="Christophe Lincoln"/>
|
pankso@280
|
12 <link rel="shortcut icon" href="favicon.ico" />
|
pankso@280
|
13 <link rel="stylesheet" type="text/css" href="book.css" />
|
pankso@280
|
14 </head>
|
pankso@280
|
15 <body bgcolor="#ffffff">
|
pankso@280
|
16
|
pankso@280
|
17 <!-- Header and quick navigation -->
|
pankso@280
|
18 <div id="header">
|
pankso@280
|
19 <div align="right" id="quicknav">
|
pankso@280
|
20 <a name="top"></a>
|
pankso@280
|
21 <a href="hacking-livecd.html">Hacking LiveCD</a> |
|
pankso@280
|
22 <a href="index.html">Table des matières</a>
|
pankso@280
|
23 </div>
|
pankso@280
|
24 <h1><font color="#3E1220">SliTaz Handbook</font></h1>
|
pankso@280
|
25 </div>
|
pankso@280
|
26
|
pankso@280
|
27 <!-- Content. -->
|
pankso@280
|
28 <div id="content">
|
pankso@280
|
29 <div class="content-right"></div>
|
pankso@280
|
30
|
pankso@280
|
31 <h2><font color="#DF8F06">Chroot environment</font></h2>
|
pankso@280
|
32
|
pankso@280
|
33 <p>
|
pankso@280
|
34 Ce document décrit les étapes à réaliser pour créer un environnement chrooté,
|
pankso@280
|
35 afin de changer la racine du système pour travailler. Cela permet de compiler,
|
pankso@280
|
36 tester et développer SliTaz sans risques pour le système hôte depuis lequel
|
pankso@280
|
37 on travaille. Ce système hôte peut être SliTaz installée en dur ou tout autre
|
pankso@280
|
38 système GNU/Linux tel que Debian, Fedora, PCLinuxOS, etc. On peut aussi créer
|
pankso@280
|
39 un environnement chrooté en mode LiveCD associé à un media USB. Les seuls
|
pankso@280
|
40 prérequis sont d'avoir une image ISO de SliTaz à disposition et un peu de
|
pankso@280
|
41 temps. A noter que toutes les opérations sont réalisées en tant
|
pankso@280
|
42 qu'administrateur (<em>root</em>).
|
pankso@280
|
43 </p>
|
pankso@280
|
44 <h3><font color="#6c0023">Préparer l'environnement</font></h3>
|
pankso@280
|
45 <p>
|
pankso@280
|
46 Pour commencer, il faut extraire le contenu de l'image ISO dans le répertoire
|
pankso@280
|
47 qui va servir au chroot. Le répertoire de chroot peut se créer à l'endroit que
|
pankso@280
|
48 l'on veut, nous utilisons un répertoire <code>/home/slitaz/chroot-env</code>.
|
pankso@280
|
49 Pour extraire le contenu d'une image ISO, il faut la monter en <em>loop</em>
|
pankso@280
|
50 sur un répertoire, pour ensuite copier le système de fichiers racine
|
pankso@280
|
51 compressé (<code>rootfs.gz</code>) dans le répertoire de chroot. En
|
pankso@280
|
52 supposant que l'ISO est dans le répertoire courant :
|
pankso@280
|
53 </p>
|
pankso@280
|
54 <pre>
|
pankso@280
|
55 # mkdir /tmp/loop
|
pankso@280
|
56 # mount -o loop slitaz-cooking.iso /tmp/loop
|
pankso@280
|
57 # mkdir -p /home/slitaz/chroot-env
|
pankso@280
|
58 # cp /tmp/loop/boot/rootfs.gz \
|
pankso@280
|
59 /home/slitaz/chroot-env
|
pankso@280
|
60 # umount /tmp/loop
|
pankso@280
|
61 </pre>
|
pankso@280
|
62 <p>
|
pankso@280
|
63 Maintenant qu'on a une copie du système de fichiers compressé, il faut le
|
pankso@280
|
64 décompresser et le désarchiver (c'est une archive <code>cpio</code> compressée
|
pankso@280
|
65 avec lzma ou gzip). Pour finir cette étape de préparation et continuer, on
|
pankso@280
|
66 peut retirer le <code>rootfs</code> qui n'est plus utilisé :
|
pankso@280
|
67 </p>
|
pankso@280
|
68 <pre>
|
pankso@280
|
69 # cd /home/slitaz/chroot-env
|
pankso@280
|
70 # (zcat rootfs.gz 2>/dev/null || lzma d rootfs.gz -so) | cpio -id
|
pankso@280
|
71 # rm rootfs rootfs.gz
|
pankso@280
|
72 </pre>
|
pankso@280
|
73 <p>
|
pankso@280
|
74 Si le désarchivage du rootfs compressé avec LZMA échoue en utilisant la
|
pankso@280
|
75 première méthode vous pouvez utiliser:
|
pankso@280
|
76 </p>
|
pankso@280
|
77 <pre>
|
pankso@280
|
78 # unlzma rootfs.gz -S .gz
|
pankso@280
|
79 # cat rootfs | cpio -id
|
pankso@280
|
80 </pre>
|
pankso@280
|
81
|
pankso@280
|
82 <h3><font color="#6c0023">Utiliser l'environnement</font></h3>
|
pankso@280
|
83 <p>
|
pankso@280
|
84 Pour utiliser l'environnemnt chrooté, il suffit de monter quelques systèmes
|
pankso@280
|
85 de fichier virtuels et d'utiliser la commande <code>chroot</code>. Pour se
|
pankso@280
|
86 simplifier la vie on peut rapidement créer un petit script automatisant
|
pankso@280
|
87 le chroot. Exemple en utilisant le répertoire de chroot
|
pankso@280
|
88 <code>/home/slitaz/chroot-env</code> et en créant un script nommé
|
pankso@280
|
89 <code>chroot_in_env.sh</code> dans <code>/home/slitaz</code>. A noter que
|
pankso@280
|
90 le contenu du script n'a pas besoin d'être tapé mais simplement copié/coller
|
pankso@280
|
91 dans le terminal et que sur un autre système que SliTaz vous pouvez
|
pankso@280
|
92 décommenter les lignes montant/démontant <code>/dev</code> et
|
pankso@280
|
93 <code>/tmp</code> :
|
pankso@280
|
94 </p>
|
pankso@280
|
95 <pre>
|
pankso@280
|
96 # cat > /home/slitaz/chroot_in_env.sh << "EOF"
|
pankso@280
|
97 </pre>
|
pankso@280
|
98 <pre class="script">
|
pankso@280
|
99 #!/bin/sh
|
pankso@280
|
100 # Chroot in SliTaz to hack.
|
pankso@280
|
101 #
|
pankso@280
|
102 ROOTFS="/home/slitaz/chroot-env"
|
pankso@280
|
103
|
pankso@280
|
104 # Mount virtual Kernel file systems and chroot.
|
pankso@280
|
105 #
|
pankso@280
|
106 #mount --bind /dev $ROOTFS/dev
|
pankso@280
|
107 #mount --bind /tmp $ROOTFS/tmp
|
pankso@280
|
108 mount -t proc proc $ROOTFS/proc
|
pankso@280
|
109 mount -t sysfs sysfs $ROOTFS/sys
|
pankso@280
|
110 mount -t devpts devpts $ROOTFS/dev/pts
|
pankso@280
|
111 mount -t tmpfs shm $ROOTFS/dev/shm
|
pankso@280
|
112
|
pankso@280
|
113 echo "Chrooting in $ROOTFS... "
|
pankso@280
|
114 chroot $ROOTFS /bin/sh --login
|
pankso@280
|
115
|
pankso@280
|
116 # Unmount virtual Kernel file systems on exit.
|
pankso@280
|
117 #
|
pankso@280
|
118 umount $ROOTFS/dev/shm
|
pankso@280
|
119 umount $ROOTFS/dev/pts
|
pankso@280
|
120 umount $ROOTFS/sys
|
pankso@280
|
121 umount $ROOTFS/proc
|
pankso@280
|
122 #umount $ROOTFS/tmp
|
pankso@280
|
123 #umount $ROOTFS/dev
|
pankso@280
|
124
|
pankso@280
|
125 echo "Exiting of $ROOTFS chroot environment... "
|
pankso@280
|
126
|
pankso@280
|
127 EOF
|
pankso@280
|
128 </pre>
|
pankso@280
|
129 <p>
|
pankso@280
|
130 Pour finir et tester l'environnement, il suffit de rendre le script exécutable
|
pankso@280
|
131 et le lancer :
|
pankso@280
|
132 </p>
|
pankso@280
|
133 <pre>
|
pankso@280
|
134 # chmod +x /home/slitaz/chroot_in_env.sh
|
pankso@280
|
135 # sh /home/slitaz/chroot_in_env.sh
|
pankso@280
|
136 </pre>
|
pankso@280
|
137 <h4>Activer le réseau</h4>
|
pankso@280
|
138 <p>
|
pankso@280
|
139 Pour avoir le réseau afin de télécharger, naviguer en mode texte et installer
|
pankso@280
|
140 des paquets de développement, il suffit de lancer le client DHCP sur la bonne
|
pankso@280
|
141 interface, exemple avec <code>eth1</code> :
|
pankso@280
|
142 </p>
|
pankso@280
|
143 <pre>
|
pankso@280
|
144 /# udhcpc -i eth1
|
pankso@280
|
145 </pre>
|
pankso@280
|
146 <h4>Installer des paquets</h4>
|
pankso@280
|
147 <p>
|
pankso@280
|
148 Si le réseau est fonctionnel, il suffit de recharger la liste des paquets et
|
pankso@280
|
149 utiliser <code>tazpkg get-install</code> pour installer de nouveaux paquets.
|
pankso@280
|
150 Si la connexion n'est pas possible, on peut télécharger les paquets du miroir
|
pankso@280
|
151 depuis un autre système, les copier dans l'environnement chrooté et les
|
pankso@280
|
152 installer via la commande <code>tazpkg install</code>. Pour installer la base
|
pankso@280
|
153 des outils de compilation :
|
pankso@280
|
154 </p>
|
pankso@280
|
155 <pre>
|
pankso@280
|
156 /# tazpkg recharge
|
pankso@280
|
157 /# tazpkg get-install slitaz-toolchain
|
pankso@280
|
158 </pre>
|
pankso@280
|
159 <p>
|
pankso@280
|
160 Une fois l'environnement configuré, on peut complier des applications
|
pankso@280
|
161 depuis les sources pour en créer des paquets, tester des scripts et autre.
|
pankso@280
|
162 Le chapitre <a href="development.html">développement</a> du Handbook et le
|
pankso@280
|
163 <a href="http://www.slitaz.org/doc/cookbook/">Cookbook</a> devraient aider à
|
pankso@280
|
164 aller plus loin.
|
pankso@280
|
165 </p>
|
pankso@280
|
166 <h4>Sortir de l'environnement</h4>
|
pankso@280
|
167 <p>
|
pankso@280
|
168 Pour sortir de l'environnement chrooté il suffit de taper <code>exit</code>,
|
pankso@280
|
169 le script <code>chroot_in_env.sh</code> va finir son rôle en démontant
|
pankso@280
|
170 le systèmes de fichiers virtuels propre au Kernel Linux :
|
pankso@280
|
171 </p>
|
pankso@280
|
172 <pre>
|
pankso@280
|
173 /# exit
|
pankso@280
|
174 #
|
pankso@280
|
175 </pre>
|
pankso@280
|
176
|
pankso@280
|
177 <!-- End of content -->
|
pankso@280
|
178 </div>
|
pankso@280
|
179
|
pankso@280
|
180 <!-- Footer. -->
|
pankso@280
|
181 <div id="footer">
|
pankso@280
|
182 <div class="footer-right"></div>
|
pankso@280
|
183 <a href="#top">Haut de la page</a> |
|
pankso@280
|
184 <a href="index.html">Table des matières</a>
|
pankso@280
|
185 </div>
|
pankso@280
|
186
|
pankso@280
|
187 <div id="copy">
|
pankso@280
|
188 Copyright © 2007 <a href="http://www.slitaz.org/">SliTaz</a> -
|
pankso@280
|
189 <a href="http://www.gnu.org/licenses/gpl.html">GNU General Public License</a>;<br />
|
pankso@280
|
190 Documentation publiées sous
|
pankso@280
|
191 <a href="http://www.gnu.org/copyleft/fdl.html">GNU Free Documentation License</a>
|
pankso@280
|
192 et codée en <a href="http://validator.w3.org/">xHTML 1.0 valide</a>.
|
pankso@280
|
193 </div>
|
pankso@280
|
194
|
pankso@280
|
195 </body>
|
pankso@280
|
196 </html>
|