Capítulo 8 Configuraçãao do Kernel

8.1. Eu gostaria de configurar meu kernel. É difícil?
8.2. A compilação do meu kernel falha porque está faltando o _hw_float. Como eu resolvo o problema?
8.3. Por que meu kernel é tão grande (cerca de 10MB)?
8.4. Porque estão ocorrendo conflitos de interrupção com portas multi-seriais?
8.5. Porque todo kernel que eu tento construir falha na compilação, mesmo o GENERIC?

8.1. Eu gostaria de configurar meu kernel. É difícil?

De modo algum! Veja a seção "kernel config" do Manual do FreeBSD.

Nota: Recomenda-se que você faça uma cópia datada do seu kernel na forma /kernel.AAMMDD e o diretório /modules para /modules.AAMMDD depois que estiver tudo funcionando. Desta forma se você fizer alguma bobagem quando mexer com a sua configuração, pode-se iniciar aquele kernel ao invés de ter que desfazer tudo novamente no kernel.GENERIC. Isso é particularmente importante se você estiver dando boot em um equipamento não suportado pelo kernel genérico (GENERIC).

8.2. A compilação do meu kernel falha porque está faltando o _hw_float. Como eu resolvo o problema?

Deixa eu adivinhar. Você removeu o npx0 (veja npx(4)) do arquivo de configuração do kernel porque você não possui um co-processador aritmético, certo? Errado! :-) O npx0 é OBRIGATÓRIO. Mesmo que você não tenha um co-processador aritmético, o dispositivo npx0 deve ser incluido.

8.3. Por que meu kernel é tão grande (cerca de 10MB)?

Provavelmente, seu kernel foi compilado em modo de depuração (debug). Um kernel construído em modo de depuração (debug) contêm muitos símbolos usados para depuração que aumentam muito o seu tamanho. Note que se você está executando um FreeBSD 3.0 ou superior, terá pouca, ou nenhuma, perda de performance por usar um kernel em modo de depuração (debug), sendo útil ter um para o caso de pane no sistema.

Entretanto, se você possui pouco espaço em disco, ou simplesmente não quer executar um kernel para depuração, certifique-se que os dois itens abaixo sejam verdadeiros:

  • Não existe a seguinte linha no arquivo de configuração do kernel

    makeoptions DEBUG=-g
    
  • Você não está executando config(8) com a opção -g.

Ambas as situações acima fazem com que o kernel seja compilado no modo de depuração (debug). Tão logo você tenha certeza que não se enquadra naqueles itens, o kernel poderá ser compilado normalmente e notadamente diminuirá o tamanho; a maioria dos kernels tendem a ficar em torno de 1.5MB a 2MB.

8.4. Porque estão ocorrendo conflitos de interrupção com portas multi-seriais?

Quando se compila um kernel com suporte a porta multi-serial, ele avisa que somente a primeira porta é testada e as demais são ignoradas devido a conflitos de interrupção. Como eu conserto isto?

O problema, neste caso, é que o FreeBSD possui código para evitar que o kernel fique com lixo (trashed kernel) por causa de conflitos de hardware ou software. A maneira de corrigir isto é excluindo as definiçõs de IRQ em todas as portas exceto uma. Veja o exemplo:

#
# Multiport high-speed serial line - 16550 UARTS
#
device sio2 at isa? port 0x2a0 tty irq 5 flags 0x501 vector siointr
device sio3 at isa? port 0x2a8 tty flags 0x501 vector siointr
device sio4 at isa? port 0x2b0 tty flags 0x501 vector siointr
device sio5 at isa? port 0x2b8 tty flags 0x501 vector siointr

8.5. Porque todo kernel que eu tento construir falha na compilação, mesmo o GENERIC?

Existem várias causas possíveis para esse problema. Elas são, sem uma ordem particular:

  • Você não está usando os comandos make buildkernel e make installkernel, e seus fontes estão estruturados de forma diferente daqueles usados para construir o sistema atual (por exemplo, está sendo um 4.3-RELEASE em um sistema 4.0-RELEASE). Se estiver sendo feita uma atualização, leia o arquivo /usr/src/UPDATING, prestando atenção ao final da seção “COMMON ITEMS”.

  • Você está usando os comandos make buildkernel e make installkernel, mas não garantiu a correta finalização do comando make buildworld. O make buildkernel depende de arquivos gerados pelo make buildworld para fazer seu trabalho corretamente.

  • Mesmo que você esteja tentando construir um FreeBSD-STABLE, é possível que os fontes tenham sido pegos quando estavam sendo modificados, ou inconsistentes por alguma outra razão; somente os releases são absolutamente garantidos de serem compilados, embora o FreeBSD-STABLE possa ser compilado com sucesso na grande maioria das vezes. Caso já não tenha conseguido, tente buscar os fontes novamente e veja se o problema já não foi resolvido. Tente um servidor diferente, para o caso daquele que está sendo usado estar com problemas.

Este, e outros documentos, podem ser obtidos em ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

Para perguntas sobre FreeBSD, leia a documentação antes de contatar <questions@FreeBSD.org>.
Para perguntas sobre esta documentação, envie e-mail para <doc@FreeBSD.org>.