Os módulos do kernel ainda carregados após o travamento não podem descarregá-los

3

Eu encontrei um comportamento engraçado no kernel do Linux (versão 3.19.0). Estávamos testando um driver de rede e o sistema estava completamente desligado, nem respondia aos comandos do SysRq. Após a reinicialização, o driver que estávamos testando ainda aparecia como carregado, mesmo quando não está configurado para carregar na inicialização. O pior é que não pode ser removido nem com modprobe -r nem rmmod -f . O log do kernel não mostrou nada de útil.

Nós tentamos reinicializar de novo e de novo, mesmo colocando o módulo na lista negra, mas ele sempre aparecia como um módulo carregado. A única solução que encontramos foi reinstalar o kernel ( apt-get remove/install linux-image-$(uname-r) ). Então desapareceu e tudo começou a funcionar perfeitamente novamente.

Alguém sabe o que poderia estar acontecendo aqui e por que o kernel carregou o módulo mesmo quando explicitamente disse para não fazê-lo?

Edit: a reconfiguração não resolveu, tive que reinstalar o pacote do kernel.

    
por gjulianm 05.10.2015 / 12:54

1 resposta

3

Pode ser que seu módulo tenha sido carregado durante o estágio initrd. Neste estágio, o booloader carrega um arquivo especial e o passa para o kernel, o qual, por sua vez, o monta como sistema de arquivos e carrega vários módulos de lá. O propósito original disso era carregar os drivers necessários para ler o sistema de arquivos raiz sem compilar todos os drivers possíveis no kernel. O arquivo initrd é regenerado de diferentes maneiras por diferentes distribuições, geralmente regeneradas na atualização do kernel. Como você parece usar a distribuição baseada no Debian, tente isto para ajuda: link .

    
por 05.10.2015 / 13:48