Kernel e Grub
Passo 9 - Kernel
A distribuição Funtoo, como você está vendo, é muito flexível e configurável. Em questão de kernel também. O usuário pode instalar um kernel puro ou usar uma das
opções disponíveis pelo Funtoo, dentre elas estão:
- vanilla-sources: kernel puro.
- gentoo-sources: kernel da distribuição Gentoo
- openvz-rhel6-stable: kernel baseado em RedHat com suporte a OpenVZ
- ubuntu-server: kernel do Ubuntu versão server
- debian-sources: kernel do Debian, com suporte a OpenVZ também
- debian-sources-lts: outro kernel Debian, mas long-term
Aqui uma comparação das opções de kernel:
O manual oficial recomenda o uso da opção binária debian-sources. Pois há uma modificação feita por Daniel Hobbins que automatiza o uso de módulos. Assim o
kernel teria um maior suporte aos tipos de hardware. Em contrapartida a compilação dele pode levar HORAS. Sim, eu sei, já testei. Não aguentei esperar e fui dormir.
AVISO! AVISO! AVISO!
Se você quiser testar o kernel recomendado pelo manual oficial fique a vontade. Se for isso mesmo que quer, pouco antes de ir dormir, basta executar o seguinte:
# mkdir /etc/portage/sets
# echo sys-kernel/debian-sources > /etc/portage/sets/kernel
# echo "sys-kernel/debian-sources binary" >> /etc/portage/package.use
# emerge @kernel
E ir dormir.
Porém, nas duas vezes que tentei usar esse kernel, obtive um erro completamente inesperado, e do qual o manual oficial não fez menção. Surgiu um erro de "emake
phase" e tinha alguma coisa a ver com sys-fs/lvm2. Sim, tentei corrigir de várias formas, e o manual não me preparou para isso, foi frustante. Perdi horas assim.
Como sou iniciante em Funtoo, muito provavelmente me faltou conhecimento para resolver o problema. Mas eu não desisti.
Parti para outro kernel. A melhor opção foi usar o kernel puro. Com esse eu consegui iniciar o sistema. Sem falar que o tempo de compilação do kernel puro também
é bem menor que do kernel Debian binário.
Para usar o kernel puro, esqueça os comandos acima e execute:
# emerge vanilla-sources
# cd /usr/src/linux-3.15.6
# make menuconfig
# make all
# make modules_install
# cp System.map /boot
# cd arch/x86_64/boot
# cp bzImage /boot
Dica: se não estivéssemos no VirtualBox, seria necessário obtermos informações completas sobre o nosso hardware para compilar o kernel. Essas informações
podem ser conseguidas com os seguintes comandos:
# lspci -v
# lsusb -v
# cat /proc/cpuinfo
# cat /proc/meminfo
Você pode testar, executando esses comandos em sua máquina hospedeira. O parâmetro -v (ou -vv) é opcional e deixa o resultado mais detalhado.
Passo 10 - Grub
Para instalar e configurar o Grub, execute:
# emerge boot-update
# grub-install --no-floppy /dev/sda
# boot-update
AVISO! AVISO! AVISO!
Quando se executa o comando "emerge boot-update", o Grub vai ser instalado também. Porém aqui, comigo, deu erro na instalação do Grub. Não recordo a
mensagem de erro que aparecia. Mas eu busquei informações nos fóruns.
Aqui cabe uma observação: no mundo Gentooniano e Funtooniano, pelo menos para iniciantes, além de passar HORAS esperando compilação, dias (e noites)
configurando o sistema, ainda é necessário passar muito tempo funçando fóruns e wikis para resolver problemas.
Em um fórum alguém dizia que a solução para o problema da instalação do Grub era executar:
# perl-cleaner all
Porém, ao executar tal comando, surgiu outro erro. Um pacote bloqueando outro. Alguma coisa a ver com "ExtUtils-MakeMaker". Neste caso o albfneto me deu uma
dica. Ele disse:
"Pacotes conflitantes, pode tentar assim:
pacote A bloqueia o pacote B... Tente assim. Remova o pacote mais antigo que bloqueia o outro, sem as deps:
# emerge -C --nodeps A
Agora instala o pacote B:
# emerge -av B
depois recoloca o pacote A, se precisar, sem as deps:
# emerge -av --nodeps A"
Após algumas tentativas consegui resolver o bloqueio. Depois pude executar o "perl-cleaner all" e com isso instalar o Grub pelo "boot-update".
Resumindo a história, se der erro na instalação do Grub (via boot-update), precisará executar "perl-cleaner all", mas se der erro no "perl-cleanner all", veja quais são
os pacotes bloqueados e resolva usando a dica do albfneto, depois que resolver o bloqueio tente o "perl-cleaner all" novamente, vai ter sucesso, e depois execute o
"boot-update" que irá instalar o Grub com sucesso. ;-)
O manual oficial do Funtoo não te prepara para essas coisas. De fato, o sistema Gentoo e Funtoo, quando não se tem o costume, pode ser quebrado pelo usuário
logo. Senti isso anos trás quando instalei Gentoo e fiquei "traumatizado" com distros de compilação.
Retomando...
Se quiser editar o Grub:
# nano /etc/boot.conf
Exemplo de configuração:
boot {
generate grub
default "Funtoo"
timeout 3
}
"Funtoo" {
#kernel bzImage[-v]
kernel Linux[-v]
}
"Funtoo Linux genkernel" {
kernel kernels/[-v]/kernel[-v]
initrd initramfs[-v]
params += real_root=auto
}
Salve e feche.
Para este caso, perceba que foi comentada a linha "kernel bzImage[-v]" e o que está em uso é "kernel Linux[-v]". Se fizer essa modificação puramente estética, terá
que alterar também o nome do arquivo bzImage, assim:
# cd /boot
# mv bzImage Linux
# boot-update
Deve aparecer algo assim:
DEFAULT > Funtoo - Linux
* Completed successfully