J'ai configuré une machine avec deux cartes vidéo NVidia:
$ lspci
01:00.0 VGA compatible controller: NVIDIA Corporation GK107 [GeForce GT 740] (rev a1)
02:00.0 VGA compatible controller: NVIDIA Corporation GK208 [GeForce GT 730] (rev a1)
J'ai ensuite utilisé loginctl
pour attribuer le GT 730 au siège-1 et laisser le GT 740 inchangé. Il est donc toujours affecté à siège0. seat0 a deux écrans, seat-1 n'en a qu'un.
En utilisant le pilote nouveau
XOrg, je peux utiliser les deux sièges. Les deux sièges affichent l'écran de connexion lightdm
et autorisent la connexion.
Deux problèmes ici:
service lightdm restart
), mais évidemment, cela déconnecte les deux sièges, ce qui est gênant au mieux.dmesg | grep nouveau
affiche quelques messages tels que nouveau 0000:01:00.0: fifo: SCHED_ERROR 08 []
ou nouveau 0000:01:00.0: Xorg[1250]: channel 2 killed!
Lorsque j'installe les pilotes propriétaires nvidia (apt install nvidia-384
), seul le GT 740 (affecté à seat0, équipé de deux moniteurs) est utilisable. L’autre écran du GT 730 (attribué au siège 1 et doté d’un moniteur) reste noir.
L’avantage, c’est que je n’ai plus eu de blocages sur seat0 (et évidemment plus de scintillement sur seat-1, bien que ce ne soit pas vraiment une amélioration ;-))
J'ai également essayé de passer aux pilotes en utilisant l'application de configuration des pilotes de matériel ou ubuntu-drivers
sur la console. Les deux ne répertorient qu’une seule carte NVidia, à savoir le GT 740:
$ ubuntu-drivers devices
== /sys/devices/pci0000:00/0000:00:02.0/0000:01:00.0 ==
modalias : pci:v000010DEd00000FC8sv00001458sd000036FFbc03sc00i00
vendor : NVIDIA Corporation
model : GK107 [GeForce GT 740]
driver : nvidia-384 - distro non-free recommended
driver : nvidia-340 - distro non-free
driver : xserver-xorg-video-nouveau - distro free builtin
== cpu-microcode.py ==
driver : AMD64-microcode - distro non-free
Mon objectif est de faire fonctionner les deux sièges sans bloquer ni scintiller. Je ne me soucie pas vraiment de savoir si cela est réalisé avec des pilotes nouveau ou nvidia.
Je n'ai pas actuellement de fichier Xorg.conf ni de modification de la configuration de lightdm, car je ne savais simplement pas quoi y mettre. comment y parvenir.
Des idées?
Merci d'avance, Patrick
OK, j'ai finalement réussi à le faire fonctionner.
Cette section est ici un peu comme "commencer" pour les autres, et comme un petit "aide-mémoire" pour moi-même ... Ce n'est pas la seule et peut-être même pas la meilleure façon de le faire, c'est juste comme j'ai fait il.
loginctl attach seat1 /dev/...
). Ceci assigne automatiquement la souris et le clavier qui sont connectés au hub.Exécutez loginctl seat-status seat1
. Voici à quoi ça ressemble ici:
seat1
Sessions: *c3
Devices:
├─/sys/devices/pci0000:00/0000:00:03.0/0000:02:00.0/drm/card1
│ [MASTER] drm:card1
├─/sys/devices/pci0000:00/0000:00:03.0/0000:02:00.0/drm/renderD129
│ drm:renderD129
├─/sys/devices/pci0000:00/0000:00:03.0/0000:02:00.1/sound/card2
│ sound:card2 "NVidia"
│ ├─/sys/devices/pci0000:00/0000:00:03.0/0000:02:00.1/sound/card2/input20
│ │ input:input20 "HDA NVidia HDMI/DP,pcm=3"
│ └─/sys/devices/pci0000:00/0000:00:03.0/0000:02:00.1/sound/card2/input21
│ input:input21 "HDA NVidia HDMI/DP,pcm=7"
├─/sys/devices/pci0000:00/0000:00:04.0/0000:03:00.0/usb8
│ usb:usb8
│ ├─/sys/devices/pci0000:00/0000:00:04.0/0000:03:00.0/usb8/8-1
│ │ usb:8-1
│ │ ├─/sys/devices/pci0000:00/0000:00:04.0/0000:03:00.0/usb8/8-1/8-1.3
│ │ │ usb:8-1.3
│ │ ├─/sys/devices/pci0000:00/0000:00:04.0/0000:03:00.0/usb8/8-1/8-1.4/8-1.4:1.0/0003:046A:B102.0004/input/input5
│ │ │ input:input5 "HOLTEK USB Wireless Device"
│ │ └─/sys/devices/pci0000:00/0000:00:04.0/0000:03:00.0/usb8/8-1/8-1.4/8-1.4:1.1/0003:046A:B102.0005/input/input6
│ │ input:input6 "HOLTEK USB Wireless Device"
│ └─/sys/devices/pci0000:00/0000:00:04.0/0000:03:00.0/usb8/8-2
│ usb:8-2
│ └─/sys/devices/pci0000:00/0000:00:04.0/0000:03:00.0/usb8/8-2/8-2.3
│ usb:8-2.3
├─/sys/devices/pci0000:00/0000:00:04.0/0000:03:00.0/usb9
│ usb:usb9
│ ├─/sys/devices/pci0000:00/0000:00:04.0/0000:03:00.0/usb9/9-1
│ │ usb:9-1
│ │ └─/sys/devices/pci0000:00/0000:00:04.0/0000:03:00.0/usb9/9-1/9-1.3
│ │ usb:9-1.3
│ └─/sys/devices/pci0000:00/0000:00:04.0/0000:03:00.0/usb9/9-2
│ usb:9-2
│ └─/sys/devices/pci0000:00/0000:00:04.0/0000:03:00.0/usb9/9-2/9-2.3
│ usb:9-2.3
├─/sys/devices/pci0000:00/0000:00:12.0/usb4
│ usb:usb4
│ ├─/sys/devices/pci0000:00/0000:00:12.0/usb4/4-4/4-4:1.0/sound/card5
│ │ sound:card5 "Device"
│ └─/sys/devices/pci0000:00/0000:00:12.0/usb4/4-4/4-4:1.3/0003:0D8C:0014.0001/input/input2
│ input:input2 "C-Media Electronics Inc. USB Audio Device"
└─/sys/devices/pci0000:00/0000:00:12.2/usb1
usb:usb1
├─/sys/devices/pci0000:00/0000:00:12.2/usb1/1-2
│ usb:1-2
├─/sys/devices/pci0000:00/0000:00:12.2/usb1/1-3/1-3:1.0/input/input15
│ input:input15 "UVC Camera (046d:0807)"
├─/sys/devices/pci0000:00/0000:00:12.2/usb1/1-3/1-3:1.0/video4linux/video0
│ video4linux:video0 "UVC Camera (046d:0807)"
├─/sys/devices/pci0000:00/0000:00:12.2/usb1/1-3/1-3:1.2/sound/card3
│ sound:card3 "U0x46d0x807"
└─/sys/devices/pci0000:00/0000:00:12.2/usb1/1-5
usb:1-5
Je ne savais pas quoi faire à propos du scintillement de l'écran sur le siège 1 et des blocages sur le siège 0 lors de l'utilisation du nouveau pilote. Si vous cherchez une solution à ce problème, il peut être intéressant de regarder https://wiki.archlinux.org/index.php/Xorg_multiseat qui dit:
Pour éviter de déchirer cela semble aider sur presque toutes les configurations - ajoutez ceci à/etc/environment:
CLUTTER_Paint=disable-clipped-redraws:disable-culling
CLUTTER_VBLANK=True
Une autre astuce consistait à ajouter l'utilisateur au groupe video
car sinon, ils n'auraient peut-être pas accès à l'interface DRI.
C'est à peu près tout ce que je peux dire et je suis passé à l’utilisation des pilotes binaires Nvidia.
Le problème que j'avais était apparemment que le serveur X de seat0 essayait d'une manière ou d'une autre de prendre le contrôle des deux GPU même si GPU-1 était assigné à seat1.
Cela mélangeait en quelque sorte les écrans X et le serveur X pour le siège 1 ne pouvait pas trouver d’écrans utilisables.
J'ai passé des heures à bricoler avec les fichiers /etc/X11/xorg.conf.d
où je mettais de minuscules éléments de configuration comme
Section "Device"
Identifier "graphic0"
Driver "nvidia"
Option "NoLogo"
BusId "PCI:1:0:0"
MatchSeat "seat-1"
Option "Monitor-DVI-1" "monitor1"
EndSection
et
Section "ServerLayout"
Identifier "seat-1"
Screen "screen1" 0 0
InputDevice "mouse1" "CorePointer"
InputDevice "keyboard1" "CoreKeyboard"
Option "Seat" "seat-1"
Option "SingleCard" "on"
EndSection
comme conseillé par https://wiki.archlinux.org/index.php/Xorg_multiseat (beaucoup d'informations utiles là-bas, bien que cela n'ait pas résolu mon problème) ou https: // devtalk.nvidia.com/default/topic/936873/linux/-howto-multiseat-with-ubuntu-16-04-systemd-gdm-proprietary-drivers/1 (une autre discussion de haute qualité sur ce problème).
Ce qui a finalement fonctionné pour moi a été de le faire à la dure et de fournir une configuration en X pour chacun des sièges.
Donc, ma procédure était la suivante:
loginctl attach seat1 ....
pour assigner tous les périphériques requis à seat1installez les pilotes propriétaires nvidia (assurez-vous de sélectionner celui qui convient à votre système; dans le terminal, exécutez ubuntu-drivers devices
pour voir la liste des pilotes disponibles)
apt install nvida-384
nvidia-seetings
. Sélectionnez X Server Display Configuration
à gauche, cliquez sur save to X Configuration File
en bas à droite et enregistrez le fichier sous ~/xorg-template./etc/X11
, une fois en tant que xorg-seat0.conf
et une fois en tant que xorg-seat1.conf
Modifiez ces deux fichiers de configuration Xorg pour qu'ils correspondent aux configurations seat0 et seat1, respectivement. Il me suffisait de changer quelques lignes - l'adresse PCI du GPU et le nombre de moniteurs. Cependant, j’ai également modifié la dénomination des identifiants pour des raisons de clarté - je suppose que cela ne serait pas vraiment nécessaire. Ci-dessous ma config:
siège0
# xorg-seat0.conf
Section "ServerLayout"
Identifier "Layout-seat0"
Screen 0 "Screen-seat0" 0 0
InputDevice "Keyboard-seat0" "CoreKeyboard"
InputDevice "Mouse-seat0" "CorePointer"
Option "Xinerama" "0"
EndSection
Section "Files"
EndSection
Section "InputDevice"
# generated from default
Identifier "Mouse-seat0"
Driver "mouse"
Option "Protocol" "auto"
Option "Device" "/dev/psaux"
Option "Emulate3Buttons" "no"
Option "ZAxisMapping" "4 5"
EndSection
Section "InputDevice"
# generated from default
Identifier "Keyboard-seat0"
Driver "kbd"
EndSection
Section "Monitor"
# HorizSync source: edid, VertRefresh source: edid
Identifier "Monitor-seat0_1"
VendorName "Unknown"
ModelName "FUS H22-1W"
HorizSync 28.0 - 79.0
VertRefresh 50.0 - 75.0
Option "DPMS"
EndSection
Section "Device"
Identifier "Device-seat0"
Driver "nvidia"
VendorName "NVIDIA Corporation"
BoardName "GeForce GT 740"
BusID "PCI:1:0:0"
EndSection
Section "Screen"
Identifier "Screen-seat0"
Device "Device-seat0"
Monitor "Monitor-seat0_1"
DefaultDepth 24
Option "Stereo" "0"
Option "nvidiaXineramaInfoOrder" "DFP-0"
Option "metamodes" "DVI-D-0: nvidia-auto-select +0+0, DVI-D-1: nvidia-auto-select +1680+0"
Option "SLI" "Off"
Option "MultiGPU" "Off"
Option "BaseMosaic" "off"
SubSection "Display"
Depth 24
EndSubSection
EndSection
siège1
# xorg-seat1.conf
Section "ServerLayout"
Identifier "Layout-seat1"
Screen 0 "Screen-seat1" 0 0
InputDevice "Keyboard-seat1" "CoreKeyboard"
InputDevice "Mouse-seat1" "CorePointer"
Option "Xinerama" "0"
EndSection
Section "Files"
EndSection
Section "InputDevice"
# generated from default
Identifier "Mouse-seat1"
Driver "mouse"
Option "Protocol" "auto"
Option "Device" "/dev/psaux"
Option "Emulate3Buttons" "no"
Option "ZAxisMapping" "4 5"
EndSection
Section "InputDevice"
# generated from default
Identifier "Keyboard-seat1"
Driver "kbd"
EndSection
Section "Monitor"
# HorizSync source: edid, VertRefresh source: edid
Identifier "Monitor-seat1_1"
VendorName "Unknown"
ModelName "FUS H22-1W"
HorizSync 28.0 - 79.0
VertRefresh 50.0 - 75.0
Option "DPMS"
EndSection
Section "Device"
Identifier "Device-seat1"
Driver "nvidia"
VendorName "NVIDIA Corporation"
BoardName "GeForce GT 730"
BusID "PCI:2:0:0"
EndSection
Section "Screen"
Identifier "Screen-seat1"
Device "Device-seat1"
Monitor "Monitor-seat1_1"
DefaultDepth 24
Option "Stereo" "0"
Option "nvidiaXineramaInfoOrder" "DFP-0"
Option "metamodes" "DVI-D-0: nvidia-auto-select +0+0"
Option "SLI" "Off"
Option "MultiGPU" "Off"
Option "BaseMosaic" "off"
SubSection "Display"
Depth 24
EndSubSection
EndSection
Créez un nouveau fichier 10-seats.conf
dans /etc/lightdm/lightdm.conf.d/
(créez le dossier s'il n'y est pas encore) et attribuez les mises en page et les fichiers de configuration à chacun des serveurs X:
# 10-seats.conf
[Seat:seat0]
xserver-command=/usr/bin/X :0
xserver-config=/etc/X11/xorg-seat0.conf
xserver-layout=Layout-seat0
[Seat:seat1]
xserver-command=/usr/bin/X :1
xserver-config=/etc/X11/xorg-seat1.conf
xserver-layout=Layout-seat1
Comme vous le remarquerez peut-être, les fichiers .conf de xorg-seat [01] ne contiennent aucune indication sur les sièges. J'ai nommé les identifiants en utilisant les chaînes seat0 et seat1, mais cela n'a aucune pertinence.
Toutefois, dans la configuration de lightdm, il est nécessaire d’utiliser les noms que vous avez attribués aux sièges lors de leur création. seat0 ne peut pas être modifié, mais le second siège peut avoir le nom de votre choix (tant qu'il commence par seat
et est suivi de lettres, de chiffres et de _ uniquement.) Assurez-vous d’utiliser ce nom pour configurer le deuxième siège - j’ai utilisé seat1
pour simplifier les choses.
Je suis à peu près sûr que certaines choses pourraient être supprimées des fichiers de configuration X, mais je n'ai pas encore essayé de les ranger. Si vous trouvez qu'un fichier plus minimaliste fonctionne bien, n'hésitez pas à poster un commentaire ici et j'ajouterai vos informations (à moins que vous n'ayez pas envie de poster votre propre réponse, c'est-à-dire).
Par exemple, ni la souris ni le clavier configurés dans les deux fichiers de configuration X n'existent sur ma machine - ce sont des périphériques factices ajoutés par nvidia-settings
. Les périphériques physiques (souris et clavier USB sans fil) sont ajoutés à la volée car ils sont respectivement connectés à seat0 et à seat1.