OK, finalmente consegui que funcionasse.
geral
Esta seção é aqui como um pequeno "começo" para os outros, e como um pouco "aide-mémoire" para mim ... Esta não é a única e talvez nem a melhor maneira de fazer isso, é apenas o maneira como eu fiz isso.
- Obtenha dois hubs USB e coloque um em cada um dos dois lugares. Conecte-os em duas portas USB da máquina.
- Obtenha uma placa de som USB (pequena dongle USB com um conector de entrada de microfone e um conector de saída de linha) e conecte-a a outra porta USB da sua máquina. Isso pressupõe que já existe outro dispositivo de som (on-board) que deve ser usado no seat0.
- Obtenha dois combos de mouse / teclado sem fio USB e conecte um dos dongles USB em cada um dos dois hubs USB.
- Atribua os hubs aos respectivos lugares (
loginctl attach seat1 /dev/...
). Isso atribui automaticamente o mouse e o teclado conectados ao hub. - Atribuir a placa de som USB ao banco1
- Atribua uma das placas Nvidia (todas elas, incluindo dispositivos DRM e de som) ao banco1.
- Se você tiver outros dispositivos que não estejam conectados ao hub já atribuído, atribua-os também.
-
Execute
loginctl seat-status seat1
. É assim que parece aqui: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
nouveau
Eu não descobri o que fazer com a tela piscando no assento1 e os travamentos no assento0 ao usar o driver Nouveau. Caso você esteja procurando uma solução para esse problema, vale a pena dar uma olhada no link que diz:
Para evitar rasgar, isso parece ajudar em quase todas as configurações - adicione isso ao / etc / environment:
CLUTTER_PAINT=disable-clipped-redraws:disable-culling
CLUTTER_VBLANK=True
Outra dica foi adicionar o usuário ao grupo video
porque senão eles podem não ter acesso à interface DRI.
Isso é tudo o que posso dizer, e mudei para o uso de drivers binários da Nvidia.
NVidia
O problema que eu tive foi aparentemente que o servidor X do seat0 estava, de alguma forma, tentando assumir o controle de ambas as GPUs, embora o GPU-1 estivesse atribuído ao seat1.
Isso de alguma forma confundiu as telas X e o servidor X da sede 1 não encontrou nenhuma tela utilizável.
Eu passei horas brincando com /etc/X11/xorg.conf.d
arquivos onde eu coloquei minúsculas configurações como
Section "Device"
Identifier "graphic0"
Driver "nvidia"
Option "NoLogo"
BusId "PCI:1:0:0"
MatchSeat "seat-1"
Option "Monitor-DVI-1" "monitor1"
EndSection
e
Section "ServerLayout"
Identifier "seat-1"
Screen "screen1" 0 0
InputDevice "mouse1" "CorePointer"
InputDevice "keyboard1" "CoreKeyboard"
Option "Seat" "seat-1"
Option "SingleCard" "on"
EndSection
como recomendado pelo link (muitas informações úteis, embora não tenham resolvido o meu problema) ou link (outra discussão de alta qualidade sobre este assunto).
O que finalmente funcionou para mim foi fazer da maneira mais difícil e fornecer uma configuração X para cada um dos assentos.
Então, meu procedimento foi:
- use
loginctl attach seat1 ....
para atribuir todos os dispositivos necessários ao seat1 -
instale drivers nvidia proprietários (certifique-se de selecionar o caminho certo para o seu sistema; na execução do terminal
ubuntu-drivers devices
para ver a lista de drivers disponíveis)apt install nvida-384
- reinicializar
- faça o login no seat0 e execute
nvidia-seetings
. SelecioneX Server Display Configuration
à esquerda, clique emsave to X Configuration File
bottom-right e salve o arquivo como ~ / xorg-template - Copie o arquivo de configuração ~ / xorg-template duas vezes para
/etc/X11
, uma vez comoxorg-seat0.conf
e uma vez comoxorg-seat1.conf
-
Modifique esses dois arquivos de configuração do Xorg para corresponder à configuração de seat0 e seat1, respectivamente. Eu só tive que mudar algumas linhas - o endereço PCI da GPU e o número de monitores. No entanto, também alterei a nomeação dos Identificadores por uma questão de clareza - suponho que isso não seria realmente necessário. Abaixo está minha configuração:
-
seat0
# 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
-
seat1
# 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
-
-
Crie um novo arquivo
10-seats.conf
in/etc/lightdm/lightdm.conf.d/
(crie a pasta se ainda não estiver lá) e atribua os layouts e arquivos de configuração a cada um dos 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
- reinicializar
Como você pode notar, os arquivos xorg-seat [01] .conf não contêm nenhuma sugestão para assentos. Eu nomeei os Identificadores usando as cadeias seat0 e seat1, mas isso não tem relevância.
Mas, na configuração lightdm, é necessário usar os nomes atribuídos aos assentos ao criá-los. seat0 não pode ser alterado, mas o segundo assento pode ter qualquer nome que você escolher (desde que comece com seat
e seja seguido por letras, dígitos, - e _ somente). Certifique-se de usar esse nome para configurar o segundo lugar - usei seat1
para simplificar.
Tenho certeza de que há coisas que podem ser removidas dos arquivos de configuração do X, mas ainda não tentei organizá-las. Se você encontrar um arquivo mais minimalista para funcionar bem, sinta-se à vontade para postar um comentário aqui e eu adicionarei suas informações (bem, a menos que você não queira postar sua própria resposta inteira).
Por exemplo, nem o mouse nem o teclado configurado em ambos os arquivos de configuração do X existem na minha máquina - eles são dispositivos falsos adicionados por nvidia-settings
.Os dispositivos físicos (mouse e teclado sem fio USB) são adicionados em tempo real, porque estão conectados a seat0 e seat1, respectivamente.