Gentoo Logo

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 deste documento foi atualizada em 20 de junho de 2007

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.

Support OSL

Support OSL

Gentoo Centric Hosting: vr.org

VR Hosted

Tek Alchemy

Tek Alchemy

SevenL.net

SevenL.net

Global Netoptex Inc.

Global Netoptex Inc.

Linux World Expo

Linux World Expo

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