Ignorar o módulo do kernel na inicialização

Respostas:

1

A lista negra do módulo, conforme mencionado na resposta anterior, é a melhor maneira de evitar completamente um módulo do kernel. Além da lista negra, não há maneira genérica de desativar um módulo.

Algumas distribuições Linux fornecem parâmetros de inicialização do kernel para fazer coisas como esta.

  • No Arch Linux , load_modules=offforça o udev a ignorar o carregamento automático. Isso permitiria que você inicialize sem carregar módulos, coloque na lista negra um módulo que está causando problemas e reinicie normalmente sem o carregamento problemático do módulo.
  • O Knoppix possui uma longa lista de parâmetros extras de inicialização (também conhecidos como "cheatcodes") ; estes são uma mistura de parâmetros normais de inicialização do kernel e extras específicos do Knoppix.

Para mais informações, consulte a documentação de Parâmetros do Kernel . Existem parâmetros para desativar subsistemas específicos. Por exemplo:

  • nousb desativa o suporte USB do kernel
  • cgroup_disable=[name]desativa um determinado controlador; no entanto, "memória" é o único exemplo especificamente suportado
  • libata.noacpidesativa o uso de ACPI em libata (controladores SATA); este é um exemplo de passagem de um parâmetro de módulo através do kernel
charlatão quixote
fonte
7

A desativação de módulos específicos é possível no carregador de inicialização, mas parece realmente dependente de distribuição.

Por um lado, as documentações dos Kernel Parameters do Linux afirmam, em agosto de 2016:

module_blacklist= [KNL] Não carregue uma lista de módulos separados por vírgula. Útil para depurar módulos problemáticos.

Por outro lado, a opção que funcionou para mim com o openSUSE 42.1 (Linux 4.1.31) está descrita no  wiki dos módulos do Arch Kernel :

Você também pode colocar os módulos na lista negra do gerenciador de inicialização. Basta adicionar

modprobe.blacklist=modname1,modname2,modname3

à linha do kernel do seu carregador de inicialização, conforme descrito em Parâmetros do kernel. Quando você estiver na lista negra de mais de um módulo, observe que eles são separados apenas por vírgulas. Espaços ou qualquer outra coisa presumivelmente pode quebrar a sintaxe.

(Obrigado a @gertvdijk no  unix.SE por apontar isso.)

Também vale a pena mencionar o seguinte método :

Para impedir que determinados módulos sejam carregados pelo kernel usando a linha de comando grub, você precisa passá-los como um parâmetro para a linha do kernel usando a sintaxe abaixo.

$module_name.blacklist=yes

Eu não tenho idéia de onde eles tiraram isso, mas definitivamente não fará mal tentar outro método, se tudo mais falhar.

Anton Samsonov
fonte
Eu tenho a mesma pergunta sobre por que "$ module_name.blacklist = yes" funciona e acho que está relacionado a essa parte do código do kernel: git.kernel.org/pub/scm/linux/kernel/git/stable/linux- stable.git /…
Johnlcf 30/11
1

Você deve poder adicioná-lo ao /etc/modprobe.d/blacklist ou à lista negra 'modulename'


fonte
isso funcionará, mas requer a inicialização em outro kernel (se disponível) ou em um sistema LiveCD.
quack quixote