web-dev-qa-db-fra.com

Comment choisir le VGA lors de la configuration du serveur X?

J'ai 2 options de VGA:

lspci | grep VGA
00:02.0 VGA compatible controller: Cirrus Logic Gd 5446
00:03.0 VGA compatible controller: NVIDIA Corporation GK104GL [GRID K520] (rev a1)

C'est une instance d'Ubuntu s'exécutant sur Amazon EC2.

Lorsque j'ouvre mon serveur x, le message suivant s'affiche:

(WW) CIRRUS: More than one matching Device section found: Autoconfigured Video Device cirrus

En fait, le serveur X devient ouvert et cela fonctionne. Mais avec les ressources de la "logique Cirrus". Je veux être en mesure de choisir le VGA que je veux quand ouvrir le serveur X. Comment je fais ça?

  • PS: L'objectif final ici est d'utiliser OpenGL de NVIDIA. Il s'agit d'une Ubuntu fonctionnant sur Amazon AWS. Elle a un GPU, donc elle est supposée avoir un moyen d'utiliser OpenGL dessus.

  • PS2: Désactiver le Cirrus VGA est également le bienvenu. Existe-t-il un moyen de le faire?

3
Wagner Patriota

J'ai donc tout fait pour fonctionner sur l'AMI Ubuntu 14.04 fourni par Amazon ubuntu-trusty-14.04-AMD64. Ci-dessous, mon code d'installation. J'ai également conservé l'ancienne réponse ci-dessous, que les internautes peuvent trouver dans Google.

    # setup kernel
    Sudo apt-get update
    Sudo apt-get install -y gcc make linux-generic

    # install X server and OpenGL tools
    Sudo apt-get install -y xserver-xorg mesa-utils

    # disable Nouveau
    # via http://altinukshini.wordpress.com/2011/07/28/how-to-install-nvidia-drivers-in-ubuntu-linux/
    Sudo echo 'blacklist nouveau' >> /etc/modprobe.d/blacklist.conf
    Sudo echo 'options nouveau modeset=0' >> /etc/modprobe.d/blacklist.conf
    echo options nouveau modeset=0 | Sudo tee -a /etc/modprobe.d/nouveau-kms.conf
    Sudo update-initramfs -u

    # reboot to get kernel update and nouveau disabling activated
    Sudo reboot now



    # install NVIDIA drivers

    # version was chosen because was "Latest Long Lived Branch version", which sounds stable
    # resources:
    #   http://docs.aws.Amazon.com/AWSEC2/latest/UserGuide/using_cluster_computing.html
    #   http://www.nvidia.com/object/unix.html
    #   http://us.download.nvidia.com/XFree86/Linux-x86_64/340.46/README/index.html

    wget http://us.download.nvidia.com/XFree86/Linux-x86_64/340.46/NVIDIA-Linux-x86_64-340.46.run
    Sudo /bin/bash ./NVIDIA-Linux-x86_64-340.46.run --accept-license --no-questions --ui=none
    Sudo reboot now



    # setup xorg.conf
    # via https://stackoverflow.com/questions/19856192/run-opengl-on-aws-gpu-instances-with-centos
    Sudo nvidia-xconfig -a --use-display-device=None --virtual=1280x1024

    # add missing BusID
    Sudo sed -i 's/    BoardName      "GRID K520"/    BoardName      "GRID K520"\n    BusID          "0:3:0"/g' /etc/X11/xorg.conf



    # run x server and glxgears as test application

    Sudo /usr/bin/X &
    DISPLAY=:0 glxgears

Old Post

Malheureusement, je n'ai pas encore trouvé la réponse moi-même, mais voici quelques miettes de pain en chemin:

J'ai installé les pilotes NVIDIA

# from aws docs http://docs.aws.Amazon.com/AWSEC2/latest/UserGuide/using_cluster_computing.html
Sudo apt-get update
Sudo apt-get install -y linux-generic
Sudo reboot now

wget http://us.download.nvidia.com/XFree86/Linux-x86_64/343.22/NVIDIA-Linux-x86_64-343.22.run
Sudo /bin/bash ./NVIDIA-Linux-x86_64-343.22.run
Sudo reboot now

(si vous rencontrez une erreur à cause des nouveaux pilotes, cochez ici )

Installez ensuite XServer

Sudo apt-get install -y xserver-xorg

Et générer le xconfig (comme d’autre question de débordement de pile )

Sudo nvidia-xconfig -a --use-display-device=None --virtual=1280x1024

Bizarrement, cela génère un fichier dans/etc/X11/XF86Config, donc je l'ai copié dans /etc/X11/xorg.conf, afin que X le récupère.

Lancer maintenant le serveur X donne l'erreur suivante pour moi:

Sudo /usr/bin/X :0 &
(WW) CIRRUS: No matching Device section for instance (BusID PCI:0@0:2:0) found

Une réponse à cela question de débordement de pile dit de choisir le bus, ce qui entraîne cette erreur:

error setting MTRR (base = 0xe8000000, size = 0x00100000, type = 1) Invalid argument (22)

Quoi que cela signifie. En regardant en arrière dans le journal, il apparaît que le pilote NVIDIA n’est apparemment pas chargé du tout (bien qu’il ait été essayé):

cat /var/log/Xorg.0.log
...
[  3136.163] Loading extension GLX
...
[  3136.163] (II) LoadModule: "nvidia"
[  3136.164] (WW) Warning, couldn't open module nvidia
[  3136.164] (II) UnloadModule: "nvidia"
[  3136.164] (II) Unloading nvidia
[  3136.164] (EE) Failed to load module "nvidia" (module does not exist, 0)

Maintenant cet article suggère que le chemin du module doit être défini manuellement dans la conf:

# find the path (maybe)
Sudo find / | grep nvidia | grep modules
...    
usr/X11R6/lib/modules/
...

# put it into the conf file
vim /etc/X11/xorg.conf
...
Section "Files"
     ModulePath     "/usr/X11R6/lib/modules"
EndSection

Quoi qu'il en soit, cela semble effectivement charger le module du pilote, puis se bloquer:

Sudo /usr/bin/X :0 &
...
Loading extension GLX
(EE)
(EE) Backtrace:
(EE) 0: /usr/bin/X (xorg_backtrace+0x48) [0x7f65c7ea9d28]
(EE) 1: /usr/bin/X (0x7f65c7d01000+0x1aca19) [0x7f65c7eada19]
(EE) 2: /lib/x86_64-linux-gnu/libpthread.so.0 (0x7f65c6dfe000+0x10340) [0x7f65c6e0e340]
(EE) 3: /usr/X11R6/lib/modules/drivers/nvidia_drv.so (0x7f65bf75b000+0x88cb5) [0x7f65bf7e3cb5]
(EE) 4: /usr/X11R6/lib/modules/drivers/nvidia_drv.so (0x7f65bf75b000+0x69272) [0x7f65bf7c4272]
(EE) 5: /usr/X11R6/lib/modules/drivers/nvidia_drv.so (0x7f65bf75b000+0x55e43a) [0x7f65bfcb943a]
(EE) 6: /usr/bin/X (0x7f65c7d01000+0xaf67b) [0x7f65c7db067b]
(EE) 7: /usr/bin/X (xf86CallDriverProbe+0x5e) [0x7f65c7d89a5e]
(EE) 8: /usr/bin/X (xf86BusConfig+0x46) [0x7f65c7d8a3d6]
(EE) 9: /usr/bin/X (InitOutput+0x993) [0x7f65c7d982b3]
(EE) 10: /usr/bin/X (0x7f65c7d01000+0x596bb) [0x7f65c7d5a6bb]
(EE) 11: /lib/x86_64-linux-gnu/libc.so.6 (__libc_start_main+0xf5) [0x7f65c583dec5]
(EE) 12: /usr/bin/X (0x7f65c7d01000+0x44dde) [0x7f65c7d45dde]
3
Freenerd