Personalizando a ISO do Trisquel

Este artigo começou como uma tradução do artigo Customizing a Trisquel iso, disponível na página do próprio Trisquel. Este artigo foi expandido com algumas informações do Live CD Customization, do Ubuntu, além de informações próprias.


Primeiramente, uma ISO é uma imagem de um CD ou DVD. Você pode pegar um CD ou DVD e transformar todo o seu conteúdo em um arquivo, para depois copiá-lo para outro CD ou DVD, tendo duas mídias exatamente iguais. Esse arquivo é que é o iso. Para gravar um iso você deve escolher a opção que fala de "Escrever imagem no disco" ou algo parecido, no seu programa de gravação de CD e DVD.

O CD e o DVD do Trisquel (assim como o do Ubuntu, do Mint e de outros, o que inclui o DVD do CyanPack) traz o sistema operacional de modo que funcionará a partir da mídia, sem precisar instalar. Adicionalmente, permitirá instalação. É algo bem bacana e que quem é usuário de software livre já conhece há alguns anos.

O bom é que você pode personalizar esse arquivo iso, para que venha com os programas que você quer. É o que eu faço para criar a versão modificada do Trisquel, que é distribuída no CyanPack em DVD. E neste artigo, vou mostrar pra você  como fazer isso.

Pré-requisitos

Primeiro você precisa de espaço em disco. Há dois estágios na criação do arquivo iso. Além da iso original, você precisará colocar todo o conteúdo dela em uma pasta, depois replicar o maior arquivo dela para uma outra pasta. E precisa do espaço que usará para a nova iso. Para a iso internacional do Trisquel, por exemplo, para mudanças pequenas, é seguro ter pelo menos 10G livres (sem contar a iso original).

Você precisa da iso na mesma arquitetura que você está usando. Vai poder customizar uma iso de 64 bits se estiver rodando o sistema atual em 64 bits. As imagens de mídia do Trisquel você encontra na página de Downloads do site da distribuição.

Ah, claro, você precisa de uma dessas distribuições instaladas para servir de ambiente de trabalho. Trisquel, Mint, Ubuntu... Ou alguma igualmente compatível. Nela, você precisa instalar os pacotes squashfs-tools e genisoimage.

sudo apt-get install squashfs-tools genisoimage

Desempacotando

Bom, você já tem o iso? Então vamos começar.

Abra um terminal. Os comandos todos deverão ser executados como usuário root. Para isso você pode digitar

sudo bash

Agora, você precisará de um diretório vazio. Se você não mexeu muito na sua instalação, provavelmente o diretório /mnt estará disponível. Se tiver dúvidas, crie e utilize um outro. Eu geralmente utilizo o /mnt mesmo e comigo funciona.

mount -o loop trisquel-original.iso /mnt
cp -a /mnt trisquel-midia
umount /mnt

Pronto, você tem o conteúdo da imagem todo em uma pasta (trisquel-midia). Vamos então pegar o conteúdo do sistema efetivamente, que fica no arquivo squashfs:

mount -o loop trisquel-midia/casper/filesystem.squashfs /mnt
cp -a /mnt trisquel-sistema
umount /mnt

A pasta trisquel-sistema é onde vamos trabalhar.

O arquivo Preseed

O Trisquel vem com um arquivo que permite a preleitura de valores para o banco debconf. Você pode achá-lo em src/preseed/trisquel.seed. O arquivo contém exemplos comentados do que você pode fazer, como mudar o idioma padrão, configurar rede estática ou instalar automagicamente um conjunto extra de pacotes antes de o processo de instalação do live-CD ser concluído (nesse caso você precisará de internet durante a instalação).

Se as mudanças e adaptações de que você precisa puderem ser feitas smplesmente alterando este arquivo, você não precisará seguir o próximo passo.

Bom, pessoalmente não usei ainda esse arquivo, mas #ficadica.

Modificando

Vamos começar a festa. O ambiente ainda não está 100% pronto, pois vamos completá-lo:

cp /etc/resolv.conf trisquel-sistema/etc
mount --bind /dev trisquel-sistema/dev
chroot trisquel-sistema
mount -t proc none /proc
mount -t sysfs none /sys
mount -t devpts none /dev/pts

Pronto! Agora sim podemos brincar pra valer! Comece com apt-get update e apt-get upgrade. Depois você instala tudo o que você precisar, com apt-get, e pode fazer as personalizações que achar necessárias (claro, tudo em linha de comando).

Quando encerrar tudo, você precisa executar

apt-get clean
echo "" > /etc/resolv.conf
umount /dev/pts
umount /sys
umount /proc || umount -lf /proc
exit
umount trisquel-sistema/dev

Caso você tenha substituido o kernel ou os scripts de boot, copie os arquivos do kernel e initrd dessaforma:

cp trisquel-sistema/boot/vmlinuz-custom trisquel-midia/isolinux/vmlinuz
cp trisquel-sistema/boot/initrd.img-custom trisquel-midia/isolinux/initrd

Reempacotando

Depois de as mudanças serem feitas, você precisa reconstruir o squashfs e o arquivo .iso.

Comprima o sistema em um arquivo squashfs, apagando o original:

rm trisquel-midia/casper/filesystem.squashfs
mksquashfs trisquel-sistema trisquel-midia/casper/filesystem.squashfs

Pra terminar, crie o arquivo de imagem:

mkisofs -D -r -V "Meu Trisquel personalizado" -cache-inodes \
-J -l -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot \
-boot-load-size 4 -boot-info-table -o trisquel-personalizado.iso trisquel-midia

Deixe claro para todos que a versão que você está distribuindo não é uma imagem .iso oficial.

Por fim, no caso de personalizar o Trisquel eles pedem: se qualquer software não livre foi incluído, por favor renomeie seu projeto e não use o nosso logotipo.

P. S.: Foto do post: CDs Dangling, de Bernzilla

Special: 
Avalie: 
Average: 5 (1 vote)

Comentários

imagem de marcelo
Enviado por marcelo (não verificado) em 10. Março 2013 - 4:40

O Trisquel vem com um arquivo que permite a preleitura de valores para o banco debconf. Você pode achá-lo em src/preseed/trisquel.seed. O arquivo contém exemplos comentados do que você pode fazer, como mudar o idioma padrão, configurar rede estática ou instalar automagicamente um conjunto extra de pacotes antes de o processo de instalação do live-CD ser concluído (nesse caso você precisará de internet durante a instalação)

 

não conseguir mudar a versão do kernel do trisquel seguindo a instrução do arquivo "trisquel.seed", por a caso esse arquivo é auto executavel ?

 

tem que ser dentro ou fora do chroot ?

 

na verdade queria atualizar a versão do kernel de 3.0 para 3.4, seria possivel isso ?


tentei executar esses comandos aqui como root:

# ubiquity        ubiquity/keep-installed string trisquel-base

# d-i base-installer/kernel/linux/initramfs-generators string yaird

 

o primeiro comando foi normal mas o segundo "d-i" tá dando erro, está correta essa execução ? é possivel atualizar o kernel da iso dessa forma ? se for possivel me diz aé como se faz isso, beleza ?

 

gostei demais de seu site, muito legal mesmo, estou divulgando o cyanpack por aqui, muito bom o sistema é um belo projeto 100 % livre, sou meio puchado pra fsf também, os livros e revistas ficaram legais demais nele, muito facil e intuitivo de acessa-los

 

valeu demais, fico na espera de resposta

imagem de bardo
Enviado por bardo em 10. Março 2013 - 11:52

Bem, como eu botei no post, nunca cheguei a utilizar o preseed. Geralmente faço as mudanças via chroot. Teoricamente, o preseed é executado na hora de gerar o iso (creio eu) e dispensa todo o procedimento com chroot.

O Trisquel não usa o Linux, mas o Linux-libre, e até onde eu vi não há a versão 3.6 nos repositórios da versão estável (5.5 - Brigantia) ainda.

Também não testei, mas o identi.ca @dns777 acabou de publicar que saiu a versão 3.8.2 do Linux-libre, compatível com o Trisquel. Também teoricamente, basta adicionar o PPA https://launchpad.net/~linux-libre/+archive/ppa e instalá-lo.

Sendo assim, recomendo que você teste se funciona legal no Trisquel sendo executado (pode ser em modo live). Se funcionar, siga o procedimento via chroot (esquecendo um pouco o preseed), adicionando o ppa e instalando o kernel novo.

Não sei se é a melhor forma, mas acredito que assim funcione. :-)

Quanto aos elogios, muito obrigado! Fico feliz em saber que há gente curtindo o projeto. :-)

Qualquer sugestão é só falar. E depois diz se conseguiu ou não fazer sua iso custom.

Abraço

imagem de Marcelo
Enviado por Marcelo (não verificado) em 10. Março 2013 - 22:12

meu irmão, tentei fazer da forma que você me disse, e não deu certo, o sistema dá boot normalmente mas o touchepad não funciona, só o teclado funciona daé só consigo usar o terminal mesmo.

 

retirei todo o kernel antigo via chroot e instalei o 3.8.2 libre via chroot mesmo, instala tudo normalmente, na hora de fazer o iso, peguei o vmlinuz e o initrd.lz do kernel novo e coloquei no trisquel-midia/casper (renomei os dois), mas mesmo assim nada, ele cria normalmente o arquivo iso e roda o boot normalmente, só não  funiona o touchpad mesmo, não tentei um mouse usb pois estou sem nenhum no momento, mas de certa forma falhou do mesmo jeito.

 

a sengunda forma  que tentei foi editar o trisquel.seed e descomentei as seguintes linhas:

d-i base-installer/kernel/linux/initramfs-generators string yaird
d-i base-installer/kernel/image string linux-generic

 

e refiz a iso novamente do 0, mas nada adiantou, exatamente o mesmo problema do touchpad não funcionar, só funciona o teclado.

 

mas valeu demais pelas dicas, vou continuar tentando até conseguir, acho que estou perto da solução.

 

valeu, abraço : )

imagem de bardo
Enviado por bardo em 11. Março 2013 - 9:37

Talvez seja um problema de suporte desativado, não? Encara recompilá-lo? :-P

imagem de Marcelo
Enviado por Marcelo (não verificado) em 11. Março 2013 - 14:08

acho que vou tentar recompilar mesmo, tentar o 3.4 primeiro e ver se da certo com esse kernel, mas acho que tem que recompilar o squafs e mais alguma coisa que não tô conseguindo indentificar, talvez seja o que carrega os modulos do kernel.

 

mas valeu.

Comentar


Warning: PHP Startup: Unable to load dynamic library '/opt/php56/lib/php/extensions/no-debug-non-zts-20131226/pdo.so' - /opt/php56/lib/php/extensions/no-debug-non-zts-20131226/pdo.so: cannot open shared object file: No such file or directory in Unknown on line 0

Warning: PHP Startup: Unable to load dynamic library '/opt/php56/lib/php/extensions/no-debug-non-zts-20131226/pdo_mysql.so' - /opt/php56/lib/php/extensions/no-debug-non-zts-20131226/pdo_mysql.so: cannot open shared object file: No such file or directory in Unknown on line 0

Warning: PHP Startup: Unable to load dynamic library '/opt/php56/lib/php/extensions/no-debug-non-zts-20131226/php_pdo_odbc.dll' - /opt/php56/lib/php/extensions/no-debug-non-zts-20131226/php_pdo_odbc.dll: cannot open shared object file: No such file or directory in Unknown on line 0