Como fazer com que o Debian Jessie use o driver proprietário da nvidia?

4

Eu segui as instruções em o wiki do Debian para instalar o driver gráfico proprietário da nvidia no Debian Jessie via backports. Infelizmente, apesar dos meus melhores esforços, o servidor X não utilizará o novo driver.

O módulo do kernel foi construído e instalado corretamente:

$ sudo lsmod | grep nvidia
nvidia               8487526  0 
drm                   249955  5 i915,drm_kms_helper,nvidia
i2c_core               46012  12 drm,i915,i2c_i801,snd_soc_rt5640,i2c_hid,i2c_designware_platform,regmap_i2c,drm_kms_helper,i2c_algo_bit,nvidia,v4l2_common,videodev

Sem o arquivo xorg.conf, o X funciona bem, mas não usa o driver nvidia; nvidia-settings informa que "parece que não estou usando o driver NVIDIA X".

Xorg.log.0: link (este é o jeito certo de colocar isso? Eu espero que sim)

Com o seguinte xorg.conf:

# nvidia-xconfig: X configuration file generated by nvidia-xconfig
# nvidia-xconfig:  version 340.46  (buildd@brahms)  Tue Oct  7 08:00:32 UTC 2014

Section "ServerLayout"
    Identifier     "Layout0"
    Screen      0  "Screen0"
    InputDevice    "Keyboard0" "CoreKeyboard"
    InputDevice    "Mouse0" "CorePointer"
EndSection

Section "Files"
EndSection

Section "InputDevice"
    # generated from default
    Identifier     "Mouse0"
    Driver         "mouse"
    Option         "Protocol" "auto"
    Option         "Device" "/dev/psaux"
    Option         "Emulate3Buttons" "no"
    Option         "ZAxisMapping" "4 5"
EndSection

Section "InputDevice"
    # generated from default
    Identifier     "Keyboard0"
    Driver         "kbd"
EndSection

Section "Monitor"
    Identifier     "Monitor0"
    VendorName     "Unknown"
    ModelName      "Unknown"
    HorizSync       28.0 - 33.0
    VertRefresh     43.0 - 72.0
    Option         "DPMS"
EndSection

Section "Device"
    Identifier     "Device0"
    Driver         "nvidia"
    VendorName     "NVIDIA Corporation"
EndSection

Section "Screen"
    Identifier     "Screen0"
    Device         "Device0"
    Monitor        "Monitor0"
    DefaultDepth    24
    SubSection     "Display"
        Depth       24
    EndSubSection
EndSection

(que cita uma versão mais baixa do que eu esperava no wiki, 352.79 vs 340.46, mas provavelmente é nada), o servidor X não inicia de todo (fico com uma tela preta com um cursor piscando, mas tty1-6 Estão disponíveis). O mesmo resultado se eu cortar tudo, exceto a seção "Dispositivo".

Xorg.log.0: link

Este é um laptop MSI com gráficos dedicados da nvidia 940M (e um gfx Intel onboard).

$ lspci | egrep -i "vga|nvidia"
00:02.0 VGA compatible controller: Intel Corporation 4th Gen Core Processor Integrated Graphics Controller (rev 06)
01:00.0 3D controller: NVIDIA Corporation Device 1347 (rev a2)

Então: como posso fazer o X iniciar e usar o driver nvidia?

    
por allicoder 06.03.2016 / 04:50

1 resposta

3

Parece funcionar! Obrigado @cas (veja os comentários sobre a questão). Eu instalei bumblebee (de backports, uma vez que é onde eu instalei nvidia-driver e dependentes, como por o wiki ):

$ sudo aptitude install -t jessie-backports bumblebee bumblebee-nvidia

e reiniciado para ter certeza de que tudo estava funcionando (você provavelmente nem precisa reiniciar o servidor X, mas eu estava me sentindo caridoso). NB, se você ainda não instalou o driver nvidia, eu acredito que isso também iria puxar isso? Eu não testei isso embora. Em vez disso, pode puxar nouveau. Se quando você executa primusrun glxinfo você não vê "nvidia" em nenhum lugar, isso pode ser o que aconteceu; Nesse caso, presumivelmente, você pode apenas instalar o debian de acordo com o wiki e ele deve funcionar (você precisaria reinicializar definitivamente, já que ele instala um novo módulo do kernel).

Em seguida, usei glxinfo e glxgears para testar.

$ glxinfo | grep OpenGL
OpenGL vendor string: Intel Open Source Technology Center
OpenGL renderer string: Mesa DRI Intel(R) Haswell Mobile 
OpenGL core profile version string: 3.3 (Core Profile) Mesa 10.3.2
OpenGL core profile shading language version string: 3.30
OpenGL core profile context flags: (none)
OpenGL core profile profile mask: core profile
OpenGL core profile extensions:
OpenGL version string: 3.0 Mesa 10.3.2
OpenGL shading language version string: 1.30
OpenGL context flags: (none)
OpenGL extensions:
OpenGL ES profile version string: OpenGL ES 3.0 Mesa 10.3.2
OpenGL ES profile shading language version string: OpenGL ES GLSL ES 3.0
OpenGL ES profile extensions:

Observe que executar o glxinfo bare usa os gráficos integrados da intel (acho que o mesa significava software opengl? Não sei o que significa agora. Mas está claro que NÃO está usando o cartão discreto).

$ primusrun glxinfo | grep OpenGL
OpenGL vendor string: NVIDIA Corporation
OpenGL renderer string: GeForce 940M/PCIe/SSE2
OpenGL core profile version string: 4.4.0 NVIDIA 352.79
OpenGL core profile shading language version string: 4.40 NVIDIA via Cg compiler
OpenGL core profile context flags: (none)
OpenGL core profile profile mask: core profile
OpenGL core profile extensions:
OpenGL version string: 4.5.0 NVIDIA 352.79
OpenGL shading language version string: 4.50 NVIDIA
OpenGL context flags: (none)
OpenGL profile mask: (none)
OpenGL extensions:

Sucesso!

    
por 06.03.2016 / 15:57