He configurado una máquina con dos tarjetas de video 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)
Luego solía loginctl
asignar el GT 730 al asiento 1 y dejaba el GT 740 intacto, por lo que todavía está asignado al asiento 0. asiento0 tiene dos monitores, asiento-1 tiene solo uno.
Usando nouveau
Usando el nouveau
controlador XOrg, puedo usar ambos asientos. Ambos asientos muestran la lightdm
pantalla de inicio de sesión y permiten iniciar sesión.
Dos problemas aquí:
- seat0 se bloquea con frecuencia, aparentemente sólo cuando la sesión está bloqueada. El mouse todavía se mueve, pero no acepta entradas del teclado. Incluso el reloj deja de actualizarse.
- Esto se puede solucionar ingresando a la casilla o iniciando sesión en el asiento-1 y simplemente reiniciando lightdm (
service lightdm restart
), pero obviamente esto cierra la sesión de ambos asientos, lo cual es, en el mejor de los casos, un inconveniente. dmesg | grep nouveau
muestra un par de mensajes comonouveau 0000:01:00.0: fifo: SCHED_ERROR 08 []
onouveau 0000:01:00.0: Xorg[1250]: channel 2 killed!
- Esto se puede solucionar ingresando a la casilla o iniciando sesión en el asiento-1 y simplemente reiniciando lightdm (
- La pantalla del asiento 1 parpadea al desplazarse, por ejemplo, en una página web. Esto podría deberse a un ancho de banda de memoria de vídeo demasiado bajo segúnNueva solución de problemas: monitor en blanco, parpadeo, nieve u otros daños aleatorios en la imagen en vivo. No he investigado esto todavía.
Usando controladores propietarios de NVidia
Cuando instalo los controladores propietarios de nvidia ( apt install nvidia-384
), solo se puede utilizar el GT 740 (asignado a seat0, equipado con dos monitores). La otra pantalla del GT 730 (asignada al asiento 1, equipada con un monitor) permanece negra.
Sin embargo, lo bueno es que no experimenté más bloqueos en el asiento 0 (y obviamente no más parpadeos en el asiento 1, aunque esto no es realmente una mejora ;-))
También intenté cambiar a los controladores usando la aplicación de configuración de controladores de hardware o ubuntu-drivers
en la consola. Ambos sólo enumeran una tarjeta NVidia, concretamente la 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
Conclusión
Mi objetivo es que ambos asientos funcionen, que no se bloqueen ni parpadeen. Realmente no me importa si esto se logra usando controladores nouveau o nvidia.
Actualmente no tengo un Xorg.conf ni he modificado la configuración de lightdm porque simplemente no sabía qué poner allí... Supongo que simplemente hacer que el controlador nvidia reconozca la segunda tarjeta sería suficiente, pero no tengo idea. cómo lograr esto.
¿Algunas ideas?
Gracias de antemano patricio
Respuesta1
Bien, finalmente lo hice funcionar.
general
Esta sección está aquí como un pequeño "introducción" para otros, y como una pequeña "memoria" para mí... Esta no es la única y tal vez ni siquiera la mejor manera de hacerlo, es simplemente la forma en que lo hice yo. él.
- Consigue dos concentradores USB y coloca uno en cada uno de los dos asientos. Conéctelos a dos puertos USB de la máquina.
- Obtenga una tarjeta de sonido USB (un pequeño dispositivo USB con un conector de entrada de micrófono y otro de salida de línea) y conéctela a otro puerto USB de su máquina. Esto supone que ya hay otro dispositivo de sonido (a bordo) que se utilizará en el asiento0.
- Obtenga dos combinaciones de teclado y mouse inalámbricos USB y conecte una de las llaves USB en cada uno de los dos concentradores USB.
- Asigne los concentradores a los respectivos asientos (
loginctl attach seat1 /dev/...
). Esto asigna automáticamente el mouse y el teclado que están conectados al concentrador. - Asigne la tarjeta de sonido USB al asiento 1
- Asigne una de las tarjetas Nvidia (todas, incluidos DRM y dispositivos de sonido) al asiento1.
- Si tiene otros dispositivos que no están conectados al concentrador ya asignado, asígnelos también.
Correr
loginctl seat-status seat1
. Así es como se ve aquí: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
nuevo
No descubrí qué hacer con la pantalla que parpadea en el asiento 1 y se bloquea en el asiento 0 cuando uso el controlador nouveau. En caso de que esté buscando una solución para este mismo problema, podría valer la pena echarle un vistazo https://wiki.archlinux.org/index.php/Xorg_multiseatque dice:
Para evitar roturas, esto parece ayudar en casi todas las configuraciones; agregue esto a /etc/environment:
CLUTTER_PAINT=disable-clipped-redraws:disable-culling
CLUTTER_VBLANK=True
Otra sugerencia fue agregar el usuario al grupo video
porque, de lo contrario, es posible que no tenga acceso a la interfaz DRI.
Esto es todo lo que puedo decir y cambié a usar controladores binarios de Nvidia.
NVIDIA
Aparentemente, el problema que tuve fue que el servidor X del asiento0 de alguna manera intentaba tomar el control de ambas GPU a pesar de que la GPU-1 estaba asignada al asiento1.
Esto de alguna manera mezcló las pantallas X y el servidor X para el asiento 1 no pudo encontrar ninguna pantalla utilizable.
Pasé horas jugueteando con /etc/X11/xorg.conf.d
archivos donde puse pequeñas piezas de configuración como
Section "Device"
Identifier "graphic0"
Driver "nvidia"
Option "NoLogo"
BusId "PCI:1:0:0"
MatchSeat "seat-1"
Option "Monitor-DVI-1" "monitor1"
EndSection
y
Section "ServerLayout"
Identifier "seat-1"
Screen "screen1" 0 0
InputDevice "mouse1" "CorePointer"
InputDevice "keyboard1" "CoreKeyboard"
Option "Seat" "seat-1"
Option "SingleCard" "on"
EndSection
según lo aconsejado porhttps://wiki.archlinux.org/index.php/Xorg_multiseat(hay mucha información útil allí, aunque no resolvió mi problema) ohttps://devtalk.nvidia.com/default/topic/936873/linux/-howto-multiseat-with-ubuntu-16-04-systemd-gdm-proprietary-drivers/1(otra discusión de alta calidad sobre este tema).
Lo que finalmente funcionó para mí fue hacerlo de la manera más difícil y proporcionar una configuración X para cada uno de los asientos.
Entonces mi procedimiento fue:
- utilizar
loginctl attach seat1 ....
para asignar todos los dispositivos necesarios al asiento 1 instale los controladores propietarios de nvidia (asegúrese de seleccionar el correcto para su sistema; ejecute en la terminal
ubuntu-drivers devices
para ver la lista de controladores disponibles)apt install nvida-384
- reiniciar
- inicie sesión en seat0 y ejecute
nvidia-seetings
. SeleccioneX Server Display Configuration
a la izquierda, haga clic ensave to X Configuration File
la parte inferior derecha y guarde el archivo como ~/xorg-template - Copie el archivo de configuración ~/xorg-template dos veces en
/etc/X11
, una vez comoxorg-seat0.conf
y otra comoxorg-seat1.conf
Modifique estos dos archivos de configuración de Xorg para que coincidan con la configuración de asiento0 y asiento1 respectivamente. Solo tuve que cambiar un par de líneas: la dirección PCI de la GPU y la cantidad de monitores. Sin embargo, también cambié el nombre de los Identificadores en aras de la claridad; supongo que eso no sería realmente necesario. A continuación se muestra mi configuración:
asiento0
# 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
asiento1
# 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
Cree un nuevo archivo
10-seats.conf
(/etc/lightdm/lightdm.conf.d/
cree la carpeta si aún no está allí) y asigne los diseños y archivos de configuración a cada uno de los servidores 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
- reiniciar
Como podrá observar, los archivos xorg-seat[01].conf no contienen ninguna pista sobre los asientos. Nombré los Identificadores usando las cadenas asiento0 y asiento1, pero eso no tiene relevancia.
Pero en la configuración de lightdm es necesario utilizar los nombres que asignó a los asientos al crearlos. El asiento 0 no se puede cambiar, pero el segundo asiento puede tener cualquier nombre que usted elija (siempre que comience con seat
letras, dígitos, - y _ únicamente y vaya seguido de ellos). Asegúrate de usar ese nombre para configurar el segundo asiento; yo solía seat1
hacerlo simple.
Estoy bastante seguro de que hay cosas que podrían eliminarse de los archivos de configuración de X, pero todavía no he intentado ordenarlas. Si encuentra que un archivo más minimalista funciona bien, no dude en publicar un comentario aquí y agregaré su información (bueno, a menos que no tenga ganas de publicar su propia respuesta completa, claro está).
Por ejemplo, ni el mouse ni el teclado configurados en ambos archivos de configuración X existen en mi máquina; son dispositivos ficticios agregados por nvidia-settings
. Los dispositivos físicos (ratón y teclado inalámbricos USB) se agregan sobre la marcha porque están conectados al asiento0 y al asiento1 respectivamente.