Aviso :
Este documento não é válido e não é mais mantido.
|
O guia de genkernel do Gentoo Linux
1.
Introdução
Introdução
O genkernel é desenhado para permitir aos usuários que não estão acostumados a
compilar um kernel usar uma configuração parecida com a que é usada nos CDs de
Instalação do Gentoo, que auto-detecta seu hardware.
Alguns usuários também podem estar interessados em usar o genkernel para
hardware que requer inicialização e um kernel funcional antes de poder ser
carregado. Pelo fato de o genkernel também compilar automaticamente seus módulos
de kernel, ele permite que hardware que precisa ser carregado com parâmetros de
módulo sejam usados.
O genkernel serve para mim?
O genkernel é freqüentemente a escolha para aqueles que não tem o costume de
compilar seu próprio kernel ou não tem certeza sobre suas configurações de
hardware.
Pelo fato de o genkernel ser desenhado para usar uma configuração genérica, ele
é capaz de suportar todo seu hardware - no entanto, porque todos os drivers e
módulos têm de ser compilados também, a compilação do kernel feita manualmente é
normalmente muito mais rápida desde que você saiba do que precisa.
O genkernel não tem atualmente, entretanto, suporte para carregar o sistema a
partir de partições LVM2/EVMS2. Recomenda-se que os usuários usem um kernel
compilado manualmente por enquanto.
Obtendo o genkernel
Você pode obter o genkernel simplesmente rodando emerge genkernel. Não se
esqueça de usar a opção -k para instalá-lo se você estiver usando pacotes
binários, isto é, GRP. Devido aos pacotes GRP terem uma versão antiga do
genkernel, as opções são diferentes. Como resultado, você deve consultar o
Manual do Gentoo e genkernel --help.
Plataformas suportadas
A partir do genkernel 3.0.2, as seguintes plataformas devem ser suportadas:
alpha, amd64, parisc, parisc64, ppc, ppc64, sparc, sparc64, e x86.
2.
Uso do genkernel
Introdução
O genkernel é desenhado para funcionar em três modos:
- modo "all": constrói o kernel e initrd
- modo "kernel": só constrói a imagem de kernel
- modo "initrd": só constrói o initrd
A maior parte dos usuários só deve rodar no modo "all", que roda os modos
"kernel" e "initrd" para você. Note que atualmente os modos "kernel" e
"initrd" são somente apelidos para o modo "all", então eles não terão nenhum
efeito especial.
Embora o genkernel seja principalmente um comando para tornar sua vida mais
fácil quando você precisar compilar um kernel, o genkernel também tem várias
opções diferentes que permitem que você personalize como seu kernel é compilado
ou configurado.
Opções de compilador do genkernel
O genkernel suporta as seguintes opções que são passadas para as aplicações
relevantes quando o kernel é montado:
-
--kernel-as=algumAssembler: Especifica um assembler para
ser usado na compilação de seu kernel.
-
--kernel-cc=algumCompilador: Especifica um compilador para
ser usado na compilação de seu kernel.
-
--kernel-ld=algumLinker: Especifica um linker para
ser usado na compilação de seu kernel.
-
--kernel-make=algumMake: Especifica um GNU make alternativo
para ser usado na compilação de seu kernel.
-
--utils-as=algumAssembler: Especifica um assembler para
ser usado na compilação dos utilitários de suporte.
-
--utils-cc=algumCompilador: Especifica um compilador para
ser usado na compilação dos utilitários de suporte.
-
--utils-ld=algumLinker: Especifica um linkador para
ser usado na compilação dos utilitários de suporte.
-
--utils-make=algumMake: Especifica um GNU make alternativo
para ser usado na compilação dos utilitários de suporte.
-
--makeopts=-jTrabalhos: Especifica as opções que devem ser
passadas para o GNU make quando o kernel e os utilitários estiverem sendo
compilados.
Opções de kernel do genkernel
O genkernel suporta as seguintes opções, algumas das quais têm uma
--no-opção equivalente que influenciam na compilação do kernel:
-
--callback="echo Hello": Esta rotina roda os argumentos especificados
depois que o kernel e os módulos relevantes foram construídos; mas antes da
initrd ser construída. Ela é útil quando você quiser instalar módulos
externos no initrd fazendo emerge do ítem relevante usando callback e
redefinindo o grupo de módulos do genkernel.
-
--no-clean: Roda ou não roda make clean antes de
compilar seu kernel. Isto faz com que todos arquivos de objeto e
dependências sejam removidos.
-
--no-mrproper: Roda ou não roda make mrproper
antes de compilar seu kernel. Isto faz com que todos arquivos de objeto,
dependências e sua configuração sejam apagados.
-
--kerneldir=/caminho/para/fontes: Especifica um local
alternativo de fonte, ao invés do local padrão /usr/src/linux.
-
--kernel-config=/caminho/para/arquivo-de-config:
Especifica uma configuração alternativa de kernel que seria usada; ao invés
do não persistente /caminho/para/fontes/.config que é usado por
padrão.
-
--no-bootsplash: Adiciona ou não adiciona suporte a
bootsplash no initrd que o genkernel constrói. Nem todas arquiteturas
suportam bootsplash atualmente, e um kernel que suporte bootsplash também
é necessário.
-
--no-menuconfig: Roda ou não roda o configurador de
kernel baseado em menus antes de construir seu kernel, depois que make
oldconfig tenha rodado.
-
--no-initrdmodules: Não copia nenhum módulo para o initrd
que o genkernel cria.
-
--no-install: Instala ou não instala seu kernel,
módulos e initrd uma vez que a compilação tenha terminado.
Outras opções do genkernel
O genkernel também suporta algumas outras opções que não entram nas duas outras
categorias:
-
--arch-override=algumaArch: Esta opção pode ser usada para
sobre-carregar a arquitetura com que o genkernel pensa estar rodando, se o
mecanismo de auto-detecção falhar (por favor, relate um bug se falhar!) ou
se você deseja compilar um kernel para outra arquitetura.
-
--busybox-config=/caminho/para/config-de-busybox:
Sobre-carrega a configuração de busybox padrão com o arquivo especificado
-
--busybox-bin=/caminho/para/binário-de-busybox.tar.bz2:
Usar esta opção significa que um binário de busybox não será compilado, e a
tarball especificada será usada. Note que o busybox deve ser
compilado estaticamente!
-
--minkernpackage=/saida/de/seukernel.tar.bz2: Esta opção
tira como saída uma tarball do seu kernel, chamada kernel e uma
initrd chamada initrd para o arquivo especificado. Nenhuma
informação de caminhos ou módulos será incluída na tarball.
Rodando o genkernel
Tudo que é necessário para rodar o genkernel é o genkernel com as opções
necessárias como administrador (root). Por exemplo:
Listagem de código 2.1: Rodando o genkernel |
# genkernel --menuconfig --no-clean --no-install --bootsplash all
|
Se você quiser que o genkernel instale seu kernel também, você deve ter certeza
de que sua partição /boot está montada - genkernels recentes devem
tentar fazer isso automaticamente para você se MOUNTBOOT estiver como "yes" em
/etc/genkernel.conf.
Listagem de código 2.2: Montando seu /boot manualmente |
# mount /boot
# mount /dev/hda1 /boot
# mount /dev/sda1 /boot
|
Configurando o genkernel para funcionar com seu gerenciador de
inicialização
Para configurar o genkernel para trabalhar com seu gerenciador de inicialização,
três ou quatro mudanças são necessárias à sua configuração de gerenciador de
inicialização.
-
Adicione root=/dev/ram0 e init=/linuxrc aos
parâmetros de kernel passados à imagem de kernel.
-
Adicione real_root=/dev/hda3, por exemplo, aos parâmetros de kernel
passados à imagem de kernel, se /dev/hda3 contiver sua partição
raiz (root).
-
Se você estiver usando bootsplash, adicione uma linha de modos adequada como
vga=0x317 aos parâmetros passados ao kernel e também adicione
splash=verbose ou splash=silent dependendo da verbalidade que
você requer de seu bootsplash.
-
Adicione a initrd de acordo com as necessidades de seu gerenciador de
inicialização: veja o Manual do
Gentoo para detalhes de como construí-lo para seu gerenciador de
inicialização.
Arquivos de configuração do kernel
O genkernel irá salvar sua configuração de kernel em /etc/kernels e
usá-la quando quer que você rodar genkernel novamente. Se você quiser
começar de novo com os padrões, renomeie o arquivo em /etc/kernels.
O genkernel irá então usar o configuração de kernel localizada em
/usr/share/genkernel/<arch>.
3.
Portando o genkernel
Introdução
Desde que sua arquitetura tenha todas bibliotecas necessárias e utilitários
de que o genkernel precisa, que inclui, mas não limita-se a um kernel que
funcione para sua arquitetura, suíte de compiladores funcional, GNU make e uma
distribuição funcional de busybox, tudo está pronto!
Para cada arquitetura, o genkernel usa
/usr/share/genkernel/$archNome para os arquivos de configuração
da arquitetura.
Como o bootstrapping de sistema funciona
-
O gerenciador de configuração carrega a imagem do genkernel, construída de
acordo com as especificações dos arquivos de configuração nos diretórios do
genkernel, bem como o initrd que é preparado pelo genkernel.
-
O kernel inicia, aloca uma pequena quantia de RAM em que o busybox é
iniciado, que sonda o sistema com os módulos na lista modules_load para a
arquitetura.
-
Uma vez pronto, e vendo que o parâmetro real_root é o dispositivo de
root boot como o busybox enxerga as coisas, o sistema é carregado do
dispositivo.
Os arquivos de configuração
-
busy-config: Esta é a configuração que é usada para construir o
busybox para sua arquitetura.
-
config.sh: Este é um script de shell que configura várias
opções internas do genkernel. Veja um dos arquivos config.sh
para um exemplo.
-
modules_load: Este é um arquivo contendo uma lista delimitada
por espaços de módulos que são carregados para suporte de SCSI, FireWire,
ATARAID e PCMCIA. Se nenhum estiver disponível para sua plataforma, deixe os
campos em branco. Veja um dos arquivos modules_load para um
exemplo.
-
kernel-config: Uma configuração de kernel padrão usada para
qualquer versão de kernel.
-
kernel-config-2.4: Uma configuração de kernel padrão usada para
a série de kernéis 2.4.
-
kernel-config-2.6: Uma configuração de kernel padrão usada para
a série de kernéis 2.6.
O conteúdo deste documento está licenciado pela licença Creative Commons -
Attribution / Share Alike.
|