Xlib: manca l'estensione "GLX" - con una scheda NVIDIA e grafica integrata


17

Ho una macchina con una NVIDIA GeForce che non utilizzo a scopo di visualizzazione (ovvero il monitor non è collegato ad essa) e un chip grafico integrato poco brillante. (Di seguito troverai l' lshwelenco pertinente .)

Le mie sessioni X funzionano bene; ma quando la maggior parte delle mie app X (che richiedono qualsiasi tipo di GFX di fantasia o un toolkit) vengono eseguite, emettono il seguente messaggio di errore:

Xlib:  extension "GLX" missing on display ":0".

La mia domanda è: come posso fare in modo che le mie app notino la libreria non NVIDIA GLX e la utilizzi (senza rimuovere la scheda NVIDIA e senza passare il monitor alle sue porte di uscita ovviamente)?

Sto usando Debian / Linux Stretch 64 bit, versione kernel 4.2.6, con LXDE.

Uscita di lshw -c display:

  *-display               
       description: VGA compatible controller
       product: GK106 [GeForce GTX 650 Ti Boost]
       vendor: NVIDIA Corporation
       physical id: 0
       bus info: pci@0000:02:00.0
       version: a1
       width: 64 bits
       clock: 33MHz
       capabilities: pm msi pciexpress vga_controller bus_master cap_list rom
       configuration: driver=nvidia latency=0
       resources: irq:17 memory:f6000000-f6ffffff memory:e0000000-e7ffffff memory:e8000000-e9ffffff ioport:e000(size=128) memory:f7000000-f707ffff
  *-display
       description: VGA compatible controller
       product: Xeon E3-1200 v2/3rd Gen Core processor Graphics Controller
       vendor: Intel Corporation
       physical id: 2
       bus info: pci@0000:00:02.0
       version: 09
       width: 64 bits
       clock: 33MHz
       capabilities: msi pm vga_controller bus_master cap_list rom
       configuration: driver=i915 latency=0
       resources: irq:30 memory:f7400000-f77fffff memory:d0000000-dfffffff ioport:f000(size=64)

Uscita di glxinfo:

Xlib:  extension "GLX" missing on display ":0".
Xlib:  extension "GLX" missing on display ":0".
Xlib:  extension "GLX" missing on display ":0".
Xlib:  extension "GLX" missing on display ":0".
Xlib:  extension "GLX" missing on display ":0".
Xlib:  extension "GLX" missing on display ":0".
Xlib:  extension "GLX" missing on display ":0".
Error: couldn't find RGB GLX visual or fbconfig
Xlib:  extension "GLX" missing on display ":0".
Xlib:  extension "GLX" missing on display ":0".
Xlib:  extension "GLX" missing on display ":0".
Xlib:  extension "GLX" missing on display ":0".
Xlib:  extension "GLX" missing on display ":0".
Xlib:  extension "GLX" missing on display ":0".
Xlib:  extension "GLX" missing on display ":0".
Xlib:  extension "GLX" missing on display ":0".
Xlib:  extension "GLX" missing on display ":0".
Xlib:  extension "GLX" missing on display ":0".

Uscita di cat /var/log/Xorg.0.log | grep glx:

[    19.287] (II) LoadModule: "glx"
[    19.787] (II) Loading /usr/lib/xorg/modules/extensions/libglx.so
[    22.727] (II) Module glx: vendor="X.Org Foundation"

Informazioni aggiuntive:

  • Non ho glx-alternative-nvidiainstallato il pacchetto.
  • Se eseguo l'avvio da una USB di immagini live di Devuan ASCII, il problema non si manifesta.
  • Se creo un xorg.confutilizzo Xorg :1 -configure, questo è ciò che produce (2 sezioni "Dispositivo", una associata al inteldriver, un'altra con nouveau); ma se commento la sezione nouveau e provo a eseguire Xorg con quella configurazione, non si caricherà, dicendo che non riesce a trovare alcuna schermata.

La soluzione per me era rimuovere bumblebeee installare nvidia-bumblebee(su Debian Jessie, usando i pacchetti backfs gfx).
Skeen,

Risposte:


8

Sono arrivato qui dopo l'installazione nvidia-currentdal repository dei pacchetti e mi sono bloccato su un ciclo di accesso . Ho guardato il login ~/.xsession-errorse ho trovato l'errore menzionato:

Xlib: extension "GLX" missing on display ":0".

Avevo già disinstallato nvidia-currente il problema persisteva. Inoltre non ho glx-alternative-nvidiainstallato. Come ultima risorsa, ho semplicemente disinstallato tutto dal nvidiamio Ubuntu (comprese le cose CUDA) e ha funzionato dopo il riavvio.


Ci scusiamo per non aver risposto prima a questo. Non ho nvidia-currentinstallato né, in effetti, alcun nvidia-pacchetto. Ma ho installato l'ultimo CUDA, con il driver di accompagnamento (il programma di installazione manuale di NVIDIA). So che è un brutto modo di fare le cose, ma ho bisogno dell'ultima versione.
einpoklum,

1

Per prima cosa identifica quale modulo glx è in uso:

$ cat /var/log/Xorg.0.log | grep glx
[     3.622] (II) LoadModule: "glx"
[     3.624] (II) Loading /usr/lib/xorg/modules/extensions/libglx.so
[     3.705] (II) Module glx: vendor="NVIDIA Corporation"

In Debian 8 Jessie la mia soluzione era rimuovere il glx-alternative-nvidiapacchetto. Quindi dopo il riavvio:

$ cat /var/log/Xorg.0.log | grep glx
[     3.581] (II) LoadModule: "glx"
[     3.582] (II) Loading /usr/lib/xorg/modules/extensions/libglx.so
[     3.592] (II) Module glx: vendor="X.Org Foundation"

$ glxinfo | grep "OpenGL renderer"
OpenGL renderer string: Mesa DRI Intel(R) Haswell Desktop

1
In realtà sto solo iniziando con il modulo founction X.Org con ... vedi modifica.
einpoklum,

1
E come lo rimuovi? Non è elencato sui miei apt-getpacchetti.
villasv

1
@VillasV devi abilitare il contribrepository per vederlo. E probabilmente non lo hai nemmeno installato, e quindi la tua causa dell'errore di estensione glx mancante è diversa.
svlasov,

Piccolo nitpick: perché dici cat file | grep pattern? Perché no grep pattern file?
Timo,

@Timo, solo una preferenza personale. Nella cronologia della shell trovo più facile vedere come si è evoluto lo schema se va per ultimo.
svlasov,

1

L'ho risolto disinstallando glx-alternative-nvidia

apt-get remove glx-alternative-nvidia

Non ho nemmeno installato il glx-alternative-nvidiapacchetto ...
einpoklum,

1

Ho avuto problemi dopo aver aggiornato Debian 9 dopo aver fatto clic sul riavvio per aggiornare il prompt.

Durante l'installazione inizialmente ho seguito i passaggi trovati nel wiki https://wiki.debian.org/NvidiaGraphicsDrivers

I più importanti per me erano ...

# apt-get update
# apt-get install -t stretch-backports nvidia-driver

Quindi ha eseguito un riavvio


0

Installa OpenGL sul tuo computer, quindi come indicato qui , aggiungi quanto segue al tuo /etc/X11/xorg.conf:

Section "Files"
    ModulePath "/usr/lib/nvidia-VERSION/xorg"
    ModulePath "/usr/lib/xorg/modules"
EndSection

(Sostituisci nvidia-VERSIONcon il nome della tua directory) Questo ha funzionato per me.


1
Non ho la prima directory. In realtà, non ho nemmeno un /etc/X11/xorg.confmotivo per qualche motivo.
einpoklum,

1
Puoi averlo creato per te consudo nvidia-xconfig
Gabriel Fair,

@GabrielFair: Sono assolutamente dovrei non farlo. Questo probabilmente renderà la mia scheda nVIDIA usata per X; e anche se non lo farà - è concettualmente inappropriato.
einpoklum,

0

Ho trovato "estensione" GLX "mancante" quando ho "dist-aggiornato" il mio debian (8 -> 9). La soluzione era piuttosto semplice.

Scarica il tuo programma di installazione del driver su NVIDIA

service lightdm stop
#(ALT+F1) + your credentials
sudo nvidia-installer --uninstall
sudo ./NVIDIA-Linux-x86_64-340.102-custom.run #my vga GT218M [GeForce 310M]

Dopo che il programma di installazione ha fatto il suo lavoro, il GLX è tornato indietro.

ps: Se l'utente repository, penso che un dpkg-riconfigurare "nome_pacchetto_ driver" farebbe lo stesso.


1
Se non sbaglio, questo farà utilizzare X al modulo nVIDIA GLX. Il che non è quello che voglio, poiché non sto usando la mia GPU per scopi di visualizzazione.
einpoklum,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.