web-dev-qa-db-fra.com

Coexistence pacifique d'Intel et de Nvidia GLX

J'ai un ordinateur portable Optimus, donc les cartes Intel et NVIDIA. Cela a bien fonctionné pendant des années (12.04) avec le bourdon. Oui, je sais qu'il existe de meilleures options à l'heure actuelle, mais cela fonctionne bien.

Le problème est que, pour diverses raisons, j'avais besoin de la trousse à outils CUDA 6, ce qui signifie une installation externe. Sans surprise, il a écrasé ma bibliothèque GLX.

Actuellement, le matériel nvidia fonctionne bien, mais le matériel Intel (c’est-à-dire mon serveur x: 0) ne peut pas charger GLX avec succès. Je suppose que cela a peut-être quelque chose à voir avec le journal d’initialisation d’Intel xorg contenant

[    77.269] (II) LoadModule: "glx"
[    77.269] (II) Loading /usr/lib/xorg/modules/extensions/libglx.so
[    77.277] (II) Module glx: vendor="NVIDIA Corporation"
[    77.277]    compiled for 4.0.2, module version = 1.0.0
[    77.277]    Module class: X.Org Server Extension
#...
[    77.469] (EE) Failed to initialize GLX extension (Compatible NVIDIA X driver not found)

dpkg -S convient que /usr/lib/xorg/modules/extensions/libglx.so "appartient" à xserver-xorg-core, donc je suis raisonnablement sûr qu'une réinstallation forcée de ce paquet remettrait libglx.so à la version "correcte". Le seul problème est que cela casserait le côté nvidia.

Intel n'utilise pas de xorg.conf, Nvidia en utilise un via bumblebee.

Est-il possible de faire coexister ces deux pilotes en toute quiétude?

3
zebediah49

Vous pouvez essayer de restaurer le /usr/lib/xorg/modules/extensions/libglx.so original à partir de xserver-xorg-core Install xserver-xorg-core . C'est ce que j'ai fait dans une situation similaire. Voici comment:

  1. Tout d’abord, confirmez qu’il a bien été remplacé par l’installation de nvidia:

    debsums xserver-xorg-core | grep libglx.so
    

    Si FAILED apparaît, cela signifie que le fichier a bien été remplacé et vous pouvez essayer de restaurer l'original.

  2. Pour restaurer l'original, commencez par rechercher le nom de fichier .deb de votre paquet installé:

    apt-cache show xserver-xorg-core | grep Filename: | head -1
    

    Il devrait montrer quelque chose comme ça:

    Filename: pool/main/x/xorg-server/xserver-xorg-core_1.7.6-2ubuntu7.12_i386.deb
                                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    
  3. Recherchez où vous pouvez télécharger ce fichier et téléchargez-le. (Habituellement, une recherche Google sur le nom de fichier, marquée par ^^^^^^ ci-dessous, est suffisante.) Enregistrez-le sur /tmp.

  4. Extrayez le fichier nécessaire du package:

    cd /tmp
    dpkg --fsys-tarfile xserver-xorg-core_1.7.6-2ubuntu7.12_i386.deb | tar xvf - ./usr/lib/xorg/modules/extensions/libglx.so
    
  5. Renommez le fichier que vous êtes sur le point de remplacer (juste au cas où vous en auriez besoin plus tard):

    mv /usr/lib/xorg/modules/extensions/libglx.so /usr/lib/xorg/modules/extensions/libglx.so.orig-20140914
    
  6. Copiez le fichier original à sa place:

    mv ./usr/lib/xorg/modules/extensions/libglx.so /usr/lib/xorg/modules/extensions/libglx.so
    
  7. Redémarrez votre X (vous déconnecter et revenir de ma session graphique suffisait ici).

  8. Exécutez glxgears (ou votre programme GLX préféré) pour confirmer que tout va bien maintenant.

Ce qui précède est testé et fonctionne sur mon ordinateur de bureau oldie Ubuntu 10.04 (pas d’Unity pour moi), devrait également fonctionner sur votre installation 12.04 si vous suivez la procédure indiquée pour connaître le nom du paquet .deb (qui sera différent du mien).

1
durval