Gentoo Logo

Aviso : Este documento não é válido e não é mais mantido.


O guia de genkernel do Gentoo Linux

Conteúdo:

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
(Produziria um kernel, perguntando como configurá-lo de
acordo com suas preferências, deixando sós quaisquer objetos compilados, ativando
suporte a bootsplash, mas sem instalar nada.)

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

(Se /boot for uma entrada válida no /etc/fstab:)
# mount /boot
(... caso contrário para discos IDE:)
# mount /dev/hda1 /boot
(... e para discos SCSI:)
# 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.

  1. Adicione root=/dev/ram0 e init=/linuxrc aos parâmetros de kernel passados à imagem de kernel.
  2. 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).
  3. 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.
  4. 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

  1. 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.
  2. 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.
  3. 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.


Imprimir

Atualizado 26 de junho de 2005

A versão original desta tradução não é mais mantida

Resumo: Este guia tem a intenção de servir como referência para todas as funções oferecidas pelo genkernel.

Tim Yamin
Autor

Marcelo Góes
Tradutor

Donate to support our development efforts.

Copyright 2001-2014 Gentoo Foundation, Inc. Questions, Comments? Contact us.