Diferença entre rc.conf, loader.conf e link de kernel estático no FreeBSD

3

Estou curioso:

Quais são os benefícios de vincular estaticamente módulos ao kernel, em vez de carregar através do rc.conf, etc?

Por exemplo:

Para adicionar a emulação do Linux, eu poderia adicionar linux_enable="YES" a /etc/rc.conf , ou eu poderia vinculá-lo ao kernel adicionando options COMPAT_LINUX à minha configuração de kernel.

Existe realmente uma vantagem nisso? Se sim, o que?

    
por Demian Brecht 20.04.2011 / 20:53

2 respostas

4

A vinculação estática costumava ser a única maneira de carregar um módulo, que é o motivo principal para ter opções como COMPAT_LINUX. Além disso, antes de loader , costumava ser a única maneira de carregar os módulos necessários para obter o FreeBSD para obter os drivers necessários para montar o sistema de arquivos raiz e inicializar o FreeBSD. Hoje em dia, eu não acho que haja algum benefício significativo em vincular estaticamente em um módulo, se ele puder ser facilmente carregado em tempo de execução. Eu não acho que você verá qualquer benefício no desempenho, ligando estaticamente o suporte de compatibilidade Linux, mas alguns usuários ainda juram por ele. Eu o evitaria apenas por causa da inconveniência de recompilar um Kernel por pouco ou nenhum ganho de desempenho percebido.

    
por 20.04.2011 / 21:33
2
  1. Se você vincular estaticamente tudo o que precisa, basta usar makeoptions NO_MODULES=yes para não criar módulos desnecessários.

    Isso também pode ser feito com MODULES_OVERRIDE e / ou WITHOUT_MODULES .

  2. A capacidade de carregar módulos em tempo de execução nem sempre é uma coisa boa. O módulo pode ser um rootkit, por exemplo.

    O SECURELEVEL também atenua isso.

Assim como esses dois, provavelmente qualquer benefício também pode (e alguns argumentariam, deve) ser realizado de outra maneira.

Pessoalmente, eu gosto que meu kernel seja como um conjunto de regras de firewall: eu começo excluindo tudo, depois adiciono o que preciso e evito adições em tempo de execução.

A menos que o kernel seja recompilado, eu sei exatamente o que é suportado. Portanto, se eu não tiver compilado algumas funcionalidades, como SCTP ou NFS, posso ignorar os avisos que afetam apenas essas partes. Adicionar funcionalidade requer que eu adicione manualmente.

Com os módulos, existem inúmeras maneiras de como um módulo pode ser carregado automaticamente: usando uma funcionalidade apenas uma vez, instalando uma porta, atualizando (padrão alterado, nova funcionalidade adicionada), etc.

Em todos esses casos, acho que é um benefício ser forçado a adicionar manualmente a funcionalidade se, e somente se, for realmente necessário.

    
por 21.01.2016 / 23:48