website view pt/doc/handbook/hacking-livecd.html @ rev 551

Fix c6b2d9c4e031, pt: localy browseable (with file://)
author Pascal Bellard <pascal.bellard@slitaz.org>
date Mon Oct 26 10:30:55 2009 +0100 (2009-10-26)
parents c6b2d9c4e031
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="pt" lang="pt">
5 <head>
6 <title>Manual SliTaz (pt) - Hackeando LiveCD</title>
7 <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1" />
8 <meta name="description" content="slitaz portuguese handbook" />
9 <meta name="expires" content="never" />
10 <meta name="modified" content="2008-07-20 06:08:00" />
11 <meta name="publisher" content="www.slitaz.org" />
12 <meta name="author" content="Christophe Lincoln" />
13 <link rel="shortcut icon" href="favicon.ico" />
14 <link rel="stylesheet" type="text/css" href="book.css" />
15 </head>
16 <body bgcolor="#ffffff" >
18 <!-- Header and quick navigation -->
19 <div id="header">
20 <div id="quicknav" align="right">
21 <a name="top"></a>
22 <a href="web-server.html">Servidor Web</a> |
23 <a href="index.html">Conteúdo</a>
24 </div>
25 <h1><font color="#3e1220">Manual SliTaz (pt)</font></h1>
26 </div>
28 <!-- Content. -->
29 <div id="content">
30 <div class="content-right"></div>
32 <h2><font color="#df8f06">Hackeando o SliTaz LiveCD</font></h2>
34 <ul>
35 <li><a href="hacking-livecd.html#intro">Introdução.</a></li>
36 <li><a href="hacking-livecd.html#pre">Organização e Preparação.</a></li>
37 <li><a href="hacking-livecd.html#add-files">Adicionando arquivos à ISO.</a></li>
38 <li><a href="hacking-livecd.html#isolinux">Modificando a configuração do isolinux.</a></li>
39 <li><a href="hacking-livecd.html#memtest">Instalando e usando o Memtest86.</a></li>
40 <li><a href="hacking-livecd.html#rootfs">Manipulando o sistema root Live.</a></li>
41 <li><a href="hacking-livecd.html#gen-iso">Gerando uma imagem ISO bootável com o isolinux.</a></li>
42 </ul>
44 <a name="intro"></a>
45 <h3>Introdução</h3>
46 <p>
47 <em>Hackeando o LiveCD</em> ou como se divertir manipulando a imagem ISO do LiveCD.
48 Note que você também pode <a href="gen-livecd.html">criar uma variação do LiveCD
49 usando o Tazlito</a>. Criar as suas próprias imagens ISO bootáveis é fácil e os
50 passos para tal serão descritos cuidadosamente neste documento. A manipulação de
51 uma imagem ISO permite adicionar novos arquivos ou modificar os existentes no
52 LiveCD do SliTaz. A imagem ISO do SliTaz ocupa menos de 30 MB, ao passo que um
53 CD-R ou CD-RW possui cerca de 700 MB, então há muito espaço para expansão. Por
54 exemplo, você pode armazenar suas imagens e até mesmo criar um slideshow <em>live</em>
55 usando o GQview. <em>Hackear</em> a imagem ISO permite modificar os arquivos de
56 configuração do gerenciador de boot, imagens <em>splash</em> (mostradas durante
57 o processo de inicialização) e o próprio GRUB. Pode-se também adicionar o utilitário
58 Memtest86 (usado para testar a memória RAM do sistema). Com as mesmas técnicas é
59 possível modificar o sistema de arquivos - o que requer manipulação extra e um
60 pouco mais de tempo.
61 </p>
63 <a name="pre"></a>
64 <h3>Organização e Preparação</h3>
65 <p>
66 Para começar, precisamos definir um local de trabalho, criando diretórios e diversos
67 subdiretórios que irão armazenar diferentes arquivos. O <em>hacking</em> da imagem
68 ISO pode ser feito utilizando-se o próprio SliTaz ou outra distribuição GNU/Linux,
69 como o Debian, Fedora, PCLInuxOS, etc. Se você utiliza o SliTaz como LiveCD
70 (quando pode remover o cd assim que o sistema já foi carregado na memória RAM e
71 assim queimar uma nova ISO) é recomendável usar uma mídia USB para gravar os
72 diretórios de trabalho, caso contrário tudo o que for feito será perdido após
73 o desligamento do sistema. Comece criando um diretório para o <em>hacking</em> na raíz
74 de seu espaço de usuário, ou seja, o diretório <code>/home/slitaz</code> (na
75 versão estável do LiveCD). O uso de <code>/home/slitaz</code> permite o armazenamento
76 de uma imagem ISO original e dá a opção de criar um diretório <code>src/</code>
77 para o download de possíveis pacotes de fontes. Todos os estágios do <em>hacking</em>
78 pode ser feitos na linha de comando via um terminal X (Xterm) ou em modo console
79 no terminal Linux. Recomendamos que todos os comandos sejam executados pelo
80 usuário <em>root</em> para se evitar problemas relacionados à permissões. Para
81 se tornar <em>root</em> e criar o diretório <code>/home/slitaz/hacked</code>,
82 digite os comandos:
83 </p>
84 <pre> $ su
85 # mkdir -p /home/slitaz/hacked
86 (# mkdir -p /home/slitaz/src)
87 # cd /home/slitaz/hacked
88 </pre>
89 <h4>Obtendo o conteúdo da ISO</h4>
90 <p>
91 Agora que você está no diretório de trabalho, deve criar a raíz da ISO modificada
92 e obter os arquivos da ISO original do SliTaz - o kernel Linux (<code>bzImage</code>),
93 o sistema de arquivos comprimido (<code>rootfs.gz</code>) e os arquivos do
94 gerenciador de boot Isolinux. Para a obtenção destes arquivos há duas opções, de
95 um cdrom gravado ou de uma imagem ISO armazenada localmente. Para criar a raíz
96 do seu CD (<code>rootcd</code>) e copiar os arquivos de um cdrom que se encontra
97 em <code>/dev/cdrom</code> montado em <code>/media/cdrom</code>:
98 </p>
99 <pre> # mount -t iso9660 /dev/cdrom /media/cdrom
100 # mkdir rootcd
101 # cp -a /media/cdrom/* rootcd
102 </pre>
103 <p>
104 Para montar uma imagem ISO usando <em>loop</em> em um diretório temporário
105 <code>/tmp/loop</code> (usando a imagem <code>slitaz-cooking.iso</code>), criar
106 a raíz do CD (<code>rootcd</code>), copiar todos os arquivos e desmontar a imagem:
107 </p>
108 <pre> # mkdir /tmp/loop
109 # mount -o loop slitaz-cooking.iso /tmp/loop
110 # mkdir rootcd
111 # cp -a /tmp/loop/* rootcd
112 # umount /tmp/loop
113 </pre>
114 <p>
115 Voilà, todos os arquivos necessário devem estar agora presentes no diretório
116 <code>rootcd</code>. Para ter certeza, você pode listar todos os arquivos
117 recursivamente com o comando <code>ls</code>:
118 </p>
119 <pre> # ls -R rootcd
120 </pre>
122 <a name="add-files"></a>
123 <h3>Adicionando arquivos à ISO</h3>
124 <p>
125 A adição de vários arquivos e diretórios para a imagem ISO consiste simplesmente
126 em copiar os dados para a raíz do cdrom (<code>rootcd/</code>) e gerar uma nova
127 imagem. Os dados devem ser organizados em um ou dois diretórios criados na raíz
128 do CD. Uma vez que a imagem ISO for queimada para um CD-R/CD-RW você pode usar
129 o SliTaz como antes, montado em <code>/media/cdrom</code> e acessar os arquivos
130 com o emelFM2, Clex ou pela linha de comando. Seus dados poderão ser lidos por
131 qualquer sistema GNU/Linux, BSD ou até mesmo... Windows.
132 </p>
133 <h4>Criando diretórios e copiando dados</h4>
134 <p>
135 Para criar e copiar arquivos, você pode começar usando a linha de comando e então
136 continuar por meio de algum programa gráfico como um simples usuário. Nós iremos
137 criar um diretório <code>images/</code> como usuário <em>root</em> e então vamos
138 mudar as permissões para que todos os usuários tenham acesso de escrita:
139 </p>
140 <pre> # mkdir rootcd/images
141 # chmod 777 rootcd/images
142 </pre>
143 <p>
144 Agora que o diretório existe e qualquer usuário pode escrever nele, você pode
145 adicionar arquivos no diretório. Quando terminar você pode então
146 <a href="hacking-livecd.html#gen-iso">gerar uma imagem ISO bootável</a>.
147 </p>
149 <a name="isolinux"></a>
150 <h3>Modificando a configuração do isolinux</h3>
151 <p>
152 A modificação do isolinux permite a criação de entradas customizadas por meio
153 dos parâmetros de <em>pre-boot</em>, por exemplo pode-se adicionar um
154 <code>label</code> que inicializa o SliTaz com as opções <code>lang=en</code>
155 e <code>kmap=en</code>. Pode-se também modificar o design, mudando-se a imagem
156 <em>splash</em> que é mostrada na inicialização. O aplicativo <code>isolinux</code>
157 gerencia o início do <em>gerenciador de boot</em> do LiveCD e é fornecido pelo
158 pacote Syslinux. O arquivo fonte do Syslinux fornece vários aplicativos que são
159 usados para inicializar um sistema GNU/Linux. O binário <code>isolinux.bin</code>
160 controla o carregamento do boot de fato. O gerenciador de boot é simples, rápido
161 e facilmente configurável tanto graficamente quanto usando um editor de texto.
162 A síntaxe do arquivo de configuração <code>isolinux.cfg</code> é fácil de
163 compreender - para adicionar novas entradas apenas copie e cole a partir do
164 arquivo original. Para editar o arquivo usando o leafpad:
165 </p>
166 <pre> # leafpad rootcd/boot/isolinux/isolinux.cfg &amp;
167 </pre>
168 <h4>Arquivo de configuração isolinux.cfg</h4>
169 <p>
170 O arquivo <code>isolinux.cfg</code> encontrado na versão padrão do LiveCD do
171 SliTaz inicia com o valor <code>display</code>, que mostra tanto um arquivo de
172 texto quando um arquivo <code>isolinux.msg</code> que se utiliza de 24 caracteres
173 ASCII e uma imagem <em>splash</em>. O valor <code>default</code> define o nome da
174 <code>label</code> iniciada por padrão depois de dado período de tempo
175 (<code>timeout</code>). <em>Timeout</em> é o número de segundos a esperar antes
176 de bootar o sistema, pode-se utilizar o valor "0" para bootar o sistema imediatamente
177 ou um tempo de espera tão longo quanto "80" segundos. O <code>prompt</code> pode
178 ser desativado usando o valor <code>0</code>, F1, F2, F3 ativarão arquivos de
179 ajuda e F4 mostra um arquivo de texto:
180 </p>
181 <pre class="script">display isolinux.msg
182 default slitaz
183 label slitaz
184 kernel /boot/bzImage
185 append initrd=/boot/rootfs.gz rw root=/dev/null vga=788
186 implicit 0
187 prompt 1
188 timeout 80
189 F1 help.txt
190 F2 options.txt
191 F3 isolinux.msg
192 F4 display.txt
193 </pre>
194 <p>
195 Exemplo de uma <em>label</em> <code>slitazen</code> na qual pode-se adicionar ao
196 arquivo original opções para configurar diretamente a linguagem do sistema para
197 inglês e usar o layout de teclado UK:
198 </p>
199 <pre class="script">label slitazen
200 kernel /boot/bzImage
201 append initrd=/boot/rootfs.gz rw root=/dev/null lang=en kmap=en
202 </pre>
203 <p>
204 Uma vez terminadas as modificações no arquivo de configuração, não se esqueça de
205 salvar suas mudanças e <a href="hacking-livecd.html#gen-iso">gerar uma imagem ISO bootável</a>
206 com o isolinux.
207 </p>
209 <a name="memtest"></a>
210 <h3>Instalando e usando o Memtest86</h3>
211 <p>
212 O aplicativo memtest86 (92 kb) é uma ferramenta para testar a memória RAM do
213 sistema. Ele faz testes profundos que, se falharem, apontam fortemente para uma
214 falha de hardware. A ferramenta se encontra no diretório <code>boot/</code> e
215 e pode ser iniciada diretamente digitando-se <code>memtest</code> no prompt do
216 isolinux. Vá até <code>/home/slitaz/src</code> (se o diretório não existir:
217 <code>mkdir -p /home/slitaz/src</code>), faça o download do fonte e descompacte:
218 </p>
219 <pre> # cd /home/slitaz/src
220 # wget http://www.memtest86.com/memtest86-3.3.tar.gz
221 # tar xzf memtest86-3.3.tar.gz
222 </pre>
223 <p>
224 Ao descompactar o fonte do pacote memtest86 você encontrará o arquivo <code>README</code>
225 que fornece informações sobre a ferramenta. Agora você pode instalar o aplicativo
226 na <em>raíz do CD</em> de sua imagem ISO hackeada. Baseado na premissa de que
227 seu diretório de trabalho é <code>/home/slitaz/hacked</code>, vamos copiar o binário
228 pré-compilado para o diretório <code>boot/</code> na raíz do CD:
229 </p>
230 <pre> # cp memtest86-3.3/precomp.bin \
231 /home/slitaz/hacked/rootcd/boot/memtest
232 </pre>
233 <p>
234 Agora que o binário está instalado na <em>raíz do CD</em>, podemos adicionar uma
235 entrada para o memtest86 no arquivo de configuração do isolinux e
236 <a href="hacking-livecd.html#gen-iso">gerar uma imagem ISO bootável</a>. Vá até
237 <code>/home/slitaz/hacked</code> e edite o arquivo <code>isolinux.cfg</code>
238 usando o Leafpad:
239 </p>
240 <pre> # cd /home/slitaz/hacked
241 # leafpad rootcd/boot/isolinux/isolinux.cfg &amp;
242 </pre>
243 <pre class="script">label memtest
244 kernel /boot/memtest
245 </pre>
246 <p>
247 Website oficial do <a href="http://www.memtest86.com/">Memtest86</a>
248 </p>
250 <a name="rootfs"></a>
251 <h3>Manipulando o sistema root Live</h3>
252 <p>
253 Mudanças na raíz do sistema Live permitem a você, por exemplo, adicionar novos
254 usuários e senhas, customizar os gráficos ou executar comando automaticamente no
255 momento do boot. As operações necessárias para mudar o sistema de arquivos root são:
256 extrair o sistema de arquivos comprimido <code>rootfs.gz</code>, modificar,
257 reconstruir a imagem e gerar a ISO. Baseado no pressuposto de que você
258 <a href="hacking-livecd.html#pre">preparou um diretório de trabalho</a>, iremos começar criando um
259 diretório para conter arquivos no sistema modificado. Como o sistema de
260 arquivos comprimido é nomeado <code>rootfs.gz</code>, sugerimos que você
261 utilize um diretório chamado <code>rootfs/</code> para extrai-lo. Vá até o diretório
262 <code>hacked/</code>, crie o diretório raiz e copie o sistema de arquivos comprimido
263 para <code>rootcd/boot/</code> (a raíz do cdrom):
264 </p>
265 <pre> # cd /home/slitaz/hacked
266 # mkdir rootfs
267 # cp rootcd/boot/rootfs.gz rootfs
268 </pre>
269 <p>
270 Agora que uma cópia do sistema de arquivos comprimido está em seu devido lugar,
271 apenas descomprima com o <code>cpio</code>. Tecnicamente, o <code>rootfs.gz</code>
272 é um arquivo cpio comprimido com lzma ou gzip. É reconhecido pelo kernel Linux
273 como uma imagem <code>initramfs</code>. No momento em que a máquina é iniciada,
274 o kernel é carregado na memória e então descomprime a imagem do sistema e
275 executa os scripts de inicialização.
276 </p>
277 <p>
278 Para extrair o sistema de arquivos para <code>rootfs/</code> e deletar a cópia
279 não arquivada (lembre-se que você pode copiar &amp; colar os comando):
280 </p>
281 <pre> # cd rootfs
282 # (zcat rootfs.gz 2&gt;/dev/null || lzma d rootfs.gz -so) | cpio -id
283 # rm rootfs rootfs.gz
284 </pre>
285 <p>
286 O sistema está pronto para ser hackeado, você pode listar todos os arquivos na
287 raíz de seu sistema usando o comando <code>ls</code>
288 </p>
289 <h4>Modificando um arquivo</h4>
290 <p>
291 Para manter as coisas simples a ajudar você a entender os princípios, nós vamos
292 mudar um script no intuito de executar alguns comandos automaticamente após o CD
293 inicializar o sistema. O alvo é o arquivo <code>etc/init.d/local.sh</code>, abra-o
294 com seu editor favorito, ou com o Geany:
295 </p>
296 <pre> # geany etc/init.d/local.sh &amp;
297 </pre>
298 <p>
299 Iremos adicionar um comando que mostra uma messagem e faz o sistema "dormir" por
300 4 segundos. Exemplo usando o script referido:
301 </p>
302 <pre class="script">echo "* Hacked SliTaz version booting..."
303 sleep 4
304 </pre>
305 <h4>Reconstruindo a imagem do sistema comprimido</h4>
306 <p>
307 Uma vez tendo feito as mudanças, pode-se reconstruir a imagem comprimida de seu
308 sistema usando o <code>find</code> para encontrar os arquivos, <code>cpio</code>
309 para arquivar, <code>lzma</code> e <code>gzip</code> para comprimir e o sinal de
310 "pipe" <code>|</code> para conectar todos os comandos. Isto deve ser feito a
311 partir do sistema de arquivos raiz (<code>rootfs/</code>) e cria um arquivo
312 comprimido <code>rootfs.gz</code> no diretório precedente:
313 </p>
314 <pre>
315 # find . -print | cpio -o -H newc | lzma e -si -so &gt; ../rootfs.gz
316 Ou com o gzip:
317 # find . -print | cpio -o -H newc | gzip -9 &gt; ../rootfs.gz
318 </pre>
319 <p>
320 Finalmente copie o arquivo do sistema comprimido para o diretório <code>boot/</code>
321 na raíz do CD e <a href="hacking-livecd.html#gen-iso">gere uma imagem ISO bootável</a> com o
322 isolinux. Para copiar o novo <em>rootfs</em> comprimido no diretório de trabalho:
323 </p>
324 <pre>
325 # cd ../
326 # cp -a rootfs.gz rootcd/boot
327 </pre>
329 <a name="gen-iso"></a>
330 <h3>Gerando uma imagem ISO bootável</h3>
331 <p>
332 O seguinte comando cria uma imagem com o <em>gerenciador de boot</em>
333 <code>isolinux</code>, usando o aplicativo <code>genisoimage</code> com algumas
334 opções. O nome da ISO é especificado no começo, depois da opção <code>-o</code>
335 e o diretório raiz (<code>rootcd</code>) ao final, depois da opção
336 <code>-boot-info-table</code>:
337 </p>
338 <pre>
339 # genisoimage -R -o slitaz-hacked.iso -b boot/isolinux/isolinux.bin \
340 -c boot/isolinux/boot.cat -no-emul-boot -boot-load-size 4 \
341 -V "SliTaz-Hacked" -input-charset iso8859-1 -boot-info-table rootcd
342 </pre>
343 <p>
344 Se você quiser checar o conteúdo da imagem ISO antes de queimá-la num CD, apenas
345 monte a imagem em <code>loop</code> e liste os arquivos. No SliTaz e na maioria
346 das distribuições GNU/Linux, você pode queimar imagens em formato ISO para cd's
347 com o utilitário <code>wodim</code>.
348 </p>
349 <h4>Gere uma nova ISO a partir de um script</h4>
350 <p>
351 Se você quiser testar diversas novas possibilidades e gerar diversas imagens ISO,
352 pode querer também semi-automatizar o processo através de um simples SHell script.
353 Este pequeno script pode ser editado na linha de comando ou graficamente,
354 mas não se esqueça de fazê-lo executável. Você pode criar o script com o <code>cat</code>,
355 note que <code>EOF</code> significa <em>"End Of File"</em> (fim do arquivo). Para
356 criar o script <code>gen_hacked_iso.sh</code> usando duas variáveis para mudar
357 o nome da imagem ISO e o "path" (caminho) para o diretório raíz do cdrom:
358 </p>
359 <pre> # cat &gt; gen_hacked_iso.sh &lt;&lt; "EOF"</pre>
360 <pre class="script">#!/bin/sh
361 # Gera uma nova imagem ISO hackeada.
362 #
363 ISO_NAME="slitaz-hacked.iso"
364 ROOTCD="rootcd"
366 genisoimage -R -o $ISO_NAME -b boot/isolinux/isolinux.bin \
367 -c boot/isolinux/boot.cat -no-emul-boot -boot-load-size 4 \
368 -V "SliTaz-Hacked" -input-charset iso8859-1 -boot-info-table $ROOTCD
370 EOF
371 </pre>
372 <p>
373 Para usar o script, torne-o executável:
374 </p>
375 <pre> # chmod +x gen_hacked_iso.sh
376 # ./gen_hacked_iso.sh
377 </pre>
379 <!-- End of content -->
380 </div>
382 <!-- Footer. -->
383 <div id="footer">
384 <div class="footer-right"></div>
385 <a href="hacking-livecd.html#top">Topo da Página</a> |
386 <a href="index.html">Conteúdo</a>
387 </div>
389 <div id="copy">
390 Copyright © 2008 <a href="http://www.slitaz.org/pt/">SliTaz</a> -
391 <a href="http://www.gnu.org/licenses/gpl.html">GNU General Public License</a>;<br />
392 Documentation is under
393 <a href="http://www.gnu.org/copyleft/fdl.html">GNU Free Documentation License</a>
394 and code is <a href="http://validator.w3.org/">valid xHTML 1.0</a>.
395 </div>
397 </body>
398 </html>