Capítulo 7. Configuração do Kernel

7.1. Eu gostaria de customizar meu kernel. É difícil?
7.2. Por que meu kernel é tão grande?
7.3. Por que todo kernel que eu tento construir falha ao compilar, até mesmo o GENERIC?
7.4. Qual agendador está em uso em um sistema em execução?
7.5. O que é o kern.sched.quantum?

7.1.

Eu gostaria de customizar meu kernel. É difícil?

De modo nenhum! Confira a seção configuração do kernel do Handbook.

Nota:

O novo kernel será instalado no diretório /boot/kernel junto com os seus módulos, enquanto o kernel antigo e seus módulos serão movidos para o diretório /boot/kernel.old. Se um erro for cometido na configuração, basta inicializar utilizando a versão anterior do kernel.

7.2.

Por que meu kernel é tão grande?

Os kernels GENERIC enviados com o FreeBSD são compilados com o modo de depuração habilitado. Kernels compilados no modo de depuração contêm dados de depuração em arquivos separados que são usados ​​para depuração. Versões do FreeBSD anteriores a 11.0 armazenam esses arquivos de depuração no mesmo diretório que o próprio kernel, /boot/kernel/. No FreeBSD 11.0 e posterior, os arquivos de depuração são armazenados em /usr/lib/debug/boot/kernel/. Observe que haverá pouca ou nenhuma perda de desempenho ao executar um kernel com o modo de depuração habilitado, e é útil manter um por perto em caso de panic no sistema.

Quando estiver com pouco espaço em disco, existem diferentes opções para reduzir o tamanho de /boot/kernel/ e /usr/lib/debug/.

Para não instalar os arquivos de símbolos, certifique-se que a seguinte linha existe em /etc/src.conf:

WITHOUT_KERNEL_SYMBOLS=yes

Para mais informações veja src.conf(5).

Se você quiser evitar completamente a criação de arquivos de depuração, certifique-se de que ambos os itens a seguir sejam verdadeiros:

  • Esta linha não existe no arquivo de configuração do kernel:

    makeoptions DEBUG=-g
  • Não execute o comando config(8) com a opção -g.

Qualquer uma das configurações acima fará com que o kernel seja construído com suporte ao modo de depuração.

Para construir e instalar somente os módulos desejados, liste-os em /etc/make.conf:

MODULES_OVERRIDE= accf_http ipfw

Substitua accf_httpd ipfw com a lista dos módulos que precisa. Apenas os módulos listados serão compilados. Isso reduz o tamanho do diretório do kernel e diminui o tempo necessário para compilar o kernel. Para mais informações, leia /usr/share/examples/etc/make.conf.

Dispositivos desnecessários podem ser removidos do kernel para reduzir ainda mais o tamanho. Veja P: 7.1 para mais informações.

Para colocar qualquer uma dessas opções em vigor, siga as instruções para compilar e instalar um novo kernel.

Para referência, o kernel amd64 do FreeBSD 11 (/boot/kernel/kernel) é de aproximadamente 25 MB.

7.3.

Por que todo kernel que eu tento construir falha ao compilar, até mesmo o GENERIC?

Há várias causas possíveis para esse problema:

  • A o código fonte de origem é diferente do usado para construir o sistema atualmente em execução. Ao tentar uma atualização, leia o arquivo /usr/src/UPDATING, prestando atenção especial à seção ITENS COMUNS no final.

  • O comando make buildkernel não foi concluído com sucesso. O comando make buildkernel depende dos arquivos gerados pelo comando make buildworld para concluir seu trabalho corretamente.

  • Mesmo quando estiver compilando o FreeBSD-STABLE, é possível que o código fonte tenha sido obtido em um momento em que estava sendo modificado ou em que estava quebrado. Somente os releases possuem a garantia de que podem ser compilados, apesar do FreeBSD-STABLE compilar corretamente na maioria das vezes. Tente atualizar novamente o código fonte e veja se o problema desaparece. Tente usar um servidor de distribuição diferente, caso o anterior esteja com problemas.

7.4.

Qual agendador está em uso em um sistema em execução?

O nome do agendador que atualmente sendo usado está diretamente disponível como o valor da variavel kern.sched.name do sysctl:

% sysctl kern.sched.name
kern.sched.name: ULE

7.5.

O que é o kern.sched.quantum?

A variável kern.sched.quantum define o número máximo de pulsos que um processo pode executar sem ser "preempted" no scheduler 4BSD.

All FreeBSD documents are available for download at https://download.freebsd.org/ftp/doc/

Questions that are not answered by the documentation may be sent to <freebsd-questions@FreeBSD.org>.
Send questions about this document to <freebsd-doc@FreeBSD.org>.