J'ai configuré multiseat et mon Xorg a 2 configurations de serveur. L'une concerne la carte nVidia et l'autre, la carte Intel. Ils fonctionnent tous les deux, mais le serveur d'affichage affecté à la carte Intel ne dispose pas de l'accélération matérielle car les modules DRI et GLX utilisés proviennent du pilote nVidia.
Ma question est donc la suivante: puis-je configurer les mises en page de manière à utiliser correctement les droits DRI et GLX avec chaque carte?
Mon Xorg.conf:
Section "ServerLayout"
Identifier "Default"
Screen 0 "Screen0" 0 0
Option "Xinerama" "0"
EndSection
Section "ServerLayout"
Identifier "TV"
Screen 0 "Screen1" 0 0
Option "Xinerama" "0"
EndSection
Section "Monitor"
# HorizSync source: edid, VertRefresh source: edid
Identifier "Monitor0"
VendorName "Unknown"
ModelName "Dell E198WFP"
HorizSync 30.0 - 83.0
VertRefresh 56.0 - 75.0
Option "DPMS"
EndSection
Section "Monitor"
Identifier "Monitor1"
VendorName "Unknown"
Option "DPMS"
EndSection
Section "Device"
Identifier "Device0"
Driver "nvidia"
VendorName "NVIDIA Corporation"
BoardName "GeForce GT 610"
EndSection
Section "Device"
Identifier "Device1"
Driver "intel"
BusID "PCI:0:2:0"
Option "AccelMethod" "uxa"
EndSection
Section "Screen"
Identifier "Screen0"
Device "Device0"
Monitor "Monitor0"
DefaultDepth 24
Option "Stereo" "0"
Option "nvidiaXineramaInfoOrder" "DFP-1"
Option "metamodes" "DFP-0: nvidia-auto-select +1440+0, DFP-1: nvidia-auto-select +0+0"
SubSection "Display"
Depth 24
EndSubSection
EndSection
Section "Screen"
Identifier "Screen1"
Device "Device1"
Monitor "Monitor1"
DefaultDepth 24
SubSection "Display"
Depth 24
EndSubSection
EndSection
Fichier journal pour Intel:
[ 18.239]
X.Org X Server 1.13.0
Release Date: 2012-09-05
[ 18.239] X Protocol Version 11, Revision 0
[ 18.239] Build Operating System: Linux 2.6.24-32-xen x86_64 Ubuntu
[ 18.239] Current Operating System: Linux bytewiper 3.5.0-18-generic #29-Ubuntu SMP Fri Oct 19 10:26:51 UTC 2012 x86_64
[ 18.239] Kernel command line: BOOT_IMAGE=/boot/vmlinuz-3.5.0-18-generic root=UUID=fc0616fd-f212-4846-9241-ba4a492f0513 ro quiet splash
[ 18.239] Build Date: 20 September 2012 11:55:20AM
[ 18.239] xorg-server 2:1.13.0+git20120920.70e57668-0ubuntu0ricotz (For technical support please see http://www.ubuntu.com/support)
[ 18.239] Current version of pixman: 0.26.0
[ 18.239] Before reporting problems, check http://wiki.x.org
to make sure that you have the latest version.
[ 18.239] Markers: (--) probed, (**) from config file, (==) default setting,
(++) from command line, (!!) notice, (II) informational,
(WW) warning, (EE) error, (NI) not implemented, (??) unknown.
[ 18.239] (==) Log file: "/var/log/Xorg.1.log", Time: Wed Nov 21 18:32:14 2012
[ 18.239] (==) Using config file: "/etc/X11/xorg.conf"
[ 18.239] (==) Using system config directory "/usr/share/X11/xorg.conf.d"
[ 18.239] (++) ServerLayout "TV"
[ 18.239] (**) |-->Screen "Screen1" (0)
[ 18.239] (**) | |-->Monitor "Monitor1"
[ 18.240] (**) | |-->Device "Device1"
[ 18.240] (**) Option "Xinerama" "0"
[ 18.240] (==) Automatically adding devices
[ 18.240] (==) Automatically enabling devices
[ 18.240] (==) Automatically adding GPU devices
[ 18.240] (WW) The directory "/usr/share/fonts/X11/cyrillic" does not exist.
[ 18.240] Entry deleted from font path.
[ 18.240] (WW) The directory "/usr/share/fonts/X11/100dpi/" does not exist.
[ 18.240] Entry deleted from font path.
[ 18.240] (WW) The directory "/usr/share/fonts/X11/75dpi/" does not exist.
[ 18.240] Entry deleted from font path.
[ 18.240] (WW) The directory "/usr/share/fonts/X11/100dpi" does not exist.
[ 18.240] Entry deleted from font path.
[ 18.240] (WW) The directory "/usr/share/fonts/X11/75dpi" does not exist.
[ 18.240] Entry deleted from font path.
[ 18.240] (WW) The directory "/var/lib/defoma/x-ttcidfont-conf.d/dirs/TrueType" does not exist.
[ 18.240] Entry deleted from font path.
[ 18.240] (==) FontPath set to:
/usr/share/fonts/X11/misc,
/usr/share/fonts/X11/Type1,
built-ins
[ 18.240] (==) ModulePath set to "/usr/lib/x86_64-linux-gnu/xorg/extra-modules,/usr/lib/xorg/extra-modules,/usr/lib/xorg/modules"
[ 18.240] (II) The server relies on udev to provide the list of input devices.
If no devices become available, reconfigure udev or disable AutoAddDevices.
[ 18.240] (II) Loader magic: 0x7f6917944c40
[ 18.240] (II) Module ABI versions:
[ 18.240] X.Org ANSI C Emulation: 0.4
[ 18.240] X.Org Video Driver: 13.0
[ 18.240] X.Org XInput driver : 18.0
[ 18.240] X.Org Server Extension : 7.0
[ 18.240] (II) config/udev: Adding drm device (/dev/dri/card0)
[ 18.241] (--) PCI: (0:0:2:0) 8086:0152:1043:84ca rev 9, Mem @ 0xf7400000/4194304, 0xd0000000/268435456, I/O @ 0x0000f000/64
[ 18.241] (--) PCI:*(0:1:0:0) 10de:104a:1458:3546 rev 161, Mem @ 0xf6000000/16777216, 0xe0000000/134217728, 0xe8000000/33554432, I/O @ 0x0000e000/128, BIOS @ 0x????????/524288
[ 18.241] (II) Open ACPI successful (/var/run/acpid.socket)
[ 18.241] Initializing built-in extension Generic Event Extension
[ 18.241] Initializing built-in extension SHAPE
[ 18.241] Initializing built-in extension MIT-SHM
[ 18.241] Initializing built-in extension XInputExtension
[ 18.241] Initializing built-in extension XTEST
[ 18.241] Initializing built-in extension BIG-REQUESTS
[ 18.241] Initializing built-in extension SYNC
[ 18.241] Initializing built-in extension XKEYBOARD
[ 18.241] Initializing built-in extension XC-MISC
[ 18.241] Initializing built-in extension SECURITY
[ 18.241] Initializing built-in extension XINERAMA
[ 18.241] Initializing built-in extension XFIXES
[ 18.241] Initializing built-in extension RENDER
[ 18.241] Initializing built-in extension RANDR
[ 18.241] Initializing built-in extension COMPOSITE
[ 18.241] Initializing built-in extension DAMAGE
[ 18.241] Initializing built-in extension MIT-SCREEN-SAVER
[ 18.241] Initializing built-in extension DOUBLE-BUFFER
[ 18.241] Initializing built-in extension RECORD
[ 18.241] Initializing built-in extension DPMS
[ 18.241] Initializing built-in extension X-Resource
[ 18.241] Initializing built-in extension XVideo
[ 18.241] Initializing built-in extension XVideo-MotionCompensation
[ 18.241] Initializing built-in extension XFree86-VidModeExtension
[ 18.241] Initializing built-in extension XFree86-DGA
[ 18.241] Initializing built-in extension XFree86-DRI
[ 18.241] Initializing built-in extension DRI2
[ 18.241] (II) LoadModule: "glx"
[ 18.241] (II) Loading /usr/lib/x86_64-linux-gnu/xorg/extra-modules/libglx.so
[ 18.247] (II) Module glx: vendor="NVIDIA Corporation"
[ 18.247] compiled for 4.0.2, module version = 1.0.0
[ 18.247] Module class: X.Org Server Extension
[ 18.247] (II) NVIDIA GLX Module 310.19 Thu Nov 8 01:12:43 PST 2012
[ 18.247] Loading extension GLX
[ 18.247] (II) LoadModule: "intel"
[ 18.248] (II) Loading /usr/lib/xorg/modules/drivers/intel_drv.so
[ 18.248] (II) Module intel: vendor="X.Org Foundation"
[ 18.248] compiled for 1.13.0, module version = 2.20.13
[ 18.248] Module class: X.Org Video Driver
[ 18.248] ABI class: X.Org Video Driver, version 13.0
[ 18.248] (II) intel: Driver for Intel Integrated Graphics Chipsets: i810,
i810-dc100, i810e, i815, i830M, 845G, 854, 852GM/855GM, 865G, 915G,
E7221 (i915), 915GM, 945G, 945GM, 945GME, Pineview GM, Pineview G,
965G, G35, 965Q, 946GZ, 965GM, 965GME/GLE, G33, Q35, Q33, GM45,
4 Series, G45/G43, Q45/Q43, G41, B43, B43, Clarkdale, Arrandale,
Sandybridge Desktop (GT1), Sandybridge Desktop (GT2),
Sandybridge Desktop (GT2+), Sandybridge Mobile (GT1),
Sandybridge Mobile (GT2), Sandybridge Mobile (GT2+),
Sandybridge Server, Ivybridge Mobile (GT1), Ivybridge Mobile (GT2),
Ivybridge Desktop (GT1), Ivybridge Desktop (GT2), Ivybridge Server,
Ivybridge Server (GT2), Haswell Desktop (GT1), Haswell Desktop (GT2),
Haswell Desktop (GT2+), Haswell Mobile (GT1), Haswell Mobile (GT2),
Haswell Mobile (GT2+), Haswell Server (GT1), Haswell Server (GT2),
Haswell Server (GT2+), Haswell SDV Desktop (GT1),
Haswell SDV Desktop (GT2), Haswell SDV Desktop (GT2+),
Haswell SDV Mobile (GT1), Haswell SDV Mobile (GT2),
Haswell SDV Mobile (GT2+), Haswell SDV Server (GT1),
Haswell SDV Server (GT2), Haswell SDV Server (GT2+),
Haswell ULT Desktop (GT1), Haswell ULT Desktop (GT2),
Haswell ULT Desktop (GT2+), Haswell ULT Mobile (GT1),
Haswell ULT Mobile (GT2), Haswell ULT Mobile (GT2+),
Haswell ULT Server (GT1), Haswell ULT Server (GT2),
Haswell ULT Server (GT2+), Haswell CRW Desktop (GT1),
Haswell CRW Desktop (GT2), Haswell CRW Desktop (GT2+),
Haswell CRW Mobile (GT1), Haswell CRW Mobile (GT2),
Haswell CRW Mobile (GT2+), Haswell CRW Server (GT1),
Haswell CRW Server (GT2), Haswell CRW Server (GT2+),
ValleyView PO board
[ 18.248] (++) using VT number 8
[ 18.593] (II) intel(0): using device path '/dev/dri/card0'
[ 18.593] (**) intel(0): Depth 24, (--) framebuffer bpp 32
[ 18.593] (==) intel(0): RGB weight 888
[ 18.593] (==) intel(0): Default visual is TrueColor
[ 18.593] (**) intel(0): Option "AccelMethod" "uxa"
[ 18.593] (--) intel(0): Integrated Graphics Chipset: Intel(R) Ivybridge Desktop (GT1)
[ 18.593] (**) intel(0): Relaxed fencing enabled
[ 18.593] (**) intel(0): Wait on SwapBuffers? enabled
[ 18.593] (**) intel(0): Triple buffering? enabled
[ 18.593] (**) intel(0): Framebuffer tiled
[ 18.593] (**) intel(0): Pixmaps tiled
[ 18.593] (**) intel(0): 3D buffers tiled
[ 18.593] (**) intel(0): SwapBuffers wait enabled
...
[ 20.312] (II) Module fb: vendor="X.Org Foundation"
[ 20.312] compiled for 1.13.0, module version = 1.0.0
[ 20.312] ABI class: X.Org ANSI C Emulation, version 0.4
[ 20.312] (II) Loading sub module "dri2"
[ 20.312] (II) LoadModule: "dri2"
[ 20.312] (II) Module "dri2" already built-in
[ 20.312] (==) Depth 24 pixmap format is 32 bpp
[ 20.312] (II) intel(0): [DRI2] Setup complete
[ 20.312] (II) intel(0): [DRI2] DRI driver: i965
[ 20.312] (II) intel(0): Allocated new frame buffer 1920x1080 stride 7680, tiled
[ 20.312] (II) UXA(0): Driver registered support for the following operations:
[ 20.312] (II) solid
[ 20.312] (II) copy
[ 20.312] (II) composite (RENDER acceleration)
[ 20.312] (II) put_image
[ 20.312] (II) get_image
[ 20.312] (==) intel(0): Backing store disabled
[ 20.312] (==) intel(0): Silken mouse enabled
[ 20.312] (II) intel(0): Initializing HW Cursor
[ 20.312] (II) intel(0): RandR 1.2 enabled, ignore the following RandR disabled message.
[ 20.313] (**) intel(0): DPMS enabled
[ 20.313] (==) intel(0): Intel XvMC decoder enabled
[ 20.313] (II) intel(0): Set up textured video
[ 20.313] (II) intel(0): [XvMC] xvmc_vld driver initialized.
[ 20.313] (II) intel(0): direct rendering: DRI2 Enabled
[ 20.313] (==) intel(0): hotplug detection: "enabled"
[ 20.332] (--) RandR disabled
[ 20.335] (EE) Failed to initialize GLX extension (Compatible NVIDIA X driver not found)
[ 20.335] (II) intel(0): Setting screen physical size to 508 x 285
[ 20.338] (II) XKB: reuse xkmfile /var/lib/xkb/server-B20D7FC79C7F597315E3E501AEF10E0D866E8E92.xkm
[ 20.340] (II) config/udev: Adding input device Power Button (/dev/input/event1)
[ 20.340] (**) Power Button: Applying InputClass "evdev keyboard catchall"
[ 20.340] (II) LoadModule: "evdev"
[ 20.340] (II) Loading /usr/lib/xorg/modules/input/evdev_drv.so
Ok, donc trouvé une solution, mais il y a un bogue empêchant l'accélération matérielle de fonctionner sur les GPU Intel pour le moment dans Ubuntu 12.10 avec la nouvelle bibliothèque Mesa 9.0.1.
En bref, le problème était lié au chargement de GLX. nVidia pousserait son propre module GLX et marcherait sur les pieds d'Intel.
J'ai trouvé une solution en remarquant cette ligne:
[ 18.240] (==) ModulePath set to "/usr/lib/x86_64-linux-gnu/xorg/extra-modules,/usr/lib/xorg/extra-modules,/usr/lib/xorg/modules"
À savoir les modules situés dans /usr/lib/x86_64-linux-gnu/xorg/extra-modules
sont tous spécifiques à nVidia. J'ai donc configuré LightDM pour utiliser deux fichiers xorg.conf
. Dans Intel one, j'ai défini manuellement ModulePath
à l'exclusion du répertoire nVidia. Cela a entraîné le chargement du module GLX approprié.
Mon fichier /etc/lightdm/lightdm.conf
ressemble à ceci:
[SeatDefaults]
user-session=ubuntu
greeter-session=unity-greeter
allow-guest=false
[Seat:0]
xserver-layout=Default
xserver-config=xorg.conf.nvidia
[Seat:1]
xserver-layout=TV
xserver-config=xorg.conf.intel
Lignes ajoutées à xorg.conf.intel
:
Section "Files"
ModulePath "/usr/lib/xorg/extra-modules"
ModulePath "/usr/lib/xorg/modules"
EndSection
De mon côté, avec Ubuntu 14.04, les chemins sont différents et le pilote propriétaire de Nvidia annule libglx.so
dans /usr/lib/xorg/modules/extensions/libglx.so
.
Pour résoudre le problème, je duplique /usr/lib/xorg/modules
dans /usr/lib/xorg/modules-nvidia
, puis réinstalle le libglx.so
amical pour Intel avec:
Sudo apt-get install --reinstall xserver-xorg-core
Ceci restaure l'original libglx.so
. Sur le xorg.conf.nvidia
, j'ajoute le chemin d'accès aux modules valides:
Section "Files" ModulePath "/usr/lib/xorg/modules-nvidia" EndSection
De plus, dans /etc/lightdm/lightdm.conf
je dois ajouter: xserver-command=/usr/bin/X -sharevts
sous la section [Seat:1]
. Cette astuce a été trouvée ici .
Un grand merci à MeanEYE qui m'a indiqué correctement.
J'ai donc fait quelques recherches et découvert qu'il existe différentes manières de réaliser des configurations multiseat (multipostes, multipostes, etc.).
1) La méthode que je recommanderais, car elle utilise votre Xorg standard et un pilote de noyau intégré, utilise evdev . Voici un guide sur la configuration d’une configuration multiseat à 4 GPU et 4 moniteurs avec evdev. Le guide est destiné aux GPU Debian Sarge et SiS, mais je pense que vous pouvez en tirer beaucoup d’informations très utiles: https://en.wikibooks.org/wiki/Multiterminal_with_evdev
2) Une autre méthode utilise Xypher , un serveur X Windows différent sur KDrive. Je ne suis pas sûr que ce soit la voie que vous souhaitez suivre, mais voici cependant ce guide: https://en.wikibooks.org/wiki/en:Multiterminal_with_Xephyr
3) Une autre option consiste à utiliser un outil appelé Multiseat Display Manager (MDM) qui promet d’automatiser tout le processus d’installation pour vous, cependant, il ne semble pas avoir été mis à jour, je ne le recommande donc pas. Vous pouvez le trouver facilement avec Google en dernier recours.
Je ne suis pas au courant de ce que vous avez fait ou pas déjà fait avec votre configuration. Votre mieux est donc de lire le guide evdev et d'essayer d'identifier les étapes que vous n'avez pas encore effectuées. La plus grande différence que je vois est
A) Dans l'exemple xorg.conf, il n'y a qu'une section Screen et ServerLayout. Les écrans supplémentaires et ServerLayout sont définis dans une conf distincte: xorg.conf.probe
B) De plus, tous les périphériques sont explicitement référencés par leurs BusID, obtenus à l'aide de lspci et
C) Les interruptions sont désactivées sur irq 10.
J'espère que cela vous aidera à être opérationnel, bonne chance!
Dans Ubuntu 16.04, je devais mettre à jour le wrapper /usr/local/bin/X
avec:
exec /usr/bin/Xorg -modulepath '/usr/lib/xorg/extra-modules,/usr/lib/xorg/modules' "$@"
/etc/X11/Xsession.d/00ldlibrary
peut tester la variable $XDG_SEAT
et définit export LD_LIBRARY_PATH=/usr/lib/x86_64-linux-gnu/mesa:/usr/lib/i386-linux-gnu/mesa/
uniquement pour la carte Intel.
Dans 18.04, la prise en charge de glvnd permet aux utilisateurs d'installer très facilement les pilotes Mesa et les pilotes propriétaires Nvidia , sans devoir jouer avec LD_PRELOAD! Toutes les variables d'environnement et les scripts d'encapsidation sont maintenant inutiles.
Étant donné que cela n'est pas associé à une version spécifique d'Ubuntu et que les réponses existantes ne fonctionnent pas complètement avec mon système (Ubuntu 15.10), je publie cette réponse qui utilise logind
.
Fondamentalement, pour que GLX et libGL fonctionnent, vous devez configurer le serveur X et la session utilisateur pour utiliser la bonne implémentation libGL, en fonction de la siège.
Par conséquent, vous avez besoin d'un script d'encapsulage permettant à LightDM de démarrer X et d'un script Xsession permettant de définir LD_LIBRARY_PATH
de sorte que la session utilise le bon libGL.
Dans /etc/X11/Xsession.d/00ldlibrary
:
#!/bin/bash
if ps aux | grep "/usr/local/bin/X $DISPLAY" | grep -q seat1; then
export LD_LIBRARY_PATH=/usr/lib/nvidia-352:/usr/lib32/nvidia-352
fi
if ps aux | grep "/usr/local/bin/X $DISPLAY" | grep -q seat0; then
export LD_LIBRARY_PATH=/usr/lib/x86_64-linux-gnu/mesa:/usr/lib/i386-linux-gnu/mesa/
fi
(en supposant que seat1 utilise nvidia et seat0 mesa)
De même, vous devez envelopper le serveur X (/usr/local/bin/X
):
#!/bin/bash
if grep -q seat1 <<<$*; then
export LD_LIBRARY_PATH=/usr/lib/nvidia-352
echo "Detected seat1, using nvidia-352 libs"
fi
if grep -q seat0 <<<$*; then
export LD_LIBRARY_PATH=/usr/lib/x86_64-linux-gnu/mesa
echo "Detected seat0, using mesa libs"
fi
exec /usr/bin/Xorg "$@"
Enfin, vous devrez configurer LightDM pour les utiliser dans /etc/lightdm/lightdm.conf
:
[Seat:*]
# needed to use the correct libraries for mesa/nvidia,
# along with a Xsession.d script (00ldlibrary)
xserver-command=/usr/local/bin/X
session-setup-script=/etc/X11/Xsession.d/00ldlibrary
Pour plus de détails, voir mon repo multiseat-mesa-nvidia qui contient plus de détails et contient les fichiers de configuration complets et les scripts.