Artigos 04 set 2006 10:40 pm

Instalando Gentoo 64bits

O processo de instação do Gentoo é simples e envolve basicamente o particionamento do(s) disco(s), compilação do kernel, configuração do gerenciador de boot, instalação de software básico e a edição de arquivos de configuração.
O guia de instalação oficial (handbook) pode ser encontrado em http://www.gentoo.org/doc/en/handbook/index.xml e explica detalhadamente cada passo da instação, vale a pena a leitura.

Nesse guia/report será coberta a instalação mínima na arquitetura 64 bits usando processador Athlon64 da AMD. A máquina utilizada para essa instalação será utilizada como servidor de uma rede, o hardware escolhido é o que segue abaixo:

  • Processador AMD Athlon64 3000+
  • Placa Mãe Abit NF8-V2
  • Placa de Vídeo G-Force MX 4000
  • HD SATA SAMSUNG SP2004C – 200GB
  • 2 x Memória Kingston 1GB
  • CD-ROM LG 52X
  • nVidia nForce based ethernet
  • 3Com 3C905

Para iniciar a instalação foi utilizado o live-cd para amd64 disponível em http://www.las.ic.unicamp.br/pub/gentoo/releases/amd64/2006.0/installcd/ ou em um dos outros mirrors listados em http://www.gentoo.org/main/en/mirrors.xml
A imagem utilizada foi a install-amd64-universal-2006.0.iso que embora seja maior do que a install-amd64-minimal-2006.0.iso já contém o stage 3.

Após o boot pelo CD, os próximos passos são:

Preparando o disco

A preparação do disco engloba 3 passos básicos: particionar, formatar e montar. Os mesmos são descritos a seguir.

Particionamento

Dispositivos de armazenamento (sejam HDs ou Memória Flash) podem ser dividos em mais de um volume lógico. A cada um desses volumes damos o nome de Partição.Cada sistema operacional tem suas próprias ferramentas para particionar o disco. No mundo dos/windows temos o fdisk e o Disk Management a partir do Windows2000. Existem outras ferramentas comerciais como o famoso PartitionMagick dentre outras soluções também comerciais e até mesmo alguams livres.

No mundo Linux temos desde o próprio fdisk (uma versão muito melhor), passando por cfdisk (versão mais amigável), parted e por ai vai.Utilizando o fdisk do linux criamos o seguinte esquema de particionamento:

Device Boot Start End Blocks Id System Comentário
/dev/sda1 1 13 104391 83 Linux (/boot +100M)
/dev/sda2 14 24321 195254010 5 Extended
/dev/sda5 14 136 987966 82 Linux swap / Solaris (swap +1G)
/dev/sda6 137 623 3911796 83 Linux (/ +4G)
/dev/sda7 624 1840 9775521 83 Linux (/usr+10G)
/dev/sda8 1841 2449 4891761 83 Linux (/var +5G)
/dev/sda9 2450 14607 97659103+ 83 Linux (/home +100G)

Formatando

Uma partição por si só não armazena dados (arquivos/diretórios) mas sim um sistema de arquivo. O sistema de arquivo armazena a tabela de aloção de arquivos que informa ao sistema onde cada arquivo se encontra no disco. Alguns sistemas de arquivos modernos como Ext3 e ReiserFS contam com a opção de journaling que armazena logs das transações ocorridas no disco para que as mesmas sejam recuperadas em caso de falha do sistema.

# mkfs.reiserfs /dev/hda6 -l /
# mkfs.reiserfs /dev/hda7 -l /usr
# mkfs.reiserfs /dev/hda8 -l /var
# mkfs.ext3 /dev/hda1 -L /boot

Montando

A partição raiz (/) deve ser montada em algum diretório previamente criado (/mnt/gentoo nos livecds do gentoo) e caso exista alguma outra partição de sistema além da raiz, o diretório da mesma deve ser criado na raiz já montada e a partição montada no mesmo.

# mount /dev/hda6 /mnt/gentoo32
# cd /mnt/gentoo32
# mkdir boot usr var
# mount /dev/hda1 boot
# mount /dev/hda7 usr
# mount /dev/hda8 var

Preparando o ambiente

Para iniciarmos a instalação do nosso sistema precisamos de um ambiente com algumas bibliotecas básicas, ferramentas e compiladores como gcc, coreutils, libc, etc. O stage3 disponibiliza tudo o necessário para iniciar a instalação e pode ser obtido no diretório /mnt/cdrom/stages/ ou em algum dos mirrors do gentoo como o da unicamp por exemplo:
ftp://ftp.las.ic.unicamp.br/pub/gentoo/releases/amd64/2006.0/stages/

Assumindo que o diretório corrente é /mnt/gentoo execute os próximos passos

Populando o disco

Descompacte o stage3 na nova raiz:

# tar xjpf /mnt/cdrom/stages/stage3-amd64-2006.0.tar.bz2

Montando

Monte uma cópia dos diretórios proc, dev e sys:

# mkdir proc dev sys
# mount /proc proc -o bind
# mount /dev dev -o bind
# mount /sys sys -o bind

DNS

Faça uma cópia do resolv.conf:

# cp /etc/resolv.conf etc/resolv.conf

Chroot

O processo executado pelo chroot é o de trocar a raiz do sistema pelo diretório especificado executando em seguida o comando passado como parâmetro (por padrão o bash).

# chroot /mnt/gentoo /bin/bash

Variáveis de ambiente

Atualize o ambiente:

# env-update && source /etc/profile

Portage Tree

A árvore do portage é o coração do Gentoo e é onde residem os “scripts” de instalação de todos os softwares disponíveis para o gentoo.
Assim como o apt do debian, na árvore do portage é possível encontrar milhares de softwares como servidores web, bancos de dados, jogos, desktops, players multimidia, etc, etc. Um catálogo online pode ser acessado em http://packages.gentoo.org

Inicialize a árvore do gentoo sincronizando com os repositórios oficiais:

# emerge --sync

Este processo custuma demorar muito na primeira execução, geralmente não menos do que 40 minutos.

Configurando o Portage

O Gentoo como já de conhecimento, pode ser customizado de acordo com o gosto e a necessidade do usuário podendo ser optimizado de forma a aproveitar ao máximo o hardware utilizado.
O arquivo /etc/make.conf é responsável pela configuração do portage e é onde podemos fazer a customização do compilador e das USE flags além de outras configurações como habilitação de recursos no portage, definição de mirrors, proxies, etc.

# nano /etc/make.conf

CHOST

A variável CHOST declara o tipo da arquitetura do sistema e não deve ser editada (a menos que você saiba exatamente o que está fazendo). Caso o valor de CHOST não esteja de acordo com sua arquitetura, provavelmente está sendo utilizado um stage3 incorreto.

CFLAGS / CXXFLAGS

As variáveis CFLAGS e CXXFLAGS definem as opções de optimização a serem usadas na compilação de cada programa.
As opções comumente utilizadas são:

-march/mcpu (march utiliza todas as opções de optimização para a arquitetura especificada porém não gera código compatível com demais arquiteturas)
-pipe (para utilizar pipe ao invés de arquivos temporários)
-O? (para definir padrões de optimização).

O manual da gcc pode ser consultado para verificação de todas as opções disponíveis bem como suas respectivas especificações, uma cópia pode ser acessada em http://gcc.gnu.org/onlinedocs/ . Abaixo, um exemplo de opções para arquitetura AMD64:

CFLAGS="-march=k8 -O2 -pipe"
CXFLAGS="${CFLAGS}"

MAKEOPTS

Define quantas compilações em pararelo podem ocorrer ao compilar um programa. Costuma-se utilizar o número total de CPUs mais 1.
Para uma CPU utilize:

MAKEOPTS="-j2"

USE

A variável USE é uma das mais poderosas do Gentoo e é nela onde definimos o "suporte a recursos" dos programas. Por exemplo, uma instalação baseada no kde sem suporte a aplicativos do gnome, e com suporte a múltiplos monitores pode usar as seguintes USE flags:

USE="kde qt -gnome -gtk xinerama"
(a flag xinerama habilita suporte a 2 ou mais monitores)

Uma instalação para servidores não necessita de suporte ao X, kde, etc, então podemos alterar para:

USE="-X -kde -gnome -gtk -qt"

As flags configuradas na variável USE serão utilizadas globalmente e podem ser definidas individualmente para cada software no arquivo /etc/portage/package.use ou especificando manualmente na hora da compilação do mesmo (esse hábito deve ser evitado)

FEATURES

Essa variável é responsável por habilitar alguns recursos/funcionalidades no portage. A maioria de suas opções são voltadas a desenvolvedores/usuários avançados, mas existem algumas interessantes para usuários comuns como por exemplo "parallel-fetch" que faz com que o portage continue baixando pacotes (background) enquanto compila/instala um outro pacote.
Outros recursos interessantes são respectivamente ccache (mantém um cache dos principais arquivos de cabeçalho (.h) ) e confcache (mantém um cache do autoconf (./configure) ), porém o uso desses recursos pode ocasionar em erros de compilação.

FEATURES="parallel-fetch"

Kernel

O kernel, como o próprio nome já diz, é o núcleo do sistema. O linux é o kernel propriamente dito, o restante dos aplicativos que o cercam é que dão a funcionalidade ao sistema e a esse conjunto todo chamamos de distribuição.
A grande maioria das distribuições traz uma ou mais opções de kernel já prontos com suporte à grande quantidade de hardware.
No caso do Gentoo, o kernel deve ser compilado pelo próprio usuário (embora esse processo não necessite ser 100% manual).

Fontes

O Gentoo conta com sua própria versão modificada do kernel (gentoo-sources) que contém melhorias nos quesitos performance/estabilidade e inclusive com suporte a arquitetura 64 bits. Outros "sabores" do kernel também estão disponíveis, como por exemplo o kernel com alterações para suporte ao Software Suspend2, ou o kernel com suporte ao OpenMosix.
Mais informações e lista completa dos sabores de kernel disponíveis podem ser obtidas em: http://www.gentoo.org/doc/en/gentoo-kernel.xml

# emerge gentoo-sources


Configuração manual

A configuração manual exige prévio conhecimento de configuração do kernel e é recomendada apenas para usuários experientes.
A sequência de comandos abaixo da conta do recado:

# make menuconfig
# make && make modules_install
# cp arch/x86_64/boot/bzImage /boot/kernel-2.6.xx-gentoo-xx

Genkernel

O genkernel é uma ferramenta que tem por objetivo auxiliar os usuários menos experientes a compilar o kernel. O genkernel compila um kernel modular dando suporte a uma grande variedade de hardware (como os livecds) que é detectado durante o processo de boot usando ferramentas como coldplug por exemplo.

# emerge genkernel

O genkernel auxilia na criação de ramdisks com suporte a bootsplash, dmraid, lvm, etc. Sua execução é bem simples:

# genkernel all

Outras opções de uso podem ser verificadas passando o parâmetro --help ou nas páginas de manual.

Módulos

Caso tenha sido feita uma configuração manual do kernel, presume-se que os módulos necessários para funcionamento do hardware sejam conhecidos e nesse caso talvez seja útil que os mesmos sejam carregados durante o boot, para configurar uma placa de rede por exemplo.
O arquivo /etc/modules.autoload.d/kernel-2.x auxilia no carregamento desses módulos.

# nano /etc/modules.autoload.d/kernel-2.6
3c95x

Caso tenha optado pelo genkernel, talvez o hardware não seja conhecido. Em ambos os casos pode ser mais confortável deixar o coldplug detectar o hardware sozinho.

# emerge coldplug
# rc-update add coldplug boot

O comando rc-update adiciona (add) ou remove (del) scripts de inicialização dos runlevels (boot, default, nonetwork).

Configurando o Sistema

Sistema de Arquivos

O arquivo /etc/fstab é o responsável por informar ao sistema onde encontrar as partições necessárias para o seu pleno funcionamento, como por exemplo as partições /, /boot, /usr, /var, /home.
Nesse arquivo são definidos também outros tipos de partições como partições de dados, partições windows, compartilhamentos de rede (samba ou nfs), cdrom, disquete, etc. Sua outra função controlar quem pode ou não montar esses dispositivos além de especificar suas opções de montagem.

A estrutura do arquivo é simples:
dispositivo ponto de montagem sistema de arquivos opções dump ordem fsck

# nano /etc/fstab
/dev/sda1   /boot      ext2        noauto,noatime   1   2
/dev/sda6   /          reiserfs    noatime          0   1
/dev/sda7   /usr       reiserfs    noatime          0   3
/dev/sda8   /var       reiserfs    noatime          0   4
/dev/sda9   /home      reiserfs    noatime          0   5
/dev/sda5   none       swap        sw               0   0
proc        /proc      proc        defaults         0   0
shm         /dev/shm   tmpfs       nodev,nosuid,noexec 0  0
/dev/fd0    /mnt/floppy auto       noauto           0   0

Rede

O nome da maquina deve ser definido em 2 arquivos, /etc/conf.d/hostname e /etc/hosts

# nano /etc/conf.d/hostname
HOSTNAME="localhost"

# nano /etc/hosts
127.0.0.1 localhost  localhost.localdomain

O nome do domínio e o nome do domínio NIS (se existir) são definidos no arquvios domainname

# nano /etc/conf.d/domainname
DNSDOMAIN="localdomain"
NISDOMAIN="nisdomain"

O arquivo /etc/conf.d/net define as configuações das interfaces de rede usadas no sistema, sejam elas do tipo ethernet, ppp, pppoe, etc, etc. O arquivo /etc/conf.d/net.example ilustra o uso de todas as opções.
Para o uso de dhcp é necessário instalar um client de dhcp. Existe uma variedade de clients disponíveis porém por padrão os scripts net chamam o dhcpcd

# emerge dhcpcd
# nano /etc/conf.d/net
config_eth0=("dhcp")
config_eth1=("192.168.1.2 broadcast 192.168.1.255 netmask 255.255.255.0")
routes_eth1=( "default gw 192.168.1.1" )

Caso exista mais interfaces além da eth0, é necessário criar um symlink para cada uma delas.

# cd /etc/init.d/
# ln -s net.eth0 net.eth1

Caso deseje utilizar outro client é necessário especificar o modulo (nome do client) no arquivo /ect/conf.d/net

# emerge pump
# nano /etc/conf.net
module=("pump")

Em seguida, é necessário adicionar cada interface ao runlevel default para que sejam carregadas no boot:

# rc-update add net.eth0 default
# rc-update add net.eth1 default

Teclado

O arquivo keymaps define o mapa de teclado a ser utilizado. Os mapas mais utilizados no Brasil são abnt2 e us-acentos (inglês internacional).

# nano /etc/keymaps
KEYMAP="us-acentos"

Outras configurações podem ser feitas nesse arquivo porém nesse momento apenas o KEYMAP é necessário.

Boot

O processo de boot é iniciado pelo bootloader que fica armazenado na MBR ou em uma partição inicializável, ele é o responsável por iniciar o kernel.

As distribuições mais recentes utilizam o grub por ser um verdadeiro boot manager e não apenas um bootloader (como o lilo) podendo ser iniciado a partir de várias mídias diferentes(hd, cd, rede,etc) sem contar diversos outros recursos que fazem do grub uma excelente escolha.

# emerge grub

O grub conta os discos e partições a partir do 0 (zero) ou seja, no caso dessa configuração a partição de boot (chamada no grub de root) é hd0,0 (hda1).Um arquivo de exemplo acompanha o grub e pode ser encontrado em /boot/grub/grub.conf.example

# nano /boot/grub/grub.conf
timeout 3

default 0
title Gentoo  kernel /kernel-2.6.xx-gentoo-xx root=/dev/hda6

Caso tenha sido utilizado o genkernel é necessário informar alguns parâmetros extras além de informar o caminho para do initrd (ou initramfs).

# nano /boot/grub/grub.conf
timeout 3

default 0
title Gentoo  kernel /boot/kernel-2.6.xx-gentoo-xx root=/dev/ram0 \
init=/linuxrc ramdisk=8192 real_root=/dev/hda6
initrd /boot/initramfs-genkernel-amd64-2.6.xx-gentoo-xx

Para instalar o grub no hd execute

# grub

root(hd0,0)
setup(hd0)

Primeiro deve-se especificar a partição de boot (aqui chamada de root) e depois instalar o bootloader no disco especificado (setup).

Senha de Root

É necessário definir uma senha para o root.

# passwd

Usuário especial

Apesar de já ter sido definida a senha de root, não utilizaremos esse usuário o tempo todo, ao contrário, utilizaremos um usuário comum que terá permissão de se tornar root com o comando "su", para isso esse usuário deve ser incluido no grupo wheel.

# useradd -m myers -G users,wheel,audio
# passwd myers

O grupo áudio permite que o usuário escute no dispositivo /dev/dsp.

Ferramentas de sistema

Alguns programas não acompanham o stage3 porque diversos pacotes (softwares) provém a mesma funcionalidade. Sendo o gentoo uma distribuição de livre escolha, não seria correto que stage3 "empurrasse" junto um syslogger ou um cliente dhcp por exemplo. A partir de agora, escolher o software a ser instalado é tarefa do administrador da máquina.

System Logger

Dentre as opções disponíveis de system loggers as que mais se destacam são o syslog-ng (syslog new generation, uma versão melhorada do antigo syslog) e metalog (famoso por ser extremamente configurado, podendo "rodar" os logs automaticamente, além de executar scripts dentre outros recursos).

Nesse caso será utilizado o syslog-ng mas não há nada que impeça ou que desincentive o uso do metalog uma vez que ele é até mais poderoso, porém ainda não pude testá-lo.

# emerge syslog-ng
# rc-update add syslog-ng default

Cron

O cron apesar de não ser absolutamente necessário é importante uma vez que ele é o responsável por executar agendadas em background. Um exemplo de uso é para o slocate que atualiza o seu banco de dados de tempo em tempo. Algumas opções disponíveis para instalação são dcron, fcron ou vixie-cron.

# emerge vixie-cron
# rc-update add vixie-cron default
(apenas para fcron ou dcron)
# crontab /etc/crontab

Indexador de arquivos

Embora hoje em dia existam ferramentas mais poderosas para essa tarefa como google desktop, kat, ou outros, o slocate continua sendo uma ótima escolha para encontrar arquivos pelo nome.

# emerge slocate

Ferramentas para FileSystems

Dependendo dos sistemas de arquivos que forem utilizados é necessário instalar o software utilitário das mesmas. Algumas opções possíveis são: reiserfsprogs, xfsprogs e jfsutils.

# emerge reiserfsprogs

Ferramentas de Rede

Cliente DHCP

O arquivo /etc/conf.d/net vem pré-configurado para o dhcpcd, no entanto existem diversas opções como o pump por exemplo.

Pode-se executar # emerge -S dhcp para procurar por softwares que contenham esse nome ou descrição, outra opção é procurar através do endereço http://packages.gentoo.org

# emerge dhcpcd

Cliente ADSL

Caso a conexão seja adsl é necessário instalar um cliente pppoe.

# USE="-X" emerge rp-pppoe

Uma vez que o rp-pppoe dispõe também de interface gráfica, o X será instalado para satisfazer as dependências a menos que seja especificado para não compilar a versão gráfica USE="-X"

# pppoe-setup
(responda as perguntas corretamente)
# ppoe-start

Para ser inicializado no boot configure com pppoe-setup e depois edite o /etc/conf.d/net

# nano /etc/conf.d/net
config_eth0="adsl"
adsl_user_eth0="usuario"

Onde "usuario" deve ser idêntico ao informado no pppoe-setup

Canivete suiço

O netcat é considerado o canivete suiço de redes, com ele é possível conectar em um host (assim como o telnet) ou fazer o inverso e escutar em uma porta, podendo ser utilizado também para escaner portas de hosts ou até mesmo para ataques bruteforces.

# emerge netcat

Finalizando

O sistema já está pronto para ser iniciado e a partir daqui o próximo passo é dar forma a esse sistema de acordo com a sua função.

Outros artigos cobrirão a instalação de serviços de redes, ambientes gráficos, softwares diversos, etc.

A sequência de comandos a ser executada fecha a sessão do chroot, desmonta o disco e reinicia a máquina, se tudo tiver sido feito corretamente (principalmente na configuração do boot loader e do fstab), um prompt de login será exibido após o término do processo de boot.

# exit
# umount proc dev sys boot usr var
# reboot

Referências

Compartilhe:

  • Print
  • Digg
  • del.icio.us
  • Google Bookmarks
  • Add to favorites
  • email
  • LinkedIn
  • Netvibes
  • PDF
  • Rec6
  • Reddit
  • RSS
  • Slashdot
  • StumbleUpon
  • Twitter
  • Yahoo! Bookmarks

Posts Relacionados:

Related posts brought to you by Yet Another Related Posts Plugin.

Trackback This Post | Subscribe to the comments through RSS Feed

Leave a Reply

Powered by WP Hashcash