Criando um Livecd com Stage4 personalizado Objetivo: Muitos usuários iniciantes no Gentoo desconhecem o poder e facilidade que esta distribuição pode oferecer. Muitas das vezes desistem por achar muito demorada a sua instalação quando se trata de servidores. Pensando neste problema resolvi mostrar nesta documentação uma maneira de personalizar as instalações, dando mais velocidade e optimização de maneira prática e que acredito acabar com aquelas frases típicas: Putz! Mas o Gentoo tem que compilar tudo do zero! Demora muito! O Gentoo não tem binários, só sources! O catalyst é uma ferramenta do Gentoo que poderia estar fazendo muitas das coisas que vou colocar aqui, mas de forma muito mais demorada. Além do mais esses procedimentos os quais irei passar poderão ser feitos a partir de qualquer distribuição linux. Vamos então colocar a mão na massa e parar de bla bla bla. :) Requerimentos: 1) Espaço em disco, uns 4Gb ou mais serão sempre bem vindos. 2) Um hardware rápido somente para compilar e gerar os stages que serão usados em outros micros. No meu caso eu estou usando um Dual Xeon 2.4Ghz e 1Gb de ram. Eu sei que muitos vão dizer: ah! Assim é mole! Mas isso pode ser feito até mesmo com um bom P4 ou um bom Athlon. Porque isso não vai ser feito sempre. :) 3) Vamos precisar de uma imagem.iso do livecd do Gentoo. Podemos baixar a minimal nesse link: ftp://ftp.ussg.iu.edu/pub/linux/gentoo/releases/x86/2005.0/installcd/installx86-minimal-2005.0.iso 4) O stage3 da arquitetura que iremos usar, no caso a i686: ftp://ftp.ussg.iu.edu/pub/linux/gentoo/releases/x86/2005.0/stages/i686/stage 3-i686-2005.0.tar.bz2 5) O último snapshot do Portage: ftp://ftp.ussg.iu.edu/pub/linux/gentoo/snapshots/ 6) Um link de internet, de preferência um de banda larga. :) 7) Pipoca e alguma bebida gelada.
De posse disso tudo podemos começar nossa diversão: Primeiro vamos criar um diretório que será a raiz para todos os nossos stages conforme a arquitetura. No nosso documento vamos fazer um stage para i686: # mkdir -p /gentoo/i686 Dentro deste diretório iremos descompactar o nosso stage3 do i686: # cd /gentoo/i686 # tar -xvjpf stage3-i686-2005.0.tar.bz2 O próximo passo será descompactar o snapshot do portage no seu devido diretório: # tar -xvjf portage-20050716.tar.bz2 -C /gentoo/i686/usr/ Feito isso vamos passar para o CHROOT: # cp /etc/resolv.conf /gentoo/i686/etc/ # mount -t proc none /gentoo/i686/proc/ # chroot /gentoo/i686 /bin/bash # env-update # source /etc/profile Agora vamos visualizar o arquivo /gentoo/i686/etc/make.conf: # These settings were set by the catalyst build script that automatically built this stage # Please consult /etc/make.conf.example for a more detailed example CFLAGS="-O2 -march=i686 -fomit-frame-pointer" CHOST="i686-pc-linux-gnu" CXXFLAGS="${CFLAGS}" Este arquivo já vem optimizado pelo pessoal do Gentoo mas se quiser incluir alguma flag de compilação, basta alterar as variáveis CFLAGS e CXXFLAGS. Para o que vamos fazer não altere a variável CHOST pois danificará a nossa instalação. Atualizando o que já temos instalado, antes de começar: # emerge sync # emerge portage # etc-update # emerge -ud world # etc-update
O emerge sync irá sincronizar o portage local com o mais atual do portage oficial. Desta maneira o sistema saberá quais são os pacotes novos e quais serão atualizados com o emerge -ud world. O emerge portage serve para atualizar o pacote portage antes de continuar. Isto porque desde que foi lançada a versão 2005.0 já houve atualização deste pacote. O etc-update é para checar se houve alguma alteração em algum arquivo de configuração do sistema. Isso já é normal no dia-a-dia do Gentoo User e no nosso caso haverá alteração por causa do pacote portage. Em ambos os etcupdates responda com -5, porque até o momento nada de importante foi feito. Caso queira ver quais pacotes serão atualizados antes de rodar o emerge -ud world, basta rodar este comando: # emerge -udpv world O comando acima não instalará nenhum pacote, apenas mostrará quais serão atualizados, quais pacotes serão instalados e o total de download que será feito. Esse processo inicial é trabalhoso mas depois de pronto será mais rápido e fácil instalar novos sistemas com estes stages4 que estamos fazendo. A atualização do sistema poderá levar poucas horas ou muitas dependendo do seu processador. Após a atualização do sistema precisaremos instalar um kernel. No nosso caso instalaremos o Kernel modificado pelo pessoal do Gentoo, o gentoo-sources: # emerge gentoo-sources Ao término da instalação do pacote do kernel é só ir em /usr/src/linux e configurar o kernel com: # cd /usr/src/linux # make menuconfig Próxima fase é a compilação e instalação do novo kernel: # make && make modules_install # cp arch/i386/boot/bzimage /boot/vmlinuz # cp System.map /boot/ Instalando alguns outros pacotes básicos: # emerge reiserfsprogs coldplug hotplug lilo syslog-ng vixie-cron logrotate # rc-update add coldplug boot # rc-update add hotplug default # rc-update add syslog-ng default # rc-update add vixie-cron default
Estou assumindo que o sistema terá suporte a reiserfs, o sistema de logs será o syslogng e o gerenciador de boot será o lilo. Edite o lilo.conf e configure ele apenas. Não rode o comando lilo: # cp /etc/lilo.conf.example /etc/lilo.conf # nano -w /etc/lilo.conf Abaixo um exemplo de configuração: lba32 boot = /dev/hda map = /boot/.map install = /boot/boot-menu.b menu-scheme=wb prompt timeout=50 delay = 50 vga = normal image = /boot/vmlinuz root = /dev/hda1 label = Gentoo read-only Altere a senha do seu sistema: # passwd root Altere a configuração de rede se desejar e coloque para iniciar no boot: # nano -w /etc/conf.d/net # rc-update add net.eth0 default Algumas configurações também são interessantes e sugiro fazê-las: # nano -w /etc/rc.conf O meu está assim: UNICODE="no" EDITOR="/usr/bin/vim"
Outros seriam: # nano -w /etc/conf.d/clock # nano -w /etc/conf.d/consolefont # nano -w /etc/conf.d/domainname # nano -w /etc/conf.d/hostname # nano -w /etc/conf.d/keymaps Quaisquer dúvidas sobre as configurações que estou colocando, estas podem ser vistas no handbook em pt-br através deste link: http://www.gentoo.org/doc/pt_br/handbook/2005.0/handbook-x86.xml?full=1 Acertando a hora: # ln -sf /usr/share/zoneinfo/america/sao_paulo /etc/localtime # date MMDDhhmmYYYY # hwclock -w Onde MM = mês, DD = dia, hh = hora, mm = minuto e YYYY= ano Configure o arquivo /etc/fstab e até aqui já teremos um sistema básico bootável para qualquer servidor ou estação. Agora adicionaremos um gerenciador de janelas ao nosso stage4, lembrando que o nosso stage4 não pode ser muito grande, para que este caiba em nosso livecd custumizado. No nosso caso vamos incluir o KDE: # nano -w /etc/make.conf Adicione as linhas no make.conf: USE= X kde qt -gnome gtk gtk2 alsa oss LINGUAS= pt_br Logo após execute: # emerge kde kde-i18n Após a instalação iremos gerar o nosso stage4 com o comando abaixo: # tar -cjpf /stage4-x86-i686-2.6-2005.0.tar.bz2 / --exclude=/stage4-x86-i686-2.6-2005.0.tar.bz2 -- exclude=/proc/* --exclude=/usr/portage/distfiles/* --exclude=/var/tmp/portage/* # exit # umount /gentoo/i686/proc
Agora vamos montar nosso Livecd do Gentoo com este stage4 que nos será muito útil em novas instalações do Gentoo em estações com KDE. Vamos criar o diretório /gentoo_iso e executar os seguintes procedimentos: # mkdir -p /gentoo_iso/stages # mount -o loop install-x86-minimal-2005.0.iso /mnt/cdrom # cp -av /mnt/cdrom/* /gentoo_iso/ # mv /gentoo/i686/stage4-x86-i686-2.6-2005.0.tar.bz2 /gentoo_iso/stages # umount /mnt/cdrom Para finalizar nossa documentação vamos criar o livecd bootável a partir dos dados que já temos: # cd /gentoo_iso # mkisofs -v -J -l -R -no-emul-boot -boot-load-size 4 -boot-info-table -b isolinux/isolinux.bin -c isolinux/boot.cat -o /tmp/gentoo.iso /gentoo_iso Após finalizado o comando acima, teremos em /tmp o arquivo gentoo.iso que bastará ser gerado um cd com ele e pronto. Para atualizar esse stage4 e consecutivamente o Livecd, basta refazer os passos do CHROOT, fazer o emerge sync, emerge -ud world, gerar o stage4 e por último refazer a ISO. Novos programas podem ser adicionados ao stage4 mas cuidado com o espaço para que no final a ISO não ultrapasse os 700Mb de um CD-R. Espero que essa documentação seja útil à comunidade Gentoo. Autor: Marcelo Gondim <gondim@intnet.com.br> Data: 18/07/2005