slitaz-doc-wiki-data annotate pages/pt/handbook/hacklivecd.txt @ rev 3

Add pages/pt folder.
author Christopher Rogers <slaxemulator@gmail.com>
date Sat Feb 26 12:12:42 2011 +0000 (2011-02-26)
parents
children
rev   line source
slaxemulator@3 1 ====== Hackeando o LiveCD ======
slaxemulator@3 2
slaxemulator@3 3 //Hackeando o LiveCD// ou //como se divertir manipulando a imagem ISO do LiveCD//. Note que você também pode criar uma variação do LiveCD usando o Tazlito. Criar as suas próprias imagens ISO bootáveis é fácil e os passos para tal serão descritos cuidadosamente neste documento. A manipulação de uma imagem ISO permite adicionar novos arquivos ou modificar os existentes no LiveCD do SliTaz. A imagem ISO do SliTaz ocupa menos de 30 MB, ao passo que um CD-R ou CD-RW possui cerca de 700 MB, então há muito espaço para expansão. Por exemplo, você pode armazenar suas imagens e até mesmo criar um slideshow live usando o GQview. Hackear a imagem ISO permite modificar os arquivos de configuração do gerenciador de boot, imagens splash (mostradas durante o processo de inicialização) e o próprio GRUB. Pode-se também adicionar o utilitário Memtest86 (usado para testar a memória RAM do sistema). Com as mesmas técnicas é possível modificar o sistema de arquivos - o que requer manipulação extra e um pouco mais de tempo.
slaxemulator@3 4
slaxemulator@3 5 ===== Organização e Preparação =====
slaxemulator@3 6
slaxemulator@3 7 Para começar, precisamos definir um local de trabalho, criando diretórios e diversos subdiretórios que irão armazenar diferentes arquivos. O hacking da imagem ISO pode ser feito utilizando-se o próprio SliTaz ou outra distribuição GNU/Linux, como o Debian, Fedora, PCLInuxOS, etc. Se você utiliza o SliTaz como LiveCD (quando pode remover o cd assim que o sistema já foi carregado na memória RAM e assim queimar uma nova ISO) é recomendável usar uma mídia USB para gravar os diretórios de trabalho, caso contrário tudo o que for feito será perdido após o desligamento do sistema. Comece criando um diretório para o hacking na raíz de seu espaço de usuário, ou seja, o diretório ///home/slitaz// (na versão estável do LiveCD). O uso de ///home/slitaz// permite o armazenamento de uma imagem ISO original e dá a opção de criar um diretório //src/// para o download de possíveis pacotes de fontes. Todos os estágios do hacking pode ser feitos na linha de comando via um terminal X (Xterm) ou em modo console no terminal Linux. Recomendamos que todos os comandos sejam executados pelo usuário root para se evitar problemas relacionados à permissões. Para se tornar root e criar o diretório ///home/slitaz/hacked//, digite os comandos:
slaxemulator@3 8
slaxemulator@3 9 <code>$ su
slaxemulator@3 10 # mkdir -p /home/slitaz/hacked
slaxemulator@3 11 (# mkdir -p /home/slitaz/src)
slaxemulator@3 12 # cd /home/slitaz/hacked
slaxemulator@3 13 </code>
slaxemulator@3 14
slaxemulator@3 15 ===== Obtendo o conteúdo da ISO =====
slaxemulator@3 16
slaxemulator@3 17 Agora que você está no diretório de trabalho, deve criar a raíz da ISO modificada e obter os arquivos da ISO original do SliTaz - o kernel Linux (bzImage), o sistema de arquivos comprimido (rootfs.gz) e os arquivos do gerenciador de boot Isolinux. Para a obtenção destes arquivos há duas opções, de um cdrom gravado ou de uma imagem ISO armazenada localmente. Para criar a raíz do seu CD (rootcd) e copiar os arquivos de um cdrom que se encontra em ///dev/cdrom// montado em ///media/cdrom//:
slaxemulator@3 18
slaxemulator@3 19 <code># mount -t iso9660 /dev/cdrom /media/cdrom
slaxemulator@3 20 # mkdir rootcd
slaxemulator@3 21 # cp -a /media/cdrom/* rootcd
slaxemulator@3 22 </code>
slaxemulator@3 23
slaxemulator@3 24 Para montar uma imagem ISO usando loop em um diretório temporário ///tmp/loop// (usando a imagem slitaz-cooking.iso), criar a raíz do CD (rootcd), copiar todos os arquivos e desmontar a imagem:
slaxemulator@3 25
slaxemulator@3 26 <code># mkdir /tmp/loop
slaxemulator@3 27 # mount -o loop slitaz-cooking.iso /tmp/loop
slaxemulator@3 28 # mkdir rootcd
slaxemulator@3 29 # cp -a /tmp/loop/* rootcd
slaxemulator@3 30 # umount /tmp/loop
slaxemulator@3 31 </code>
slaxemulator@3 32
slaxemulator@3 33 Voilà, todos os arquivos necessário devem estar agora presentes no diretório rootcd. Para ter certeza, você pode listar todos os arquivos recursivamente com o comando //ls//:
slaxemulator@3 34
slaxemulator@3 35 <code># ls -R rootcd</code>
slaxemulator@3 36
slaxemulator@3 37 ===== Adicionando arquivos à ISO =====
slaxemulator@3 38
slaxemulator@3 39 A adição de vários arquivos e diretórios para a imagem ISO consiste simplesmente em copiar os dados para a raíz do cdrom (rootcd/) e gerar uma nova imagem. Os dados devem ser organizados em um ou dois diretórios criados na raíz do CD. Uma vez que a imagem ISO for queimada para um CD-R/CD-RW você pode usar o SliTaz como antes, montado em ///media/cdrom// e acessar os arquivos com o emelFM2, Clex ou pela linha de comando. Seus dados poderão ser lidos por qualquer sistema GNU/Linux, BSD ou até mesmo... Windows.
slaxemulator@3 40
slaxemulator@3 41 ==== Criando diretórios e copiando dados ====
slaxemulator@3 42
slaxemulator@3 43 Para criar e copiar arquivos, você pode começar usando a linha de comando e então continuar por meio de algum programa gráfico como um simples usuário. Nós iremos criar um diretório //images/// como usuário root e então vamos mudar as permissões para que todos os usuários tenham acesso de escrita:
slaxemulator@3 44
slaxemulator@3 45 <code># mkdir rootcd/images
slaxemulator@3 46 # chmod 777 rootcd/images
slaxemulator@3 47 </code>
slaxemulator@3 48
slaxemulator@3 49 Agora que o diretório existe e qualquer usuário pode escrever nele, você pode adicionar arquivos no diretório. Quando terminar você pode então gerar uma imagem ISO bootável.
slaxemulator@3 50
slaxemulator@3 51 ===== Modificando a configuração do isolinux =====
slaxemulator@3 52
slaxemulator@3 53 A modificação do isolinux permite a criação de entradas customizadas por meio dos parâmetros de pre-boot, por exemplo pode-se adicionar um label que inicializa o SliTaz com as opções //lang=en// e //kmap=en//. Pode-se também modificar o design, mudando-se a imagem splash que é mostrada na inicialização. O aplicativo isolinux gerencia o início do gerenciador de boot do LiveCD e é fornecido pelo pacote Syslinux. O arquivo fonte do Syslinux fornece vários aplicativos que são usados para inicializar um sistema GNU/Linux. O binário //isolinux.bin// controla o carregamento do boot de fato. O gerenciador de boot é simples, rápido e facilmente configurável tanto graficamente quanto usando um editor de texto. A síntaxe do arquivo de configuração //isolinux.cfg// é fácil de compreender - para adicionar novas entradas apenas copie e cole a partir do arquivo original. Para editar o arquivo usando o leafpad:
slaxemulator@3 54
slaxemulator@3 55 <code># leafpad rootcd/boot/isolinux/isolinux.cfg &</code>
slaxemulator@3 56
slaxemulator@3 57 ==== Arquivo de configuração isolinux.cfg ====
slaxemulator@3 58
slaxemulator@3 59 O arquivo //isolinux.cfg// encontrado na versão padrão do LiveCD do SliTaz inicia com o valor display, que mostra tanto um arquivo de texto quando um arquivo //isolinux.msg// que se utiliza de 24 caracteres ASCII e uma imagem splash. O valor default define o nome da label iniciada por padrão depois de dado período de tempo (timeout). Timeout é o número de segundos a esperar antes de bootar o sistema, pode-se utilizar o valor "0" para bootar o sistema imediatamente ou um tempo de espera tão longo quanto "80" segundos. O prompt pode ser desativado usando o valor 0, F1, F2, F3 ativarão arquivos de ajuda e F4 mostra um arquivo de texto:
slaxemulator@3 60
slaxemulator@3 61 <code>display isolinux.msg
slaxemulator@3 62 default slitaz
slaxemulator@3 63 label slitaz
slaxemulator@3 64 kernel /boot/bzImage
slaxemulator@3 65 append initrd=/boot/rootfs.gz rw root=/dev/null vga=788
slaxemulator@3 66 implicit 0
slaxemulator@3 67 prompt 1
slaxemulator@3 68 timeout 80
slaxemulator@3 69 F1 help.txt
slaxemulator@3 70 F2 options.txt
slaxemulator@3 71 F3 isolinux.msg
slaxemulator@3 72 F4 display.txt
slaxemulator@3 73 </code>
slaxemulator@3 74
slaxemulator@3 75 Exemplo de uma label //slitazen// na qual pode-se adicionar ao arquivo original opções para configurar diretamente a linguagem do sistema para inglês e usar o layout de teclado UK:
slaxemulator@3 76
slaxemulator@3 77 <code>label slitazen
slaxemulator@3 78 kernel /boot/bzImage
slaxemulator@3 79 append initrd=/boot/rootfs.gz rw root=/dev/null lang=en kmap=en
slaxemulator@3 80 </code>
slaxemulator@3 81
slaxemulator@3 82 Uma vez terminadas as modificações no arquivo de configuração, não se esqueça de salvar suas mudanças e gerar uma imagem ISO bootável com o isolinux.
slaxemulator@3 83
slaxemulator@3 84 ===== Instalando e usando o Memtest86 =====
slaxemulator@3 85
slaxemulator@3 86 O aplicativo memtest86 (92 kb) é uma ferramenta para testar a memória RAM do sistema. Ele faz testes profundos que, se falharem, apontam fortemente para uma falha de hardware. A ferramenta se encontra no diretório //boot/// e e pode ser iniciada diretamente digitando-se //memtest// no prompt do isolinux. Vá até ///home/slitaz/src// (se o diretório não existir: //mkdir -p /home/slitaz/src//), faça o download do fonte e descompacte:
slaxemulator@3 87
slaxemulator@3 88 <code># cd /home/slitaz/src
slaxemulator@3 89 # wget http://www.memtest86.com/memtest86-3.3.tar.gz
slaxemulator@3 90 # tar xzf memtest86-3.3.tar.gz
slaxemulator@3 91 </code>
slaxemulator@3 92
slaxemulator@3 93 Ao descompactar o fonte do pacote memtest86 você encontrará o arquivo README que fornece informações sobre a ferramenta. Agora você pode instalar o aplicativo na raíz do CD de sua imagem ISO hackeada. Baseado na premissa de que seu diretório de trabalho é ///home/slitaz/hacked//, vamos copiar o binário pré-compilado para o diretório //boot/// na raíz do CD:
slaxemulator@3 94
slaxemulator@3 95 <code># cp memtest86-3.3/precomp.bin \
slaxemulator@3 96 /home/slitaz/hacked/rootcd/boot/memtest
slaxemulator@3 97 </code>
slaxemulator@3 98
slaxemulator@3 99 Agora que o binário está instalado na raíz do CD, podemos adicionar uma entrada para o memtest86 no arquivo de configuração do isolinux e gerar uma imagem ISO bootável. Vá até ///home/slitaz/hacked// e edite o arquivo //isolinux.cfg// usando o Leafpad:
slaxemulator@3 100
slaxemulator@3 101 <code># cd /home/slitaz/hacked
slaxemulator@3 102 # leafpad rootcd/boot/isolinux/isolinux.cfg &
slaxemulator@3 103 </code>
slaxemulator@3 104
slaxemulator@3 105 E então adicione as seguintes linhas:
slaxemulator@3 106
slaxemulator@3 107 <code>label memtest
slaxemulator@3 108 kernel /boot/memtest
slaxemulator@3 109 </code>
slaxemulator@3 110
slaxemulator@3 111 [[http://www.memtest86.com/|Website oficial do Memtest86]]
slaxemulator@3 112
slaxemulator@3 113 ===== Manipulando o sistema root Live =====
slaxemulator@3 114
slaxemulator@3 115 Mudanças na raíz do sistema Live permitem a você, por exemplo, adicionar novos usuários e senhas, customizar os gráficos ou executar comando automaticamente no momento do boot. As operações necessárias para mudar o sistema de arquivos root são: extrair o sistema de arquivos comprimido //rootfs.gz//, modificar, reconstruir a imagem e gerar a ISO. Baseado no pressuposto de que você preparou um diretório de trabalho, iremos começar criando um diretório para conter arquivos no sistema modificado. Como o sistema de arquivos comprimido é nomeado rootfs.gz, sugerimos que você utilize um diretório chamado //rootfs/// para extrai-lo. Vá até o diretório //hacked///, crie o diretório raiz e copie o sistema de arquivos comprimido para //rootcd/boot/// (a raíz do cdrom):
slaxemulator@3 116
slaxemulator@3 117 <code># cd /home/slitaz/hacked
slaxemulator@3 118 # mkdir rootfs
slaxemulator@3 119 # cp rootcd/boot/rootfs.gz rootfs
slaxemulator@3 120 </code>
slaxemulator@3 121
slaxemulator@3 122 Agora que uma cópia do sistema de arquivos comprimido está em seu devido lugar, apenas descomprima com o cpio. Tecnicamente, o rootfs.gz é um arquivo cpio comprimido com lzma ou gzip. É reconhecido pelo kernel Linux como uma imagem initramfs. No momento em que a máquina é iniciada, o kernel é carregado na memória e então descomprime a imagem do sistema e executa os scripts de inicialização.
slaxemulator@3 123
slaxemulator@3 124 Para extrair o sistema de arquivos para //rootfs/// e deletar a cópia não arquivada (lembre-se que você pode copiar & colar os comando):
slaxemulator@3 125
slaxemulator@3 126 <code># cd rootfs
slaxemulator@3 127 # (zcat rootfs.gz 2>/dev/null || lzma d rootfs.gz -so) | cpio -id
slaxemulator@3 128 # rm rootfs rootfs.gz
slaxemulator@3 129 </code>
slaxemulator@3 130
slaxemulator@3 131 O sistema está pronto para ser hackeado, você pode listar todos os arquivos na raíz de seu sistema usando o comando //ls//.
slaxemulator@3 132
slaxemulator@3 133 ==== Modificando um arquivo ====
slaxemulator@3 134
slaxemulator@3 135 Para manter as coisas simples a ajudar você a entender os princípios, nós vamos mudar um script no intuito de executar alguns comandos automaticamente após o CD inicializar o sistema. O alvo é o arquivo //etc/init.d/local.sh//, abra-o com seu editor favorito, ou com o Geany:
slaxemulator@3 136
slaxemulator@3 137 <code># geany etc/init.d/local.sh &</code>
slaxemulator@3 138
slaxemulator@3 139 Iremos adicionar um comando que mostra uma messagem e faz o sistema "dormir" por 4 segundos. Exemplo usando o script referido:
slaxemulator@3 140
slaxemulator@3 141 <code>echo "* Hacked SliTaz version booting..."
slaxemulator@3 142 sleep 4
slaxemulator@3 143 </code>
slaxemulator@3 144
slaxemulator@3 145 ==== Reconstruindo a imagem do sistema comprimido ====
slaxemulator@3 146
slaxemulator@3 147 Uma vez tendo feito as mudanças, pode-se reconstruir a imagem comprimida de seu sistema usando o //find// para encontrar os arquivos, cpio para arquivar, lzma e gzip para comprimir e o sinal de "pipe" | para conectar todos os comandos. Isto deve ser feito a partir do sistema de arquivos raiz (rootfs/) e cria um arquivo comprimido rootfs.gz no diretório precedente:
slaxemulator@3 148
slaxemulator@3 149
slaxemulator@3 150 <code># find . -print | cpio -o -H newc | lzma e -si -so > ../rootfs.gz</code>
slaxemulator@3 151
slaxemulator@3 152 Ou com o gzip:
slaxemulator@3 153
slaxemulator@3 154 <code># find . -print | cpio -o -H newc | gzip -9 > ../rootfs.gz</code>
slaxemulator@3 155
slaxemulator@3 156 Finalmente copie o arquivo do sistema comprimido para o diretório //boot/// na raíz do CD e gere uma imagem ISO bootável com o isolinux. Para copiar o novo rootfs comprimido no diretório de trabalho:
slaxemulator@3 157
slaxemulator@3 158
slaxemulator@3 159 <code># cd ../
slaxemulator@3 160 # cp -a rootfs.gz rootcd/boot
slaxemulator@3 161 </code>
slaxemulator@3 162
slaxemulator@3 163 ===== Gerando uma imagem ISO bootável =====
slaxemulator@3 164
slaxemulator@3 165 O seguinte comando cria uma imagem com o gerenciador de boot isolinux, usando o aplicativo genisoimage com algumas opções. O nome da ISO é especificado no começo, depois da opção //-o// e o diretório raiz (rootcd) ao final, depois da opção //-boot-info-table//:
slaxemulator@3 166
slaxemulator@3 167 <code># genisoimage -R -o slitaz-hacked.iso -b boot/isolinux/isolinux.bin \
slaxemulator@3 168 -c boot/isolinux/boot.cat -no-emul-boot -boot-load-size 4 \
slaxemulator@3 169 -V "SliTaz-Hacked" -input-charset iso8859-1 -boot-info-table rootcd
slaxemulator@3 170 </code>
slaxemulator@3 171
slaxemulator@3 172 Se você quiser checar o conteúdo da imagem ISO antes de queimá-la num CD, apenas monte a imagem em loop e liste os arquivos. No SliTaz e na maioria das distribuições GNU/Linux, você pode queimar imagens em formato ISO para cd's com o utilitário wodim.
slaxemulator@3 173
slaxemulator@3 174 ==== Gere uma nova ISO a partir de um script ====
slaxemulator@3 175
slaxemulator@3 176 Se você quiser testar diversas novas possibilidades e gerar diversas imagens ISO, pode querer também semi-automatizar o processo através de um simples SHell script. Este pequeno script pode ser editado na linha de comando ou graficamente, mas não se esqueça de torna-lo executável. Você pode criar o script com o //cat//, note que EOF significa "End Of File" (fim do arquivo). Para criar o script //gen_hacked_iso.sh// usando duas variáveis para mudar o nome da imagem ISO e o "path" (caminho) para o diretório raíz do cdrom:
slaxemulator@3 177
slaxemulator@3 178 <code># cat > gen_hacked_iso.sh << "EOF"
slaxemulator@3 179 #!/bin/sh
slaxemulator@3 180 # Gera uma nova imagem ISO hackeada.
slaxemulator@3 181 #
slaxemulator@3 182 ISO_NAME="slitaz-hacked.iso"
slaxemulator@3 183 ROOTCD="rootcd"
slaxemulator@3 184
slaxemulator@3 185 genisoimage -R -o $ISO_NAME -b boot/isolinux/isolinux.bin \
slaxemulator@3 186 -c boot/isolinux/boot.cat -no-emul-boot -boot-load-size 4 \
slaxemulator@3 187 -V "SliTaz-Hacked" -input-charset iso8859-1 -boot-info-table $ROOTCD
slaxemulator@3 188
slaxemulator@3 189 EOF
slaxemulator@3 190 </code>
slaxemulator@3 191
slaxemulator@3 192 Para usar o script, torne-o executável:
slaxemulator@3 193
slaxemulator@3 194 <code># chmod +x gen_hacked_iso.sh
slaxemulator@3 195 # ./gen_hacked_iso.sh
slaxemulator@3 196 </code>