Como construir corretamente um kernel mínimo do FreeBSD?

2

Existe alguma maneira correta de construir um kernel mínimo para o FreeBSD? O Manual do FreeBSD tem a falta de informações sobre isso. Por padrão, o diretório /boot/kernel tem o tamanho muito grande - cerca de 450MB. Eu quero minimizar a impressão digital do kernel e remover todos os módulos e opções desnecessários do kernel. Devo usar a opção "NO_MODULES" em /etc/make.conf ? Ou use sinalizadores de compilação C?

    
por powerthrash 28.12.2014 / 09:44

2 respostas

3

Existem várias coisas que você pode fazer para reduzir o tamanho e o número de arquivos em /boot/kernel .

Possivelmente, a melhor economia de espaço é obtida configurando WITHOUT_KERNEL_SYMBOLS em /etc/src.conf (se esse arquivo ainda não existir, basta criá-lo) e na próxima vez que você installkernel , os arquivos de símbolo de depuração vencidos pode ser instalado. É seguro deletá-los agora, se você precisar do espaço imediatamente ( rm /boot/kernel/*.symbols )

Existem algumas configurações de make.conf que controlam quais módulos são criados:

  • NO_MODULES - desabilita a construção de módulos completamente
  • MODULES_OVERRIDE - especifica os módulos que você deseja construir
  • WITHOUT_MODULES - lista de módulos que não devem ser construídos

A opção NO_MODULES é provavelmente um pouco pesada demais, então uma combinação judiciosa das outras duas é uma escolha melhor. Se você sabe exatamente quais módulos deseja, basta defini-los em MODULES_OVERRIDE . Observe que WITHOUT_MODULES é avaliado após MODULES_OVERRIDE , portanto, qualquer módulo nomeado em ambas as listas não será criado.

Se você realmente quer suprimir a construção de todos os módulos, você pode usar NO_MODULES e garantir que todos os drivers e módulos necessários sejam estaticamente compilados no kernel. Cada manpage do driver mostra as linhas apropriadas para adicionar ao seu arquivo de configuração do kernel, então você deve ser capaz de descobrir o que você precisa.

Se você ainda achar que o espaço é um problema, ou se você quer apenas desmontar o kernel o máximo possível, você pode editar sua configuração do kernel para remover quaisquer dispositivos e subsistemas que sua máquina não suporta, ou que você Tem certeza que você não vai querer usar. O sistema de compilação é bastante sensato, e se você inadvertidamente remover um módulo requerido por um ainda ativo na configuração, você receberá uma falha na construção e uma mensagem de erro explicando o que deu errado.

Embora possa ser extremamente entediante, a melhor abordagem é dar pequenos passos, removendo uma ou duas coisas por vez e garantindo que a configuração resultante seja compilada e inicializada corretamente. Seja o que for que você faça, eu recomendo que você faça uma cópia de /usr/src/sys/<arch>/config/GENERIC e edite a cópia. Se você alguma vez ficar tão confuso que o único recurso é começar a partir da configuração padrão, você ficará contente por ainda ter o arquivo GENERIC em seu sistema!

Para construir seu kernel personalizado, você pode passar o nome da configuração na linha de comando como make KERNCONF=MYKERNCONF buildkernel ou pode definir KERNCONF em /etc/make.conf . Certifique-se de colocar o arquivo de configuração personalizado em /usr/src/sys/<arch>/config e o sistema de compilação poderá encontrá-lo.

    
por 31.12.2014 / 18:37
1

O kernel "apropriado" é uma noção relativa e depende das suas necessidades. As pessoas que precisam perguntar sobre a construção do kernel não têm como construir um. A propósito, como você criou o tamanho de 450 MB do kernel do FreeBSD

root@neill-backup:~ # uname -a
FreeBSD neill-backup.int.autonlab.org 10.1-RELEASE FreeBSD 10.1-RELEASE #0 r274401: Tue Nov 11 21:02:49 UTC 2014     [email protected]:/usr/obj/usr/src/sys/GENERIC  amd64

aqui

root@neill-backup:~ # du -h /boot/kernel/kernel
 20M    /boot/kernel/kernel
    
por 29.12.2014 / 05:02