Mateus Müller - 4Fasters

Mateus é o idealizador do projeto 4Fasters.

13 Nov 2019

BLACKLIST MODPROBE: Drivers no Linux

Esse assunto causa uma certa confusão entre os usuários Linux, principalmente para quem tenta entender um pouco mais afundo sobre gerenciamento de módulos (drivers) no sistema. Já falei algumas vezes aqui no blog e também em um vídeo no YouTube sobre a instalação do driver da NVIDIA no Linux, e ele usa o conceito de blacklist para resolver alguns problemas, e hoje vamos entender um pouco mais afundo de como isso funciona.

Requisitos

Para entender essa parte, eu sugiro que você dê uma olhada nesses conteúdos:

O que é o modprobe?

O modprobe é um utilitário, assim como seus auxiliares insmod e rmmod, usado para gerenciar os módulos que o Kernel está utilizando no momento.

Um módulo é um driver, basicamente um código escrito para controlar o hardware que estamos utilizando.

Para obter o máximo desempenho de GPU no nosso Linux, precisamos do módulo da NVIDIA.

Para que serve a blacklist?

O modprobe possui um recurso chamado de blacklist, que é uma lista de módulos que *não* devem ser usados pelo Kernel.

Isso é bastante útil quando um módulo específico causa um problema. Imagina que após instalar o driver da NVIDIA sua tela começa a piscar descontroladamente. É uma boa opção colocar esse módulo na blacklist.

Como criar uma blacklist?

A blacklist é gerada nos arquivos “.conf” dentro do diretório /etc/modprobe.d.

Isto é, posso ter diversas blacklists organizadas dentro desse diretório.

Vamos usar a NVIDIA como exemplo. Após instalar o driver, geralmente a configuração e criação da blacklist é feita de forma automática, mas caso não seja, isso pode acarretar em sérios problemas. Por que?

Por padrão, o Linux utiliza o driver chamado “nouveau” para placas da NVIDIA, que é mantido pela comunidade. Quando você instala o driver, ele geralmente chama um módulo chamado “nvidia”. Agora, e se o Kernel chama os dois módulos, já que ambos estão “aptos”? Problemas, sérios problemas…

Vamos criar uma blacklist então. Primeiro, veja que meu computador está usando o módulo “nouveau”:

BLACKLIST MODPROBE: Drivers no Linux

O que precisamos fazer então é bloquear esse módulo na blacklist.

No meu caso, usando um Debian Buster, faço a criação de um link simbólico para a pasta /etc/alternatives que já tem os arquivos .conf prontos. Veja:

BLACKLIST MODPROBE: Drivers no Linux

No seu caso, basta criar manualmente.

Veja a configuração dos três arquivos. Atente ao “nvidia_modprobe.conf”. Ele possui a linha “blacklist nouveau” que diz o seguinte… “Nouveau, no próximo boot você fica quietinho aí, quem vai trabalhar é o nvidia”!

BLACKLIST MODPROBE: Drivers no Linux

Mas, só fazendo isso ainda não resolve o nosso problema. Se você assistiu meu vídeo sobre o processo de boot do Linux, provavelmente viu a parte onde falo do Initramfs, um arquivo temporário que contém vários drivers do sistema. Pois é, o nouveau ainda está lá. Precisamos atualizar esse arquivo.

Quando atualizamos o arquivo Initramfs, ele lê os diretórios /etc/modprobe.d e usa todos os arquivos .conf para saber qual módulo ele não deve incluir.

Vamos atualizar então!

$ update-initramfs -u

Após reiniciar o equipamento, veja o resultado final:

BLACKLIST MODPROBE: Drivers no Linux

Não estamos mais usando o nouveau, viva!

Caso dê qualquer problema e você não consiga mais iniciar o sistema, sugiro fazer o procedimento deste vídeo que explico em 1:20min.

Conclusão

Gerenciar módulos no Linux não é uma tarefa muito mais fácil, mas tudo começa a fazer sentido quando começa a usar com mais regularidade. Espero que o post te ajude de alguma forma!

Me siga no Instagram onde eu faço conteúdos da minha rotina diária.

Participe dos nossos grupos no Telegram e Facebook! 🙂

Se tiver alguma dúvida ou sugestão de conteúdo, por favor, comente!
comments powered by Disqus