Como colocar na lista negra os módulos do kernel?

Respostas:

44

Nota: a lista negra não funcionará para os módulos que estão embutidos na imagem do kernel (ou seja, não são carregados através de um .koarquivo separado . A única maneira de desabilitar esses módulos é através de um parâmetro do kernel (se disponível) ou recompilando o kernel.

Basta abrir seu /etc/modprobe.d/blacklistarquivo e adicionar drivername usando a seguinte sintaxe:

blacklist driver-name

EDIT: Nas versões posteriores desde 12.10 (12.04?), O arquivo é /etc/modprobe.d/blacklist.conf

Reinicie sua caixa e use o comando lsmod para mostrar o status dos módulos no Kernel do Linux

Nota : aqui driver-nameestá o nome do seu driver de lista negra desejado. Por exemplo, se você deseja desabilitar o driver da placa NIC, pode encontrar o nome do driver do kernel da sua placa LAN usando o comando lspci -vcommand em um terminal.
Por exemplo, minha saída foi:

........
........ 
6: 00.0 Controlador Ethernet: Broadcom Corporation NetLink BCM5906M Fast Ethernet PCI Express (rev 02)
    Subsistema: Lenovo Device 3861
    Sinalizadores: mestre de barramento, devsel rápido, latência 0, IRQ 46
    Memória em b8000000 (64 bits, não pré-selecionável) [tamanho = 64K]
    ROM de expansão em [desativado]
    Recursos: 
    Driver de kernel em uso: tg3
    Módulos do kernel: tg3
........
........

Aqui, eu vejo o motorista é tg3. então você precisa escrever tg3(ou seu driver) no lugar de driver-name.

Muitas informações podem ser encontradas aqui .

LnxSlck
fonte
7
no meu caso ( Lubuntu 12.10), não há um /etc/modprobe.d/blacklistarquivo. Há um /etc/modprobe.d/blacklist.confarquivo
Abdull 29/03
1
É melhor manter os módulos na lista negra de um usuário em um arquivo separado, a fim de evitar conflitos durante a atualização (consulte este comentário em serverfault ).
Alexander Pozdneev
1
O blacklist.confarquivo não precisa existir. Você pode colocar um arquivo chamado my-mom-is-awesomelá e funcionaria. Crie o nome que quiser, se desejar criar um arquivo específico apenas para colocar uma coisa na lista negra, como blacklist-nouveauou o que for.
doug65536 9/09
@ doug65536 esta pergunta foi publicada há 7 anos, é claro que as coisas vão mudar. Basta criar uma nova pergunta com a versão do Ubuntu que você possui, para que as pessoas possam ajudá-lo
LnxSlck
@LnxSlck Eu estava abordando a confusão manifestada nos comentários anteriores. Eu não queria ajuda O que há com a obsessão de não postar em conteúdo antigo? Apenas deixe apodrecer? As pessoas ainda acham isso e outros terão as mesmas perguntas que eu respondi.
doug65536 03/10
28

Você também pode colocá-los na lista negra temporariamente na linha de comando do grub (linha linux) ao inicializar com a sintaxe

module_to_blacklist.blacklist=yes
Pantera
fonte
1
Quanto tempo isso é "temporário"? Até a próxima inicialização?
Seth
1
Seth, é temporário apenas para a inicialização única, se você editou durante a inicialização. Se você editar usando os scripts /etc/grub.d/ ou / etc / default / grub, será permanente.
Peter
1
Aparentemente, isso não funciona para i915: i915: unknown parameter 'blacklist' ignored.
Rafał Cieślak
5
Qual é a diferença entre this e modprobe.blacklist=module_to_blacklist?
Zaz
4
ou usar o parâmetro de kernel modprobe.blacklist=module_to_blacklist(veja man modprobepara mais detalhes)
Karl Richter
11

Outra maneira de colocar módulos na lista negra em pelo menos o Ubuntu 16.04 LTS é adicionando a seguinte linha à linha de comando do kernel:

modprobe.blacklist=MODULE_NAME

Usar o sistema / etc / modprobe é a melhor maneira, mas essa é uma alternativa que pode ser usada rapidamente editando sua linha de comando do GRUB na inicialização.

Isso também pode ser permanente, editando / etc / default / grub e adicionando à GRUB_CMDLINE_LINUX_DEFAULTvariável. Por exemplo, no meu / etc / default / grub, tenho:

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash modprobe.blacklist=nouveau"

Então eu corro update-grub2, então update-initramfs -u. Após uma reinicialização, você estará livre do módulo, desde que nada o carregue após a inicialização.

Este método também funciona nas variantes EL (RHEL, CentOS, SciLinux), mas você precisará usar os métodos dessa distro para atualizar o grub e o initrd.

(Observe para aqueles que tentam colocar na lista negra o nouveau: certifique-se de não carregar o X executando systemctl set-default multi-user.target, caso contrário, quando o X iniciar, ele carregará o nouveau novamente!)

Paulo
fonte
4

Nas versões mais recentes, você precisa usar a diretiva de instalação no seu arquivo de lista negra

install modulename /bin/false

Substitua "nome do módulo" acima pelo nome do módulo. Isso impedirá forçosamente seu carregamento.

Você pode encontrar mais informações sobre a diretiva de instalação no manual do modprobe.conf

man modprobe.conf
Speeddymon
fonte
2
Isso é muito útil. Acontece que mesmo com uma entrada na lista negra /etc/modprobe/blacklist.conf, o módulo ainda pode ser carregado manualmente modprobe <module_name>. O uso do install <module_name> /bin/falsemétodo faz com que isso falhe conforme desejado.
RawwrBag 27/09
3

Nenhuma dessas soluções funcionou no 16.04 LTS para i915.ko.

A solução (suja) que encontrei foi renomear

/lib/modules/4.4.0-22-generic/kernel/drivers/gpu/drm/i915/i915.ko
/usr/lib/xorg/modules/drivers/modesetting_drv.so
/usr/lib/xorg/modules/drivers/intel_drv.so

Infelizmente, a tela VGA externa não é mais reconhecida: {

plop
fonte
6
Tudo o que você precisa é sudo update-initramfs -udepois de modificar os arquivos /etc/modeprobe.d/ #
Ivan Black