terça-feira, 30 de julho de 2013

Realizando a Remasterização

Realizando a Remasterização

Neste tópico é demonstrado com remasterizar uma distribuição derivada do Debian, o Ubuntu, bem como mostrar a facilidade deste processo de customização.




Pré-requisitos


Nesta fase vamos ver como preparar um ambiente para customização de uma versão personalizada do Ubuntu. Vamos utilizar um processo manual, pois temos maior flexibilidade do processo do que se utilizarmos ferramentas como Remastersys ou Reconstructor, mas nada impedem de utilizá-las caso seja de vossa vontade.

Pré-requisitos:
  • Um PC ou notebook;
  • 1 GB ou superior de RAM;
  • HD 40 GB ou superior;
  • Ubuntu 12.04 instalado dependendo da arquitetura da sua máquina (32 ou 64 bits);
  • Acesso a internet de alta velocidade.

Após ter instalado o sistema em sua máquina, vamos instalar alguns pacotes necessários para darmos início ao processo de customização do Ubuntu. Para isso será necessário baixar e instalar os seguintes pacotes:
  • squashfs-tools;
  • genisoimage;
  • build-essential;
  • libusplash-dev;
  • libbogl-dev.

Abra o terminal e digite o comando:

$ sudo apt-get install squashfs-tools genisoimage build-essential libusplash-dev libbogl-dev

Terminado a instalação dos pacotes necessários,  agora deve-se carregar o módulo "squashfs", basta digitar o comando:

$ sudo modprobe squashfs

P.S.: Este módulo deve ser sempre carregado quando estivemos customizando o sistema, sempre que o sistema for reiniciado verifique se o módulo foi carregado executando o seguinte comando:

$ lsmod | grep squashfs

Caso o módulo esteja carregado, será apresentado o resultado semelhante a:

squashfs xxxxx x

Antes de iniciarmos a customização do sistema, devemos baixar uma imagem .iso do Ubuntu e criar um diretório e alguns subdiretórios no "/home/usuario", para isto vamos fazer o seguinte.

Obs.: "/home/usuario" deve ser substituído pelo nome de usuário que você usar para entrar no sistema, ou seja, se seu nome de usuário for "fulano" você deve criar o diretório em "/home/fulano".

Abra um terminal e digite o comando:

$ mkdir Distro

Agora entre no diretório criado.

$ cd Distro

Vamos criar os subdiretórios.

$ mkdir mnt extract-cd squashfs edit

Para baixar a imagem .iso clique visite: http://releases.ubuntu.com/12.04/

Terminado o download, devemos copiar a imagem para o diretório Distro:

$ cp "/home/usuario/localondesalvouaimagem"/ubuntu-12.04-desktop-i386.iso "/home/usuario/Distro

Montamos a imagem no subdiretório mnt com o comando:

$ sudo mount -o loop ubuntu-12.04-desktop-i386.iso mnt

Extraímos o conteúdo da imagem .iso:

$ rsync --exclude=/casper/filesystem.squashfs -a mnt/ extract-cd

Montar o filesystem squashfs:

$ sudo mount -t squashfs -o loop mnt/casper/filesystem.squashfs squashfs

Extrair o conteúdo do subdiretório squashfs para o edit:

$ sudo cp -a squashfs/* edit/

Esta etapa demora algum tempo para ser completada...

zzzzzzzzzzzzzzzzz

Pronto! Completada esta etapa, vamos transformar um diretório no diretório-raiz através do comando (chroot). Utilizaremos o subdiretório "edit" para ser nosso diretório-raiz.

Abra um terminal e execute:

$ sudo mount -t none -o bind /tmp /home/usuario/Distro/edit/tmp
$ xhost +

Vá para o diretório de trabalho:

$ cd Distro

Dê permissão de acesso à rede ao chroot:

$ sudo cp /etc/resolv.conf edit/etc/
$ sudo cp /etc/hosts edit/etc/

Montar os dispositivos necessários e executar o chroot:

$ sudo mount --bind /dev/ edit/dev
$ sudo chroot edit
# mount -t proc none /proc
# mount -t sysfs none /sys


Criar as variáveis:

# export HOME=/root
# export LC_ALL=C

Obs.: Se quisermos executar programas gráficos dentro do chroot, devemos executar um comando antes de executar o chroot e declarar uma variável dentro do chroot. Abaixo segue o comando.

# export DISPLAY=:0.0

NÃO FECHE A JANELA DO TERMINAL, pois será utilizada nos procedimentos seguintes. 


Configuração do sistema


Nesta etapa vamos ver como alterar algumas características, configurar e instalar novos programas. Esta fase é aonde faremos todas essas modificações, peço que atentem-se muito, pois será a "alma" do seu novo sistema, o que fizer neste momento irá acarretar um sistema bem configurado ou não.

Lembrem-se que todos os procedimentos de personalização deverá ser feito com chroot e o módulo squashfs em execução. Caso tenha esquecido volte a página anterior para saber como executar os comandos.

Habilitando e adicionando novos repositórios

No terminal, dentro do diretório-raiz (chroot) dê o seguinte comando:

# nano etc/apt/sources.list

Você verá a lista de seus repositórios, é recomendável descomentar todos, para isto, basta retirar "#" do lado link que contiver.

Seguem alguns repositórios extras.

deb http://wine.budgetdedicated.com/apt jaunty main
deb http://packages.medibuntu.org/ jaunty free non-free
deb http://dl.google.com/linux/deb/ stable non-free
deb http://ppa.launchpad.net/tualatrix/ubuntu jaunty main
deb http://ppa.launchpad.net/xorg-edgers/ppa/ubuntu jaunty main

Agora salve a lista e saia do editor.

ctrl + o e ctrl + x

Execute:

# apt-get update

Neste momento será apresentada uma mensagem de erro de chaves, para poder instalar as chaves utilize os comandos abaixo.

# wget -q http://wine.budgetdedicated.com/apt/387EE263.gpg -O- | apt-key add -
# wget -q https://dl-ssl.google.com/linux/linux_signing_key.pub -O- | apt-key add -
# apt-key adv --recv-keys --keyserver keyserver.ubuntu.com FE85409EEAB40ECCB65740816AF0E1940624A220
# apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 165d673674a995b3e64bf0cf4f191a5a8844c542
# apt-get update && apt-get install medibuntu-keyring && apt-get update

Vamos agora atualizar nosso sistema, para isto faremos os seguinte:

# update-apt-xapian-index
# apt-get update
# apt-get dist-upgrade --assume-yes --force-yes

Neste momento vamos definir o que iremos instalar.

No terminal que está executando o chroot, execute o comando:

# apt-get install build-essential xorg-dev autoconf automake libtool nasm yasm gettext b43-fwcutter language-pack-pt language-pack-pt-base language-support-pt language-support-writing-pt language-pack-gnome-pt language-pack-gnome-pt-base language-pack-kde-pt kde-l10n-ptbr openoffice.org-help-pt-br openoffice.org-l10n-pt-br thunderbird-locale-pt-br aspell-pt-br brazilian-conjugate ibrazilian wbrazilian ubuntu-restricted-extras totem-xine mp3gain libdvdread4 libdvdnav4 lame mplayer aacgain aacplusenc libdvdcss2 mencoder non-free-codecs mjpegtools imagemagick libnjb5 sun-java6-jre sun-java6-plugin ubuntu-tweak gparted bleachbit mozilla-thunderbird mozilla-mplayer skype amsn firestarter gwget gftp amule gtk-gnutella gnome-ppp twitux dia gimp-dcraw inkscape camorama stopmotion vlc avidemux sound-juicer ffmpeg audacity devede acidrip dvdrip gtk-recordMyDesktop subtitleeditor subtitleripper winff subdownloader miro nautilus-clamscan nautilus-gksu nautilus-image-converter nautilus-wallpaper multisync libmultisync-plugin-all synce-multisync-plugin xarchiver rar unrar openoffice.org-base acroread && apt-get remove --purge totem-gstreamer

Assim, montamos um sistema bastante funcional, principalmente para usuário final. Caso queria retirar ou incluir algum pacote, sintam-se à vontade. 


Finalizando


Finalmente, vamos remover os arquivos temporários, fazer alguns ajustes e gerar nossa imagem para ser gravada no DVD.

Logicamente vocês podem remasterizar bem mais o sistema, de forma atender suas necessidades pessoais, mas como o objetivo é dar apenas uma noção de como remasterizar de forma manual, onde temos maior flexibilidade de personalização, quando se sentirem mais confortável na execução dos comandos poderão alterar o tema, usplash, a forma como o sistema inicializa, remover alguns serviços que acham necessário entre infinitas possibilidades que poderá utilizar.

No terminal, executando o chroot, execute os comandos.

Limpar o cache:

# apt-get clean

Remover os arquivos temporários:

# rm -rf /tmp/* ~/.bash_history

Remover as configurações desnecessárias:

# rm /etc/resolv.conf
# rm /etc/hosts

Desmontar o filesystem e finalizar o chroot:

# umount -lf /proc
# umount -lf /sys
# exit
$ sudo umount -lf edit/dev

Ajustando os novos repositórios para ser instalado no HD

Vamos alterar dois scripts que são: 50mirror.ubuntu e 91security, para que desta forma sejam inseridos os novos repositórios utilizados na customização do sistema.

Lembrete: Nesta fase não será mais necessária a utilização do chroot.

$ cd /home/usuario/Distro/edit/usr/lib/ubiquity/apt-setup/generators

Edite o arquivo 50mirror.ubuntu:

$ sudo gedit 50mirror.ubuntu

Retire os comentários dos repositórios da seguinte forma:

Clique no menu Pesquisar > Substituir na janela que foi aberta, digite no campo 'Procurar por': ${ COMMENT }, clique no botão 'Substituir todas' e depois em 'Fechar'. Para remover os comentários, bastar remover o "#" e pronto.

Vamos inserir os novos repositórios.

Procure pela linha "## This software is not part of ubuntu, but is offered by Canonical and the" e insira a seguinte linha logo abaixo, se ainda não tiver sido incluída.

deb-src http://archive.canonical.com/ubuntu $codename partner

No final da sources.list insira seu novo repositório utilizado na customização:

##
##
## Novos repositórios
##

deb http://wine.budgetdedicated.com/apt jaunty main
deb http://packages.medibuntu.org/ jaunty free non-free
deb http://dl.google.com/linux/deb/ stable non-free
deb http://ppa.launchpad.net/tualatrix/ubuntu jaunty main
deb http://ppa.launchpad.net/xorg-edgers/ppa/ubuntu jaunty main

Salve o arquivo e feche o editor.

Vamos alterar o 91security, seguem os mesmos passos acima.

Clique no menu Pesquisar > Substituir na janela que foi aberta, digite no campo 'Procurar por': ${ COMMENT }, clique no botão 'Substituir todas' e depois em 'Fechar'. Para remover os comentários, bastar remover o "#" e pronto.

Salve e feche o editor.

Regerando e comprimindo o filesystem

Abra um terminal e execute os comandos:

$ cd Distro
$ chmod +w extract-cd/casper/filesystem.manifest
$ sudo chroot edit dpkg-query -W --showformat='${Package} ${Version}\n' > extract-cd/casper/filesystem.manifest
$ sudo cp extract-cd/casper/filesystem.manifest extract-cd/casper/filesystem.manifest-desktop
$ sudo sed -i '/ubiquity/d' extract-cd/casper/filesystem.manifest-desktop
$ sudo rm extract-cd/casper/filesystem.squashfs
$ sudo mksquashfs edit extract-cd/casper/filesystem.squashfs -check_data


Defina um novo nome para o sistema:

$ sudo nano extract-cd/README.diskdefines

Altere a linha "define DISKNAME UBUNTU 12.04 "Jaunty Jackalope" - Release i386" para um nome desejado.

Exemplo: define DISKNAME UBUNTU 12.04 "Jaunty customizado por xxxxxxx" - Release i386.

Pronto! Quase tudo terminado, vamos agora criar a imagem do novo sistema... 


Gerando e gravando a imagem (ISO)


Ufa!!! Terminamos nossa customização, agora vamos gerar nossa imagem e verificar se tudo ocorreu bem, para isto faremos o seguinte:

$ cd extract-cd
$ sudo mkisofs -D -r -V "Ubuntu Customizado por XXXXX" -cache-inodes -J -l -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -o ../ubuntu-12.04-desktop-i386-Custom-XXXX.iso .


Obs.: O ponto '.' no final da linha faz parte do comando.

Onde:
  • Ubuntu Customizado por XXXXX - deve ser substituído pelo nome da versão customizada
  • ubuntu-12.04-desktop-i386-Custom-XXXX.iso - deve ser substituído pelo nome do arquivo da imagem a ser gerada

$ cd ..

Gravando a imagem ISO

Esta etapa é opcional, mas caso queira instalar em outros computadores, obviamente terá que gravá-lo em um DVD.

Para gravar não existe segredos. Pode utilizar seu programa predileto ou através do terminal. Como estamos fazendo um processo manual, vamos gravar a imagem pelo terminal.

Abra um terminal e entre no diretório:

$ cd Distro
$ cdrecord dev=/dev/cdrom ubuntu-12.04-desktop-i386-Custom-xxxx.iso


Onde:
  • ubuntu-12.04-desktop-i386-Custom-xxxx.iso - o nome do arquivo da imagem

Pronto, terminamos toda nossa customização, geração e gravação da imagem ISO, basta agora testar o seu novo sistema e ver como ficou.

Caso não queira instalar o sistema fisicamente, utilize uma máquina virtual como VMWARE, VirtualBox para instalar o sistema. 

Nenhum comentário:

Postar um comentário