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

31

Como desativo o carregamento de módulos do kernel desnecessários? Kernel 3.2.4

    
por Ringtail 06.03.2012 / 00:23

5 respostas

33
  

Nota: blacklisting não funcionará para módulos que são construídos na imagem do kernel (ou seja, não carregados através de um arquivo .ko separado. A única maneira de desabilitar tais módulos é através de um parâmetro do kernel (se disponível) ou recompilando o kernel.

Basta abrir o arquivo /etc/modprobe.d/blacklist e adicionar o nome de usuário usando a seguinte sintaxe:

blacklist driver-name

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

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

Nota : aqui driver-name é o nome do seu controlador de lista negra desejado. Por exemplo, se você quiser desabilitar o driver da placa NIC, você pode encontrar o nome do driver do kernel para sua placa LAN usando o comando lspci -v em um terminal.
Por exemplo, minha saída foi:

........
........ 
6:00.0 Ethernet controller: Broadcom Corporation NetLink BCM5906M Fast Ethernet PCI Express (rev 02)
    Subsystem: Lenovo Device 3861
    Flags: bus master, fast devsel, latency 0, IRQ 46
    Memory at b8000000 (64-bit, non-prefetchable) [size=64K]
    Expansion ROM at  [disabled]
    Capabilities: 
    Kernel driver in use: tg3
    Kernel modules: tg3
........
........

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

Muitas informações podem ser encontradas aqui .

    
por LnxSlck 06.03.2012 / 00:27
24

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

module_to_blacklist.blacklist=yes
    
por Panther 06.03.2012 / 00:44
3

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

install modulename /bin/false

Substitua "modulename" acima pelo nome do módulo. Isto impedirá forçadamente o seu carregamento.

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

man modprobe.conf
    
por Speeddymon 26.11.2016 / 17:48
3

Nenhuma destas soluções funcionou em 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: {

    
por plop 07.06.2016 / 13:39
3

Outra maneira de colocar os módulos da 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 esta é uma alternativa que pode ser usada em um piscar de olhos editando a linha de comando do GRUB na inicialização.

Isso também pode se tornar permanente editando / etc / default / grub e adicionando a variável GRUB_CMDLINE_LINUX_DEFAULT . Por exemplo, no meu / etc / default / grub eu tenho:

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash modprobe.blacklist=nouveau"

Em seguida, corro update-grub2 e, em seguida, update-initramfs -u . Após a reinicialização, você estará livre do módulo, desde que nada seja carregado após a inicialização.

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

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

    
por Paul 29.09.2016 / 19:51

Tags