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
Posts Relacionados:
- Instalando o Webmail Horde IMP
- Instalando o AWStats na Dreamhost
- Gentoo Linux. Você está pronto para ele?
Related posts brought to you by Yet Another Related Posts Plugin.