Instalando o Gentoo partindo do stage 3, passo a passo

2 de julho de 2009

Para aqueles que desejam instalar o Gentoo Linux e não possuam uma experiência com o inglês ou mesmo não querem ler dezenas de páginas do handbook, escrevi este documento com o intuito de facilitar a instalação do Gentoo. O documento está mais para uma receita de bolo, com passo a passo de como instalar o sistema básico e, caso queira, o servidor X. Não entrei em muitos detalhes sobre cada item, fazendo apenas alguns comentários, para que o documento não ficasse muito extenso.
Aguardo críticas e sugestões para manter o documento atualizado, uma vez que o handbook em nossa língua não sofre mais atualizações.

*Para aqueles que desejarem, baixem este documento no formado PDF clicando aqui.

v. 15/6/2010
Por Tales A. Mendonça
Agradecimentos ao jmbsvicetto, desenvolvedor do Gentoo.

obs.: Para quem for utilizar ~arch, use o guia(http://www.gentoo.org/doc/en/openrc-migration.xml) para fazer a atualização/migração para Baselayout2 e OpenRC. Os itens deste documento que serão alterados são: 15, 17.1 e 22.1.

1. Baixar o ISO mínimo de instalação

Link para download: http://gentoo.c3sl.ufpr.br/releases/ (Escolha a sua arquitetura e logo em seguida selecione current/install-*<arch>*-minimal-[versão].iso).
Após baixar o arquivo, verifique se a imagem(ISO) não está corrompida. Se estiver tudo OK, queime em um CD.

1.1. Carregando o LiveCD

Digite gentoo para carregar o sistema normalmente ou escolha outras opções(F1) disponíveis.

obs.: Digitando gentoo no boot do CD, o sistema será carregado com suporte para o kernel 2.6

2. Layout do teclado

Escolha o tipo de layout do teclado compatível com sua máquina. No nosso caso, a opção é 4(br-a), que representa o ABNT2.

3. Configurando a rede

Configure a rede para prosseguir com a instalação. O padrão é a rede iniciar utilizando DHCP, que já deverá estar configurada, caso não esteja, utilize o comado net-setup eth0 para configurá-la.

obs: Substitua eth0 pela sua interface de rede.
Para testar a rede, use o comando ping www.google.com, por exemplo.

4. Configurando os discos

Utilizar o cfdisk é uma boa escolha, ao invés do fdisk.
Partições que serão criadas:
EXT2   /boot   100MB                                  /dev/sda1
SWAP   swap    502MB (memória RAM atual é de 512MB)   /dev/sda1
EXT4   /       restante do disco                      /dev/sda2

obs.: Não é preciso criar uma partição /boot separada, a não ser que você esteja configurando um servidor(para obter mais segurança e não corromper o diretório de boot).

Nota.: Após criar as partições no cfdisk, será definido um nome+número das partições (sda1, sda2, sda3, sdb4, sdd…).

4.1. Criar os tipos de arquivos, EXT2, EXT4 e SWAP(área de troca)

(Criando o sistema de arquivos EXT2)
# mke2fs /dev/sda1

(Criando o sistema de arquivos EXT3)
# mke2fs -j /dev/sda3

(Criando o sistema de arquivos EXT4)

mkfs.ext4 /dev/sda2

(Criando e ativando a partição swap)

mkswap /dev/sda1
swapon /dev/sda1

4.2. Montando as partições criadas para instalar o stage e o portage

(Montando o sistema raiz(/))

mount /dev/sda2 /mnt/gentoo

(Criando a partição boot)
# mkdir /mnt/gentoo/boot

(Montando a partição boot dentro do raíz)
# mount /dev/sda1 /mnt/gentoo/boot

5. Instalando o stage 3

obs.: Configure a data, com o comando date, se a mesma estiver incorreta.

5.1. Baixando o stage 3 direto da internet

cd /mnt/gentoo
links http://gentoo.c3sl.ufpr.br/releases/

Navegue até ../<arquitetura>/current-stage3/ e baixe o arquivo stage3-i686-[versão].tar.bz2 com a versão mais nova. Aguarde, o arquivo tem ~135 MB.

obs.: Eu defini baixar e fazer todo o procedimento com o stage compilado para arquitetura i686. Fique avontade para escolher um mais adequado.

(Após baixar, verifique se o arquivo não está corrompido. O arquivo.DIGESTS também deve ser baixado)

md5sum -c stage3-i686-*.tar.bz2.DIGESTS

(Descompactando o stage3)

tar -xvjpf stage3-*.tar.bz2

(Removendo o source baixado. Você não irá mais precisar dele, talvez em outra instalação.)

rm -f stage3-*.tar.bz2*

6. Instalando o portage

(Entre no diretório raíz, caso não esteja)

cd /mnt/gentoo

(Baixe a versão mais recente do portage no link abaixo)

links http://gentoo.c3sl.ufpr.br/releases/snapshots/current/

(Verifique se o arquivo está corrompido. O arquivo.md5sum também deve ser baixado)

md5sum -c portage-latest.tar.bz2.md5sum

(Extraindo os arquivos do portage)

tar -xvjf /mnt/gentoo/portage-latest.tar.bz2 -C /mnt/gentoo/usr

(Removendo o source baixado. Você não irá mais precisar dele, talvez em outra instalação.)

rm -f portage-latest.tar.bz2*

7. Configurando as opções de compilação no “/etc/make.conf”

nano -w /mnt/gentoo/etc/make.conf
CHOST="i686-pc-linux-gnu" # Mais informações sobre a variável    CHOST(http://www.gentoo.org/doc/en/change-chost.xml).
CFLAGS="-march=native -O2 -pipe"
CXXFLAGS="${CFLAGS}"
LINGUAS="pt_BR"
ACCEPT_KEYWORDS="x86" # Troque x86 pela arquitetura que deseja usar.
ACCEPT_LICENSE="*" # Aceita automaticamente licença de programas como o java e o VirtualBox

obs.: A opção -march=native é válida apenas para versões do gcc 4.3 em diante. Caso o seu gcc seja uma versão anterior a 4.3, você deverá informar a arquitetura correta correspondente ao seu CPU. Se tiver em dúvida ou indeciso em qual utilizar, deixe como -march=i686 e todos os seus pacotes serão compilados para arquitetura i686.
Se for utilizar distcc(http://www.gentoo.org/doc/en/distcc.xml), não utilize -march=native.

(Configurando mirrors para a variável GENTOO_MIRRORS)

mirrorselect -i -o >> /mnt/gentoo/etc/make.conf

(Configurando um mirror para a variável SYNC)

mirrorselect -i -r -o >> /mnt/gentoo/etc/make.conf

8. Copiando o DNS do liveCD para a partição montada

cp -L /etc/resolv.conf /mnt/gentoo/etc/

9. Montando os sistemas de arquivos

(Montando o sistema de arquivos /proc)

mount -t proc none /mnt/gentoo/proc

(Montando o sistema de arquivos /dev)

mount -o bind /dev /mnt/gentoo/dev

10. Entrando no novo ambiente com chroot

chroot /mnt/gentoo /bin/bash

(Criando um novo ambiente com variáveis de ambiente)

env-update
>> Regenerating /etc/ld.so.cache...

(Carregando as variáveis de ambiente na memória)

source /etc/profile

(*Opcional. Apenas para indicar que está em um ambiente chroot)

export PS1="(chroot) $PS1"

11. Configurando o portage

(Atualiza a lista de pacotes do portage)

emerge --sync

12. Atualizando o perfil *Opcional

Atualiza ou troca de profile.

(Listando os profiles disponíveis)

eselect profile list

(Escolhendo um profile. n = número do profile)

eselect profile set n

13. Configurando a variável USE

(Aqui você pode encontrar todas as flags da variável USE disponíveis)

less /usr/portage/profiles/use.desc

(Segue um exemplo da USE que deve ser configurada no /etc/make.conf)

nano -w /etc/make.conf

(A variável USE abaixo irá construir um ambiente voltado para o ambiente kde)

USE="-gtk -gnome qt4 kde dvd alsa cdr"

(Mais um exemplo. O sistema será voltado tanto para kde como para o gnome)

USE="avi cdr crypt cups dvd dbus encode gnome gtk gtk2 hal jpeg kde mp3 mpeg ncurses nls opengl png qt4 sdl spell tcpd truetype X truetype unicode"

Dica: Configure apenas as USE globais no ‘/etc/make.conf’.

14. Configurar localidade no glibc *Opcional

nano -w /etc/locale.gen

(Configurando para o nosso idioma)

pt_BR ISO-8859-1
pt_BR.UTF-8 UTF-8

15. Configurando o timezone

(Procure por um timezone compatível com a sua localidade)

ls /usr/share/zoneinfo

(copiando o timezone Sao_Paulo para o “/etc/localtime”)

cp /usr/share/zoneinfo/America/Sao_Paulo /etc/localtime

16. Instalando o fonte do kernel

emerge -av gentoo-sources

17. Utilizando o genkernel para compilar o kernel

obs.: O genkernel serve apenas para ajudar no processo de compilação e instalação do kernel, mas cabe a você configurá-lo manualmente de acordo com o hardware da sua máquina. Caso você esteja tentando instalar o gentoo no VirtualBox, o genkernel não irá funcionar e você terá que compilar o kernel manualmente. Olhe no Handbook os itens: 7.c e 10.b
(Instalando o genkernel)

emerge -av genkernel

(Copiando a configuração do kernel usada no liveCD para onde o genkernel irá procurar a configuração do kernel padrão. aaa = arquitetura, exemplo: x86)
# zcat /proc/config.gz > /usr/share/genkernel/arch/aaa/kernel-config-2.6

zcat /proc/config.gz > /usr/share/genkernel/arch/aaa/kernel-config

(Compilando o kernel com o genkernel)

genkernel --menuconfig --oldconfig --splash --install all

obs.: Para a opção “–splash” funcionar, deve ser ativada no kernel.

17.1. Adicionando módulos no arranque do sistema

(*Opcional, Adicionar módulos para serem carregados na inicialização do sistema)

nano -w /etc/modules.autoload.d/kernel-2.6
# Módulos carregados durante o boot
nvidia
vboxdrv

18. Configurando as partições(fstab)

(Editando o fstab para configuração)

nano -w /etc/fstab

obs.: Opções como CD/DVD podem ser removidas pois o DBUS é responsável por gerenciar mídias removíveis.

# --- Início da Configuração --- #
/dev/sda1    /boot        ext2        defaults,noatime    1 2
/dev/sda1    none         swap        sw                  0 0
/dev/sda2    /            ext4        noatime             0 1
# --- Fim da Configuração --- #

19. Configurando o hostname(nome da máquina)

nano -w /etc/conf.d/hostname

20. Configurando a rede

(Editando o arquivo para configuração da rede)

nano -w /etc/conf.d/net
# --- Início da Configuração --- #
config_eth0=( "192.168.1.2 netmask 255.255.255.0 brd 192.168.0.255" )
routes_eth0=( "default via 192.168.1.254" )

#config_eth0=( "dhcp" ) # Para utilizar como dhcp é preciso instalar o cliente dhcp(emerge -av dhcpcd)
# --- Fim da Configuração --- #

obs.: Mais informações podem ser encontradas no arquivo ‘/etc/conf.d/net.example’.

20.1. Iniciando a rede no arranque

rc-update add net.eth0 default

21. Configurando os hosts *Opcional

nano -w /etc/hosts

22. Informações sobre o sistema

(Configura a senha do root)

passwd

(Configura informações como: gerenciador gráfico, editor, ambiente gráfico padrão)

nano -w /etc/rc.conf

(Configura o layout do teclado)

nano -w /etc/conf.d/keymaps
KEYMAP="-u br-abnt2"

22.1. Configura o relógio

(Configura o relógio buscando informações direto da internet)

nano -w /etc/conf.d/clock
CLOCK="UTC"
TIMEZONE="America/Sao_Paulo"
CLOCK_SYSTOHC="yes"

23. Instalando ferramentas necessárias para o sistema

23.1. Guarda informações do sistema; um registrador do sistema

(Instalando o syslog-ng)

emerge syslog-ng

(Carregando o syslog-ng no boot)

rc-update add syslog-ng default

23.2. Executando tarefas programadas

(Instalando o vixie-cron)

emerge vixie-cron

(Carregando o vixie-cron no boot)

rc-update add vixie-cron default

23.3. Encontrando qualquer arquivo no sistema de forma rápida

(Instalando o slocate)

emerge slocate

23.4. Instalando o PPP *Opcional

Instale apenas se você for utilizar conexão discada, exemplo o velox.

(Instalando o ppp)

emerge o ppp

24. Instalando o gerenciador de boot

(Instalando o gerenciador de boot grub)

emerge -av grub

Segue um exemplo da configuração do grub, comentado:

nano -w /boot/grub/grub.conf
#--- Início da Configuração---#
default 0 # Dispositivo padrão de carregamento
timeout 10 # Tempo de espera até que uma das opções de boot seja escolhida e carregada.
splashimage=(hd0,0)/boot/grub/splash.xpm.gz # Carrega a tela de splash

title Gentoo Linux 2.6.28-r5
root (hd0,1) # hd0,0 = /dev/sda1, hd0,1 = /dev/sda2
kernel /boot/kernel-genkernel-x86-2.6.28-gentoo-r5 real_root=/dev/sda2 # Opções opcionais relacionadas com a saida do genkernel # vga=791 splash=silent,theme:default console=tty1 quiet
#initrd /boot/initramfs-genkernel-x86-2.6.24-gentoo-r5 # *Opcional

# Use as opções abaixo caso tenha um dual-boot
#title Windows XP
#rootnoverify (hd0,5)
#makeactive
#chainloader +1
#--- Fim da Configuração ---#

(Criando um mtab no ambiente chroot)

grep -v rootfs /proc/mounts > /etc/mtab

(Instalando o grub)

grub-install --no-floppy /dev/sda

25. Recarregando o sistema
*Aqui você já terá o sistema básico do Gentoo instalado, ou seja, o mínimo do mínio para o sistema ser carregado. Sem Servidor X, claro, o mesmo nem foi instalado.

exit && reboot

livecd root # cd
livecd root # umount /mnt/gentoo/boot /mnt/gentoo/dev /mnt/gentoo/proc /mnt/gentoo
livecd root # reboot

** Resumindo, neste pondo você terá nada mais do que um sistema butável.

*** IMPORTANTE: Para manter o sistema limpo de pacotes desnecessários, rode os 3 comandos abaixo após a instalção e de preferência 1 vez por mês, para manter um sistema íntegro e atualizado.

(Atualiza todo o sistema)

emerge -NDuatv world

(Remove pacotes desnecessários. Cuidado com este comando, ele poderá remover o seu kernel se o mesmo não estiver atualizado)

emerge -av --depclean

(Reconstrói a estrutura do sistema, procurando por pacotes(bibliotecas) quebrados)

revdep-rebuild

Primeiras Configurações após o primeiro boot…

*Opcional – Instalando e configurando o ccahe

“O ccache é um cachê para compilações rápidas. Quando você compila um programa, ele fará cachê de resultados intermediários para que, quando você recompilar o mesmo programa, o tempo de compilação seja drasticamente reduzido. Em compilações comuns isso pode resultar em compilações de 5 a 10 vezes mais rápidas.”

emerge -av ccache

(Adicionar ccache na variável FEATURES no make.conf)

FEATURES="${FEATURES} ccache"

(Definir o tamanho do ccache no make.conf)

CCACHE_SIZE="2G"

(Definir o diretório que será utilizado para fazer cache)

CCACHE_DIR="/var/tmp/ccache"

(O local ‘/var/tmp/ccache’ é o diretório padrão do ccache no portage)

*Atualizar o GCC

emerge -uav1 gcc

(Lista os profiles do gcc disponíveis)

gcc-config -l

(Substituir “i686-pc-linux-gnu-4.3.2” para a versão
do GCC e ajustes de CHOST para o que foi atualizado)

gcc-config i686-pc-linux-gnu-4.3.2
source /etc/profile

(Reconstruindo a biblioteca libtool)

emerge -av1 libtool

(Reconstruindo o sistema para usufruir do novo compilador)

emerge -NDuaetv world

26. Adicionando um usuário

useradd -m -G users,wheel,audio,video,usb,cdrom -c "Mari Mendonça" mari
passwd mari

27. Ajustando a linguagem padrão do sistema

(O arquivo 02locale não existe, mas será criado agora)

nano -w /etc/env.d/02locale

(Adicione o conteúdo abaixo)

LANG="pt_BR.UTF-8"
LC_COLLATE="C"

(exportando as variáveis para o sistema)

export LANG="pt_BR.UTF-8"
export LC_COLLATE="C"

(Carregando o sistema com as variáveis exportadas)

env-update && source /etc/profile

*Pacotes recomendáveis instalar

app-portage/gentoolkit
app-portage/eix
app-portage/autounmask

** Configurando o X

1. Comece instalando o hal e colocando para ser iniciar no boot

emerge -av hal
rc-update add hald default

2. Comece colocando algumas variáveis de ambiente no /etc/make.conf

(Configura os dispositivos. Configure de acordo com os seus dispositios)

INPUT_DEVICES="evdev keyboard mouse"

(Configura o driver de video, para utilizar mais de um, coloque com espaço)

VIDEO_CARDS="nv nvidia"

(Instalando o Xorg-server)

emerge -av xorg-server

2. Configurando o xorg.conf

(Gera o xorg.conf de forma automática)

Xorg -configure

ou
(Passo a passo para configurar o xorg já gerando um xorg.conf)

xorgconfig

(Testa para ver se está tudo funcionando bem, mouse e teclado)

X -config /root/xorg.conf.new

(Cuidado ao testa-lo de uma vez pois poderá travar o seu X e precisará reiniciar o computador)

(copia o arquivo do xorg.conf para o seu devido lugar)

cp /root/xorg.conf.new /etc/X11/xorg.conf

(Configure de acordo que achar melhor)

Segue abaixo um exemplo do meu xorg.conf

Section "ServerLayout"
        Identifier     "X.org Configured"
        Screen      0  "Screen0" 0 0
EndSection

Section "Files"
        ModulePath   "/usr/lib64/xorg/modules"
        FontPath     "/usr/share/fonts/misc/"
        FontPath     "/usr/share/fonts/TTF/"
        FontPath     "/usr/share/fonts/OTF"
        FontPath     "/usr/share/fonts/Type1/"
        FontPath     "/usr/share/fonts/100dpi/"
        FontPath     "/usr/share/fonts/75dpi/"
EndSection

Section "Module"
        Load  "dbe"
        Load  "extmod"
        Load  "record"
        Load  "glx"
        Load  "dri2"
        Load  "dri"
EndSection

Section "Monitor"
        Identifier   "Monitor0"
        VendorName   "Monitor Vendor"
        ModelName    "Monitor Model"
EndSection

Section "Device"
        Identifier  "Card0"
        Driver      "intel"
        VendorName  "Intel Corporation"
        BoardName   "Mobile 4 Series Chipset Integrated Graphics Controller"
        BusID       "PCI:0:2:0"
EndSection

Section "Screen"
        Identifier "Screen0"
        Device     "Card0"
        Monitor    "Monitor0"
        DefaultDepth 24
        SubSection "Display"
                Viewport   0 0
                Depth     24
                Modes     "1280x800"
        EndSubSection
EndSection

A configuração do teclado e mouse devem ficar por conta do hal, para isso a configuração deve ser feita no diretório /etc/hal/fdi/policy/. Veja um exemplo dos arquivo de configuração de teclado e mouse(este relacionado ao notebook)

(Arquivo (10-x11-input.fdi) de configuração do teclado)

<?xml version="1.0" encoding="UTF-8"?>
<deviceinfo version="0.2">
<match key="info.capabilities" contains="input.keys">
<!-- Option "XkbModel" "abnt2" -->
<merge key="input.xkb.model" type="string">evdev</merge>
<merge key="input.xkb.layout" type="string">br</merge>
</match>
</deviceinfo>

(Arquivo (11-x11-synaptics.fdi) de configuração do mouse(touch))

<?xml version="1.0" encoding="ISO-8859-1"?>
<deviceinfo version="0.2">
<device>
<match key="info.capabilities" contains="input.touchpad">
<merge key="input.x11_driver" type="string">synaptics</merge>
<!-- Arbitrary options can be passed to the driver using
the input.x11_options property since xorg-server-1.5. -->

<merge key="input.x11_options.SHMConfig" type="string">true</merge>
<merge key="input.x11_options.MaxTapMove" type="string">2000</merge>
<merge key="input.x11_options.VertEdgeScroll" type="string">true</merge>
<merge key="input.x11_options.VertTwoFingerScroll" type="string">false</merge>
<merge key="input.x11_options.HorizTwoFingerScroll" type="string">false</merge>
<merge key="input.x11_options.CircularScrolling" type="string">false</merge>
<merge key="input.x11_options.TapButton1" type="string">1</merge>
<merge key="input.x11_options.TapButton2" type="string">2</merge>
<merge key="input.x11_options.TapButton3" type="string">3</merge>

</match>
</device>
</deviceinfo>

*No caso dessa configuração, de um mouse touch, é necessária a instalação do pacote x11-drivers/xf86-input-synaptics.

Fonte: Handbook do gentoo.org