Instalando Gentoo em Servidor com Intel Corporation 82801 SATA RAID Controller
Introdução
Este tutorial foi feito no intuito de instalar o Gentoo Linux com suporte a controladora Intel Corporation 82801 SATA RAID Controller.
Na BIOS da controladora RAID foi configurado RAID 1 (espelho/mirror) para o servidor. Em nosso caso aperta-se CTRL+E durante a apresentação da controladora durante o levante do sistema.
Será preciso acesso à Internet para completar a instalação.
A instalação foi baseada no Gentoo Handbook AMD64 (64bits), com pequenas alterações durante o processo de instalação. Como no particionamento dos discos, alterações no arquivo /etc/make.conf (o qual controla o comportamento do sistema) e reconhecimento da controladora RAID apos a inicialização do sistema.
Inicializacao com o LiveDVD do Gentoo.
Você primeiro precisar ter o sistema Gentoo em mãos. Sugiro que você utilize o LiveDVD do Gentoo. O qual será usado como base pra esta instalação:
Você pode baixar o LiveDVD a partir destas espelhos:
Gentoo Linux -- Gentoo Linux Mirrors
É possível também ter o sistema Gentoo em um flashdisk (pendrive) neste caso siga as instruções em Gentoo Linux LiveUSB HOWTO.
Iniciando
Dê o boot no servidor com o LiveDVD.
Na tela de opções você poderia dar "Enter" e o LiveDVD iniciaria seu sistema. Em nosso caso também queremos que ele reconheça a controladora RAID e suas partições. Será preciso acrescentar a opção: dodmraid. Esta opção permite levantar o dmraid e permitir que ele mapeie o caminho da controladora RAID no subsistema de dispositivos.
Linux: gentoo dodmraid
A opção dosshd pode ser acrescentada, ela permite levantar o servidor SSH durante o boot do LiveDVD, útil para continuar a instalação em outro computado (a sala dos servidores é fria e a sua é mais agradável )
Linux: gentoo dodmraid dosshd
O LiveDVD irá configurar a placa de rede com DHCP. Você pode mudar isso após a inicialização completa do LiveDVD, contudo recomendo o endereçamento dinâmico já que o LiveDVD será retirado no final do processo.
Após a inicialização completa do LiveDVD, abra um terminal e autentique-se como root:
$ sudo su -
Com a rede já configurada, iremos passar para o particionamento dos discos.
Particionamento
Nesse processo a particionamento será feito contra o dispositivo que foi achado e endereçado pelo dmraid.
Para conferir se o dmraid encontrou com sucesso o bloco de dispositivo RAID, utilizaremos o comando dmraid -s:
# dmraid -s
*** Group superset isw_jdeejigjf
--> Active Subset
name : isw_jdeejigjf_RAID1
size : 488390912
stride : 128
type : mirror
status : ok
subsets: 0
devs : 2
spares : 0
Informacoes pertinentes:
- nome: isw_jdeejigjf_RAID1 (final 1, indicando RAID 1)
- tipo: mirror (espelho)
- Status do RAID: ok (funcionando)
- Disco de backup (Spares): 0 ( não há discos, pra esta função)
Todo o processo de particionamento será feito encima do do dispositivo isw_jdeejigjf_RAID1. Ele será encontrado no diretório mapper no /dev.
# ls -l /dev/mapper/isw_jdeejigjf_RAID1
brw-rw---- 1 root disk 253, 0 May 24 12:41 /dev/mapper/isw_jdeejigjf_RAID1
Nota
Recentemente tive problemas com a placa RAID Intel Corporation 82801JIR (ICH10R) SATA RAID Controller. A solução encontrada foi criar o RAID através do CD/DVD inicializável (que continha drivers e outras ferramentas) que acompanhava o servidor. Após dar o boot pelo CD/DVD é possível criar o RAID através de uma ferramenta; cria-se o RAID e dá-se um nome para o dispositivo. O problema de criar o RAID através do aplicativo contido na própria controladora, é que o nome do dispositivo mudava a cada reinicialização, assim as partições nunca eram encontradas.
Esta nota foi acrescentada, depois da conclusão deste tutorial.
Particionando
Utilize o cfdisk para particionar (o fdisk também funciona perfeitamente), com ele você pode ver a tabela de particionamento enquanto divide o disco. Usaremos o cfdisk passando como parâmetro o dispositivo isw_jdeejigjf_RAID1.
# cfdisk /dev/mapper/isw_jdeejigjf_RAID1
Importante: No cfdisk (ou fdisk) Ao particionar selecione a opção bootable para a partição onde ficará o/boot. E configure o tipo de sistema de arquivos como Linux raid autodetect ou Linux autodetect, a opcao é "fd" em todas as partições. Selecione o tipo Linux swap / Solaris para a partição usada pra ser o swap do sistema, opção "82".
O espaço de aproximadamente 250 Gb foi divido da seguinte forma (valores aproximados):
Particao: primaria /boot 200Mb
Particao: primaria /var 80Gb
Particao: primaria /usr 40Gb
Particao: Extendida swap 8Gb
Particao: Extendida / 20Gb
Particao: Extendida /opt 90Gb
Tudo certo! Partições criadas! Agora reinicie o computador e inicie novamente o LiveDVD com as opções:
Linux: gentoo dodmraid
Por que?
O dmraid não mapeou estas partições. Ao reinicar o LiveDVD, liste o diretório /dev/mapper e teremos:
# ls -l /dev/mapper/
total 0
crw-rw---- 1 root root 10, 57 May 24 12:41 control
brw-rw---- 1 root disk 253, 0 May 24 12:41 isw_jdeejigjf_RAID1
brw-rw---- 1 root disk 253, 1 May 24 12:41 isw_jdeejigjf_RAID11
brw-rw---- 1 root disk 253, 2 May 24 12:41 isw_jdeejigjf_RAID12
brw-rw---- 1 root disk 253, 3 May 24 12:41 isw_jdeejigjf_RAID13
brw-rw---- 1 root disk 253, 4 May 24 12:41 isw_jdeejigjf_RAID15
brw-rw---- 1 root disk 253, 5 May 24 12:41 isw_jdeejigjf_RAID16
brw-rw---- 1 root disk 253, 6 May 24 12:41 isw_jdeejigjf_RAID17
Criando os Sistemas de Arquivos
A partir de agora será criado o sistema de arquivo de cada partição.
O ext2 é o sistema mais testado e fiel ao Linux, mas não tem jornal de meta-dados, o que significa que verificações rotineiras de sistemas de arquivo ext2 podem levar bastante tempo. Existe agora uma razoável seleção de sistemas de arquivos de nova geração com jornal que podem ter sua consistência verificada rapidamente e que são geralmente preferíveis aos seus respectivos sistemas sem jornal. Sistemas de arquivo com jornal previnem longas esperas quando você carrega seu sistema e seu sistema de arquivos está em um estado inconsistente.
O ext3 é a versão com jornal do sistema de arquivos ext2, fornecendo jornal de meta-dados para recuperação rápida, fora outros modos de jornal aprimorados como dados completos e dados ordenados. O ext3 é um sistema de arquivos muito bom e confiável. Tem uma opção adicional de catalogar hashed b-trees que permite alta performance em quase todas situações. Você pode ativar este catálogo adicionando -O dir_index ao comando mke2fs. Para resumir, o ext3 é um excelente sistema de arquivos.
A partição Swap ( ou partição de troca ) é um espaço de seu disco rígido destinado para extender a memória RAM de seu computador, geralmente é usada para computadores que possuem pouca memória, é um recurso largamente utilizado em várias distribuições Linux.
/boot
# mkfs.ext2 /dev/mapper/isw_jdeejigjf_RAID11
/var
# mkfs.ext3 /dev/mapper/isw_jdeejigjf_RAID12
/usr
# mkfs.ext3 /dev/mappe/isw_jdeejigjf_RAID13
swap
# mkswap /dev/mapper/isw_jdeejigjf_RAID15
/ (raiz)
# mkfs.ext3 /dev/mapper/isw_jdeejigjf_RAID16
/opt
# mkfs.ext3 /dev/mapper/isw_jdeejigjf_RAID17
Ativando a Partição Swap
# swapon /dev/mapper/isw_jdeejigjf_RAID15
Montando
A partir de agora iremos montar os sistemas de arquivos recém-formados. Os pontos de montagem servirão para a criação do ambiente Gentoo.
# mount /dev/mapper/isw_jdeejigjf_RAID16 /mnt/gentoo
# mkdir /mnt/gentoo/boot
# mount /dev/mapper/isw_jdeejigjf_RAID11 /mnt/gentoo/boot
# mkdir /mnt/gentoo/var
# mount /dev/mapper/isw_jdeejigjf_RAID12 /mnt/gentoo/var
# mkdir /mnt/gentoo/usr
# mount /dev/mapper/isw_jdeejigjf_RAID13 /mnt/gentoo/usr
# mkdir /mnt/gentoo/opt
# mount /dev/mapper/isw_jdeejigjf_RAID17 /mnt/gentoo/opt
Instalando o Sistema/Ambiente Gentoo.
Acertando o Relógio
Use o comando date ou ntpdate:
# date
Tue May 25 16:09:52 BRT 201
# date 052516092010
# ntpdate 0.gentoo.pool.ntp.org
25 May 16:11:11 ntpdate[19084]: step time server 200.160.0.8 offset -12.690272 sec
Instalação do Stage3
Agora iremos instalar o Stage3 do Gentoo, isto é, iremos baixar o sistema operacional em sua forma mais "crua". O sistema Gentoo com seus arquivos e scripts básicos de funcionamento.
Entre no diretório / (raiz) do futuro sistema:
# cd /mnt/gentoo
Baixe o Stage3 e os arquivos de verificação (MD5sum) a partir de um dos espelhos listados nesta página, utilize o links para acessar a pagina via linha de comando e salvar os arquivos no diretório corrente:
links http://www.gentoo.org/main/en/mirrors.xml
Tenha certeza que o Stage3 foi baixado!
E confira se o arquivos não estão corrompidos.
# md5sum -c stage3-amd64-20100514.tar.bz2.DIGESTS
stage3-amd64-20100514.tar.bz2: OK
Descompacte o arquivo:
# tar xvjpf stage3-*.tar.bz2
Portage
O Portage é o sistema de gerenciamento de pacotes do Gentoo. Ele é similar ao ports do BSD: o design original foi baseado no ports do FreeBSD. Em contraste, a árvore do Portage não contém diretórios com makefiles, mas com as chamadas ebuilds, scripts bash que descrevem funções separadas para baixar, configurar, compilar, instalar e remover um pacote, além de funções adicionas que podem ser utilizadas no ambiente operacional para um pacote. A principal ferramenta de gerenciamento de pacotes do Portage é a emerge . Trazida junto com outros scripts úteis, a ferramenta emerge, é escrita em Python e pode ser usada por usuários privilegiados para inspecionar e alterar facilmente o conjunto de pacotes no Gentoo. O emerge pode ser utilizado para operar de modo similar ao modo como outras coleções do ports funcionam, ao entrar em um diretório da árvore e utilizar o emerge (ao invés do make) para realizar operações relacionadas ao gerenciamento de pacotes. O portage lê configurações no arquivo /etc/make.conf, mantendo a sua similaridade com o ports, e pode ser usado por exemplo, para determinar onde a(s) árvore(s) do Portage são mantidas.
Baixe o portage e verifique sua integridade:
# links http://www.gentoo.org/main/en/mirrors.xml
# md5sum -c portage-latest.tar.bz2.md5sum
portage-latest.tar.bz2: OK
Agora descompacte o Portage dentro do sistema de arquivos:
# tar xvjf /mnt/gentoo/portage-latest.tar.bz2 -C /mnt/gentoo/usr
Otimizando o Sistema
Para otimizar o Gentoo iremos conhecer e alterar (editores nano ou vi) o arquivo /mnt/gentoo/etc/make.conf, as modificações neste arquivo impactam de forma gritante no comportamento do sistema. A visao geral do aquivo é:
FLAGS="-O2 -pipe"
CXXFLAGS="${CFLAGS}"
CHOST="x86_64-pc-linux-gnu"
CHOST
A variável CHOST declara a arquitetura de construção para seu sistema. Já deve estar ajustada a seu valor correto. Se a variável CHOST parecer estar incorreta, você pode estar usando o tarball do Stage3 errado.
Não a edite, já que isto pode quebrar seu sistema.
CFLAGS e CXXFLAGS
As variáveis CFLAGS e CXXFLAGS definem as opções de otimização para os compiladores de C e C++ do gcc respectivamente. Embora geralmente sejam definidas aqui, você só irá obter máxima performance se otimizar as opções para cada programa separadamente. A razão disto é que cada programa é diferente.
No make.conf você deve definir as opções de otimização que você pensa que irão deixar seu sistema com uma melhor resposta em geral. Não coloque configurações experimentais nesta variável; muitas otimizações podem fazer o programa não se comportar bem ("dar pau", ou ainda pior, mal funcionamento).
Iremos informar ao Gentoo qual o tipo do processador usado pelo servidor, os arquivos serão otimizados para o processador em questao. A primeira configuração é a opção -march=, que especifica o nome da arquitetura alvo.
# cat /proc/cpuinfo
vendor_id : GenuineIntel
cpu family : 15
model : 4,6
model name : Intel(R) Xeon(R) CPU XXXXMHz
model name : Intel(R) Celeron(R) M CPU 5xx @ XXXGHz
32-bit profile (x86):
64-bit profile (amd64):
CHOST="i686-pc-linux-gnu"
CFLAGS="-march=prescott -O2 -pipe -fomit-frame-pointer"
CXXFLAGS="${CFLAGS}"
CHOST="x86_64-pc-linux-gnu"
CFLAGS="-march=nocona -O2 -pipe"
CXXFLAGS="${CFLAGS}"
Caso queira explicitar o tipo de processador veja este site:
Safe Cflags - Gentoo Linux Wiki
A partir da versao 4.2 do gcc eh possível usar a opção "-march=native" onde o gcc detecta automaticamente o processador em questao.
A segunda é a opção-O (que é um O maiúsculo, não é um zero), que especifica a classe da opção de otimização da gcc. Possíveis classes são s (para otimização de tamanho), 0 (zero - para não otimizar), 1, 2 ou 3 para opções com otimizações de velocidade (toda classe tem as mesmas opções que a anterior, com alguns extras). Para uma otimização de classe 2 (recomendada):
-O2
Outra otimização popular é a opção-pipe (usar pipes ao invés de arquivos temporários é melhor para comunicação entre os vários estágios de compilação).
Saiba você que usar -fomit-frame-pointer (que não mantém o frame pointer em um registro para as funções que não necessitam de um) pode ter sérias repercussões na eliminação de erros das aplicações!
Através de minha experiência (3 anos usado Gentoo) nem todo programa a ser compilado admite o uso de -fomit-frame-pointer. Em caso de erro experimente desabilitar este parâmetro para o programa em questão.
A compilação sys-devel/gcc-4.4.3-r2 não obteve sucesso ao usar esta flag.
Quando você define as CFLAGS e CXXFLAGS, pode-se combinar diversas opções de otimização.
Com MAKEOPTS você define quantas compilações paralelas deverão ocorrer quando instalar um pacote. Uma boa escolha é o número de CPUs no seu sistema mais um, mas esta regra não é perfeita.
Em meu caso como tenho 4 núcleos, meu MAKEOPTS sera n_cpu+1=5.
MAKEOPTS="-j5"
O /mnt/gentoo/etc/make.conf ficará desta forma:
CFLAGS="-march=native -O2 -pipe -fomit-frame-pointer "
CXXFLAGS="${CFLAGS}"
CHOST="x86_64-pc-linux-gnu"
USE="mmx sse sse2 symlink"
MAKEOPTS="-j5"
Copie o /mnt/gentoo/etc/make.conf para o /etc/make.conf do LiveDVD. Com isso as opções de otimização também serão usadaos pelo LiveDVD.
Instalando o Sistema Gentoo
Enjaulando (Chrooting)
Selecionando espelhos (repositorios)
Com o mirrorselect, voce podera escolher quais espelhos serão usados e armazenados no /mnt/gentoo/etc/make.conf
# mirrorselect -i -o >> /mnt/gentoo/etc/make.conf
O próximo passo e escolher o servidor RSYNC que será usado para atualizar a arvore do portage.
# mirrorselect -i -r -o >> /mnt/gentoo/etc/make.conf
Configurando o DNS
Antes de entrar no novo ambiente será preciso que este possa resolver os "nomes" dos enderecos de internet, para isso iremos copiar a configuração pré-existente no LiveDVD.
# cp -L /etc/resolv.conf /mnt/gentoo/etc/
A opção -L previne que voce esteja copiando um link simbólico.
Montando os Sistemas de Arquivos /proc e /dev
Montar os sistemas de arquivos /proc e /dev permite a instalacao usar as informacoes per estabelecidas pelo kernel do LiveDVD em execução junto com o ambiente enjaulado (chroot).
# mount -t proc none /mnt/gentoo/proc
# mount -o bind /dev /mnt/gentoo/dev
Entrando no Novo Ambiente
Agora que todas as partições estão inicializadas e o ambiente base instalado. Você será capaz de entrar no seu sistema Gentoo propriamente dito. A partir deste momento você não estará mais lidando com o S.O. do LiveDVD e sim com o sistema Gentoo instalado em seu disco!
São tres passos:
- Mudar a raiz do LiveDVD para a raiz do sistema base (chroot)
- Criar o novo ambiente (env-update)
- Carregar as variáveis de ambiente do sistema base (source)
# chroot /mnt/gentoo /bin/bash
# env-update
>> Regenerating /etc/ld.so.cache...
# source /etc/profile
# export PS1="(chroot) $PS1"
Configurando o Portage
Atualizando o Portage
Agora o portage será atualizado para a última versão.
# emerge --sync
Para terminais pequenos ou com pouco framebuffer:
# emerge --sync --quiet
Caso seu firewall seja muito restritivo utilize:
# emerge-webrsync
Esta opção permite baixar as informacoes via http.
Se você for avisado de que uma nova versão do Portage está disponível e que você deve atualizar o Portage, ignore-a. O Portage será atualizado mais tarde durante a instalação. Ou você pode utilizar a opção:
# emerge --oneshot portage.
Escolhando o Profile
Um profile (perfil) é um bloco de construção para qualquer sistema Gentoo. Ele não só especifica os valores padrão para CHOST, CFLAGS e outras variáveis importantes, mas também trava o sistema em um certo alcance de versões de pacotes. Tudo isto é mantido pelos desenvolvedores do Gentoo. Contudo o perfil (profile) ditará como o seu Gentoo irá se comportar de acordo com os projetos dos desenvolvedores do Gentoo.
# eselect profile list
Available profile symlink targets:
[1] default/linux/amd64/10.0 *
[2] default/linux/amd64/10.0/desktop
[3] default/linux/amd64/10.0/server
Para selecionar o perfil do seu Gentoo:
# eselect profile set 3
# eselect profile list
Available profile symlink targets:
[1] default/linux/amd64/10.0
[2] default/linux/amd64/10.0/desktop
[3] default/linux/amd64/10.0/server *
Configurando a Variável USE
A variável USE é uma das variáveis mais poderosas que o Gentoo oferece a seus usuários. Vários programas podem ser compilados com ou sem suporte opcional para certos itens. Por exemplo, alguns programas podem ser compilados com ou sem suporte a gtk, ou com suporte a qt. Outros podem ser compilados com ou sem suporte a SSL. Alguns programas podem até mesmo ser compilados com suporte a framebuffer (svgalib) ao invés de suporte a X11 (servidor de X).
A maior parte das distribuições compila seus pacotes com suporte para o máximo possível, aumentando o tamanho dos programas e seu tempo de inicialização, sem mencionar uma grande quantidade de dependências. Com o Gentoo você pode definir que opções um pacote deve usar para a compilação. Aí que entra a variável USE.
Na variável USE você define palavras-chave que são mapeadas nas opções de compilação. Por exemplo, ssl irá compilar suporte de ssl nos programas que suportam ssl. -X irá remover suporte a servidor de X (note o sinal de menos na frente). gnome gtk -kde -qt irá compilar seus programas com suporte a gnome (e gtk), e sem suporte a kde (e qt), fazendo com que seu sistema seja completamente voltado para o GNOME.
As configurações padrão de USE são colocadas no arquivo make.defaults de seu profile. Você encontra os arquivos make.defaults no diretório para o qual /etc/make.profile aponta e todos os subdiretórios também. Os ajustes padrão de USE são a soma de todos os ajustes de USE em todos arquivos make.defaults.
O que você colocar no /etc/make.conf é calculado contra estes ajustes. Se você adicionar algo ao ajuste de USE, ele é adicionado à lista padrão. Se você remover algo do ajuste de USE (colocando um sinal de menos na frente), o algo é removido da lista padrão (se estava na lista padrão para começar). Nunca altere nada dentro do diretório /etc/make.profile; ele será sobre-escrito quando você atualizar o Portage!
Uma descrição completa da USE pode ser encontrada na segunda parte do Manual do Gentoo, opções de USE. Uma lista completa das opções de USE disponíveis pode ser encontrada em seu sistema no arquivo /usr/portage/profiles/use.desc.
Usando o programa ufed, será disponibilizado uma lista de todas as variáveis USE e para quais programas a variável em questão irá interagir.
Quando você coloca uma variável USE no make.conf essa variável será uma variável global, ela irá agir em todo o sistema. Se você quer que determinada variável seja usada em um programa específico você deve definir no arquivo /etc/portage/package.use:
Uso global:
/etc/make.conf:
USE="ccache flash gdu mmx nsplugin nvidia policykit sse sse2 symlink threads -cups"
Uso específico:
/etc/portage/package.use
app-admin/conky truetype audacious -ipv6
Ao usar o sinal de menos (-) o suporte em questão esta sendo desabilitado.
Opcional: Glibc Locales
Você provavelmente só usa um ou dois locales em seu sistema. Até agora, depois de compilar o glibc uma lista completa de locales é criada.
# nano -w /etc/locale.gen
en_US ISO-8859-1
en_US.UTF-8 UTF-8
pt_BR ISO-8859-1
pt_BR.UTF-8 UTF-8
Depois de o comando:
# locale-gen
Fuso Horário
Você deve primeiro selecionar seu fuso horário para que seu sistema saiba onde está localizado. Procure seu fuso horário em /usr/share/zoneinfo, então copie-o para /etc/localtime. Por favor evite as zonas de fuso horário em /usr/share/zoneinfo/Etc/GMT*, já que seus nomes não refletem as zonas esperadas. Por exemplo, GMT-8 é na verdade GMT+8.
# cp /usr/share/zoneinfo/Brazil/East /etc/localtime
Instalando as Fontes - Escolhendo um Kernel
O centro através do qual todas distribuições são construídas é o kernel do Linux. Ele fica entre os programas de usuário e o hardware do sistema. O Gentoo permite que seus usuários escolham dentro de uma variedade de fontes de kernel. Uma lista completa com descrições pode ser encontrada no Guia de Kernel do Gentoo.
Para sistemas baseados em AMD64 nós temos o gentoo-sources (fontes do kernel v2.6 com patches específicos de amd64 para estabilidade, performance e suporte para hardware).
Escolha sua fonte de kernel e instale-a usando o comando emerge. O USE="-doc" é necessário para evitar instalar xorg-x11 ou outras dependências neste ponto. USE="symlink" não é necessário para uma nova instalação, mas garante a criação correta do link simbólico /usr/src/linux.
# USE="-doc symlink" emerge gentoo-sources
# emerge gentoo-sources
# ls -l /usr/src/linux
lrwxrwxrwx 1 root root 19 May 21 15:41 /usr/src/linux -> linux-2.6.32-gentoo-r7
Se você quiser configurar seu kernel existem duas maneiras
manualmente e com o genkernel. Nesse tutorial iremos usar o genkernel, isto porque precisaremos de um disco de RAM inicial.
O genkernel funciona configurando um kernel praticamente idêntico ao modo que o kernel do LiveDVD de instalação é configurado. Isto significa que quando você usar o comando genkernel para construir seu kernel, seu sistema irá geralmente detectar seu hardware na hora da inicialização, como no LiveDVD de instalação. Dado que o genkernel não necessita de nenhuma configuração manual, é uma solução ideal para aqueles usuários que não se sentem confortáveis compilando seus próprios kernéis.
Para uma configuracao manual clique aqui (vale a pena dar uma olhada):
Usando o Genkernel
Instale o genkernel:
# emerge genkernel
Otimizando o Genkernel
No arquivo /etc/genkernel.conf , altere a opção MAKEOPTS para que o genkernel paralelize a compilação do kernel. Nesse caso utilize a mesma opcao do /etc/make.conf.
MAKEOPTS="-j5"
Agora, para uma compilação padrão, compile suas fontes de kernel rodando genkernel all. Esteja alerta, entretanto, de que como o genkernel compila um kernel que suporta quase todos hardwares, esta compilação irá demorar bastante para terminar!
Note que se sua partição de inicialização (boot) não usa ext2 ou ext3 como sistema de arquivos, você precisará configurar manualmente seu kernel usando o comando genkernel --menuconfig alle adicionando suporte para seu sistema de arquivos DENTRO do kernel (isto é, não como módulo).
Instalando o Dmraid
Utilize o emerge para instalar o dmraid:
# emerge dmraid
Invocando o Genkernel e Configurando o Kernel
Com o parâmetro --menuconfig podemos configurar o kernel antes da compilação. Em nosso caso iremos configurar o kernel antes da compilação, habilitar o suporte ao dmraid e instalar as imagens do kernel no /boot:
# genkernel --menuconfig --dmraid all
Configurando o Kernel para Suporte a Controladora RAID
Para um suporte padrão a RAID clique aqui.
Como referência utilizei o NeddySeagoons' Rough Guide to Intel ICH7 Chip Set que serviu como base para a configuração da controladora RAID mencionada neste tutorial.
Em nosso caso iremos utilizar as seguintes opções. Faça as seguintes escolhas:
Device Drivers --->
< > ATA/ATAPI/MFM/RLL support --->
<*> Serial ATA (prod) and Parallel ATA (experimental) drivers --->
[*] Verbose ATA error reporting
[*] ATA ACPI Support
[*] SATA Port Multiplier support
<*> AHCI SATA support
< > Silicon Image 3124/3132 SATA support[*] ATA SFF support
< > ServerWorks Frodo / Apple K2 SATA support
<*> Intel ESB, ICH, PIIX3, PIIX4 PATA/SATA support
Desmarque todas as opções seguintes a partir de "Intel ESB, ICH, PIIX3, PIIX4 PATA/SATA support".
Em:
SCSI device support --->
< > RAID Transport Class
-*- SCSI device support
< > SCSI target support [*] legacy /proc/scsi/ support
*** SCSI support type (disk, tape, CD-ROM) ***
<*> SCSI disk support
< > SCSI tape support
< > SCSI OnStream SC-x0 tape support
<*> SCSI CDROM support
[*] Multiple devices driver support (RAID and LVM) --->[*] Autodetect RAID arrays during kernel boot
<*> RAID-1 (mirroring) mode
SCSI CDROM support pode estar marcado como <M> ou <*> mas ele tratado como um disposito SCSI agora. voce encontrara duas entradas no /dev: /dev/sr0 que contém o bloco do dispositivo (ques era usado normalmente) e /dev/sg0 o qual controla o dispositivo. Logo altere seu fstab para apontar para o novo dispositivo caso seu cdrom esteja sendo apontado como /dev/hdx.
Para os chipsets ICH8 and ICH9 que tem sido vistos como hardware AHCI SATA (BIOS):
<*> AHCI SATA support
<*> Intel ESB, ICH, PIIX3, PIIX4 PATA/SATA support
Alguns chipsets tem suporte ao chip Jmicron PATA/SATA chip, neste caso nao esqueça de marcar a opção:
<*> JMicron PATA support
Depois de configurar seu kernel, salve seu .confige saia do menu. Ápos a saída do menu o genkernel irá compilar seu kernel.
Acompanhe a saída do genkernel. Podem aparecer alguns erros devido a falta de uma biblioteca ou comando. Nesse caso utlize emerge -s nomedopacotepara procura o pacote e emerge nomedopacote para instalá-los.
Módulos do Kernel
Para carregar algum módulo durante o boot coloque o nome do módulo no arquivo:
# nano -w /etc/modules.autoload.d/kernel-2.6
Para achar o módulos disponíveis:
# find /lib/modules/<kernel version>/ -type f -iname '*.o' -or -iname '*.ko' | less
Configurando o /etc/fstab
Ao configurar o fstab, trabalharemos emcima das particoes
que configuramos no cfdisk no começo do tutorial (a configuração muda de acordo com o modo em que o disco foi particionado , sinta-se livre para alterar.)
Deixe parecido com isso:
# nano /etc/fstab
/dev/mapper/isw_jdeejigjf_RAID11 /boot ext2 defaults,noatime 1 2
/dev/mapper/isw_jdeejigjf_RAID15 none swap sw 0 0
/dev/mapper/isw_jdeejigjf_RAID16 / ext3 noatime 0 1
/dev/mapper/isw_jdeejigjf_RAID12 /var ext3 noatime 1 2
/dev/mapper/isw_jdeejigjf_RAID13 /usr ext3 noatime 1 2
/dev/mapper/isw_jdeejigjf_RAID17 /opt ext3 noatime 1 2
/dev/cdrom /mnt/cdrom auto noauto,user 0 0
proc /proc proc defaults 0 0
shm /dev/shm tmpfs nodev,nosuid,noexec 0 0
Colocando a interface de rede para inicializar no boot
Use o comando rc-update, ele quem gerencia quais servicos serao iniciados em determinadas fases da inicilizacao do sistema.
# rc-update add net.eth0 default
Para placas de rede adicionais, cri um link simbólico para net.lo (loopback)
# cd /etc/init.d
# ln -s net.lo net.eth1
# rc-update add net.eth1 default
Configurando a senha de root
Não esqueça de alterar a senha de root:
# passwd
Instalando as Ferramentas Necessárias
Logger do Sistema
# emerge syslog-ng
# rc-update add syslog-ng default
Agendamento
# emerge vixie-cron
# rc-update add vixie-cron default
Indexamento de Arquivos
# emerge slocate
Ferramentas de Sistema de Arquivo
XFS
# emerge xfsprogs
ReiserFS
# emerge reiserfsprogs
JFS
# emerge jfsutils
Instalando um cliente de DHCP
# emerge dhcpcd
Opcional: Utilitários de RAID para hardware IBM
Se você estiver usando SCSI RAID em um sistema baseado em POWER5, você deve considerar a instalação do iprutils que permitem que você trabalhe com o array de discos RAID, obter o status dos discos nas arrays, e atualizar microcode, entre outras funções.
# emerge iprutils
Configurando o Gerenciador de Inicialização
Agora que seu kernel está configurado e compilado e os arquivos necessários para a configuração do sistema foram preenchidos corretamente, está na hora de instalar um programa que irá carregar seu kernel quando você iniciar o
sistema. O programa é chamado de gerenciador de inicialização.
Esta é uma das partes chaves para que o sistema reconheça o nossa controladora RAID e que o sistema reconheça as particoes criadas.
Entendendo a terminologia do GRUB
A parte mais crítica na compreensão do GRUB é sentir-se confortável com como o GRUB se refere aos discos rígidos e partições. Sua partição Linux /dev/hda1 será provavelmente chamada de (hd0,0) no GRUB. Note os parênteses no hd0,0 - eles são requeridos.
Discos rígidos contam a partir de 0 (zero) ao invés de "a" e as partições iniciam em 0 (zero) ao invés de 1 (um). Esteja atento para isto com os dispositivos hd, somente os discos rígidos são contados, não dispositivos atapi-ide tais como leitores e gravadores de cdrom. O mesmo acontece com dispositivos SCSI. (Normalmente eles recebem números maiores que os dispositivos ide exceto quando a BIOS está configurada para iniciar a partir do SCSI.) Quando você pede à BIOS que inicie de um disco rígido diferente (por exemplo seu escravo primário), aquele disco rígido é visto como hd0.
Presumindo que você tem um disco rígido em /dev/hda, um leitor de cdrom em /dev/hdb, um gravador em /dev/hdc, um segundo disco rígido em /dev/hdd e nenhum disco rígido SCSI, /dev/hdd7 é traduzido como (hd1,6). Pode parecer complicado e realmente é, mas como veremos, o GRUB oferece um mecanismo de completação com o tab que ajuda muito aqueles que têm muitos discos rígidos e partições e que ficam um pouco perdidos com o esquema de numeração do GRUB.
Tendo entendido a situação, está na hora de instalar o GRUB.
Neste caso em especial irei frisar a instalação do grub para reconhecer as particoes criadas em nosso RAID 1.
Se o /dev/ enjaulado não contiver o diretório mapper:
# dmsetup mknodes
Instale o Grub
# emerge grub
Em alguns casos (nvraid é um deles), você tera que especificar a "geometria" do driver. Rode o fdisk no dispositivo do RAID e note as informacoes de C/H/S - cilindros (cylinders), cabeçalhos (heads) e setores (sectors).
Teremos que configurar o grub manualmente. Usaremos a opcao--device-map e nulo como entrada.
# grub --device-map=/dev/null
Agora iremos entra no modo shell do grub. Neste caso diremos ao grub qual dispositovo se tornará nosso dispositivo de boot. Se a particao de boot é /dev/mapper/dispositivo_raid_part1 então nosso bloco de dispositivo para o grub será particao -1 nesse caso:
grub> device (hd0) /dev/mapper/dispositivo_raid_part
Se tiver problemas com sua partições no grub, diga ao grub a geometria do disco, informando o C/H/S.
grub> geometry (hd0) C H S
Agora que o grub sabe onde as partições se encontram, é hora de gravé-lo na MBR:
grub> root (hd0,0)
grub> setup (hd0)
grub> quit
E pronto. =)
Configurando o grub.conf
# nano /boot/grub/grub.conf
default 0
timeout 5
splashimage=(hd0,0)/boot/grub/splash.xpm.gz
title Gentoo Linux
kernel (hd0,0)/boot/kernel-genkernel-x86_64-2.6.32-gentoo-r7 root=/dev/ram0 real_root=/dev/mapper/isw_jdeejigjf_RAID16 init=/linuxrc ramdisk=8192 dodmraid udev
initrd (hd0,0)/boot/initramfs-genkernel-x86_64-2.6.32-gentoo-r7
A opçãoao real_root aponta para a partição onde se encontra a / (raiz). Veja que aponta para isw_jdeejigjf_RAID16 que é particao / (raiz) definida no particionamento e fstab.
A opção dodmraid irá carrega o dmraid durante a inicialização primária do sistema.
A opção udev é necessária para algumas placas, adicione esta opção caso o boot falhe por não achar o root (raiz).
Note que em nenhum momento trabalhamos com os discos em si /dev/sdax ou /dev/sdbx, etc.
Reiniciando o sistema
Saia do ambiente de chroot e desmonte todas partições montadas. Então digite aquele comando utópico que você estava esperando: reboot.
# exit
# cd
# umount /mnt/gentoo/boot /mnt/gentoo/dev /mnt/gentoo/proc /mnt/gentoo/usr /mnt/gentoo/opt /mnt/gentoo/var
# reboot
Claro, não se esqueça de tirar o CD carregável, ou o CD será carregado novamente ao invés de seu sistema Gentoo.
Acompanhe o boot e procure por eventuais erros.
Parabéns seu sistema Gentoo esta instalado com suporte a controladora RAID e seu RAID esta funcional.
Referências:
- http://en.gentoo-wiki.com/wiki/RAID/Onboard
- http://en.gentoo-wiki.com/wiki/RAID/NVRAID_with_dmraid#Building_the_Kernel
- http://en.gentoo-wiki.com/wiki/Initramfs
- http://forums.gentoo.org/viewtopic-p-4570091.html#4570091
- http://forums.gentoo.org/viewtopic-t-828901-highlight-raid+error+boot.html
Agradecimentos:
- Ao portal Under-Linux.org
- Ao Code pela ajuda no tutorial.
- Ao NBCGIB onde está localizado o parque computacional.
Autor
- Duca
Comentários
+ Enviar Comentário