KERNEL 7

🛠️ Guia Avançado: NVIDIA 390.157 + Bumblebee no Kernel 7.0+

Tutorial 3.0 Fábio Dutra

Tutorial completo para compilar o driver NVIDIA Legacy 390.157 no Kernel 7.0+ aplicando patches na API, e configurar o Bumblebee (Optimus) sem a dependência do obsoleto bbswitch.

Passo 1: O Patch Definitivo (Integração DKMS)

Para garantir que o driver sobreviva a atualizações, criaremos um script de correção (hook) que o DKMS executará antes do processo de build.

1. Crie o script de correção (fix-kernel7.sh):

sudo tee /usr/src/nvidia-legacy-390xx-390.157/fix-kernel7.sh << 'EOF'
#!/bin/bash
dir=$1
cd "$dir"
# Correção VMA
sed -i 's/__is_vma_write_locked(vma, &mm_lock_seq)/__is_vma_write_locked(vma)/g' nvidia/nv-mmap.c
sed -i 's/VMA_LOCK_OFFSET/0/g' nvidia/nv-mmap.c
# Correção Screen Info (Injeção forçada no topo)
sed -i '1i #include <linux/screen_info.h>\nstatic struct screen_info screen_info = {0};' nvidia/os-interface.c
# Correção DMA Fence
sed -i 's/return dma_fence_signal(fence);/dma_fence_signal(fence); return 0;/g' nvidia-drm/nvidia-dma-fence-helper.h
EOF

sudo chmod +x /usr/src/nvidia-legacy-390xx-390.157/fix-kernel7.sh

2. Configure o DKMS para executar o script:

Edite o arquivo /usr/src/nvidia-legacy-390xx-390.157/dkms.conf e altere a diretiva PRE_BUILD:

PRE_BUILD="fix-kernel7.sh $dkms_tree/$module/$module_version/build"

3. Reconstrua o módulo via DKMS:

sudo dkms remove -m nvidia-legacy-390xx -v 390.157 --all
sudo rm -rf /var/lib/dkms/nvidia-legacy-390xx/390.157/
sudo dkms add -m nvidia-legacy-390xx -v 390.157
sudo dkms build -m nvidia-legacy-390xx -v 390.157 -k $(uname -r)
sudo dkms install -m nvidia-legacy-390xx -v 390.157 -k $(uname -r)

Passo 2: Compilação Manual e Initramfs (Alternativa)

Se preferir compilar manualmente (via make) em vez de usar o DKMS, aplique os mesmos patches no código-fonte e siga os passos abaixo para compilar e instalar os módulos no Kernel 7.

cd /var/lib/dkms/nvidia-legacy-390xx/390.157/build

# Compilar via make com os headers do kernel atual
sudo make SYSSRC=/usr/src/linux-headers-$(uname -r) -j$(nproc)

# Criar pasta e copiar os módulos
sudo mkdir -p /lib/modules/$(uname -r)/updates/dkms
sudo cp nvidia.ko nvidia-modeset.ko nvidia-drm.ko nvidia-uvm.ko /lib/modules/$(uname -r)/updates/dkms/

# Gerar o novo mapa de módulos e atualizar a imagem de boot
sudo depmod -a $(uname -r)
sudo update-initramfs -u -k $(uname -r)

Passo 3: Domando o Bumblebee no Kernel 7

O Kernel 7 alterou o gerenciamento de energia, tornando o módulo bbswitch obsoleto. Precisamos configurar o Bumblebee para usar o método none (placa sempre ligada) e ajustar as rotas.

1. Exemplo final recomendado para o /etc/bumblebee/bumblebee.conf:

[bumblebeed]
VirtualDisplay=:8
KeepUnusedXServer=false
ServerGroup=bumblebee
TurnCardOffAtExit=false
NoEcoModeOverride=false
Driver=nvidia
XorgConfDir=/etc/bumblebee/xorg.conf.d
XorgBinary=/usr/lib/xorg/Xorg

[optirun]
Bridge=auto
VGLTransport=proxy
PrimusLibraryPath=/usr/lib/x86_64-linux-gnu/primus:/usr/lib/i386-linux-gnu/primus
AllowFallbackToIGC=false

[driver-nvidia]
KernelDriver=nvidia
PMMethod=none
LibraryPath=/usr/lib/x86_64-linux-gnu/nvidia/legacy-390xx:/usr/lib/i386-linux-gnu/nvidia/legacy-390xx
XorgModulePath=/usr/lib/nvidia/legacy-390xx,/usr/lib/xorg/modules
XorgConfFile=/etc/bumblebee/xorg.conf.nvidia
XorgArgs=-config /etc/bumblebee/xorg.conf.nvidia -sharevts -nolisten tcp -noreset -verbose 3 +iglx

[driver-nouveau]
KernelDriver=nouveau
PMMethod=bbswitch
XorgConfFile=/etc/bumblebee/xorg.conf.nouveau

2. Liberação do Modprobe e Permissões:

sudo sed -i 's/alias nvidia off/# alias nvidia off/g' /etc/modprobe.d/bumblebee.conf
sudo sed -i 's/alias nouveau off/# alias nouveau off/g' /etc/modprobe.d/bumblebee.conf

sudo usermod -aG bumblebee $USER
sudo systemctl restart bumblebeed

Passo 4: Validação e Testes

Para verificar se a GPU está sendo acionada corretamente, utilize o optirun. Lembre-se: O Bumblebee e o VirtualGL exigem o protocolo X11. Certifique-se de selecionar Orion OS on Xorg na tela de login.

optirun glxinfo | grep "OpenGL renderer"
# Resultado esperado: OpenGL renderer string: GeForce GT 520M...
Kernel 7 NVIDIA DKMS
Compartilhar:

Comentários