Como posso configurar o multisseat com apenas uma placa gráfica física?


16

Eu tenho um computador Ubuntu rodando 16.04 e só tenho uma placa gráfica.

Especificações

Meu irmão e eu brigamos constantemente sobre quem o usa, então estou tentando fazer um favor a todos e instalar vários assentos.

  • Eu estaria seat0com a porta VGA, um mouse, um teclado e os fones de ouvido na parte de trás do computador.

  • Ele seria seat1, com a porta DVI-D, um mouse, um teclado e os fones de ouvido na parte frontal do computador.

  • Compartilharíamos o dongle Wi-Fi para conectar-se à Internet.

Estou completamente sem saber como fazer isso. Quais arquivos eu crio, para onde eles vão e o que eu coloco neles? Uma resposta bem formatada (não um guia on-line) seria legal.

A saída de lspci:

00:00.0 Host bridge: Intel Corporation 4th Gen Core Processor DRAM Controller (rev 06)
00:01.0 PCI bridge: Intel Corporation Xeon E3-1200 v3/4th Gen Core Processor PCI Express x16 Controller (rev 06)
00:02.0 VGA compatible controller: Intel Corporation Xeon E3-1200 v3/4th Gen Core Processor Integrated Graphics Controller (rev 06)
00:03.0 Audio device: Intel Corporation Xeon E3-1200 v3/4th Gen Core Processor HD Audio Controller (rev 06)
00:14.0 USB controller: Intel Corporation 8 Series/C220 Series Chipset Family USB xHCI (rev 05)
00:16.0 Communication controller: Intel Corporation 8 Series/C220 Series Chipset Family MEI Controller #1 (rev 04)
00:1a.0 USB controller: Intel Corporation 8 Series/C220 Series Chipset Family USB EHCI #2 (rev 05)
00:1b.0 Audio device: Intel Corporation 8 Series/C220 Series Chipset High Definition Audio Controller (rev 05)
00:1c.0 PCI bridge: Intel Corporation 8 Series/C220 Series Chipset Family PCI Express Root Port #1 (rev d5)
00:1c.1 PCI bridge: Intel Corporation 8 Series/C220 Series Chipset Family PCI Express Root Port #2 (rev d5)
00:1c.2 PCI bridge: Intel Corporation 8 Series/C220 Series Chipset Family PCI Express Root Port #3 (rev d5)
00:1d.0 USB controller: Intel Corporation 8 Series/C220 Series Chipset Family USB EHCI #1 (rev 05)
00:1f.0 ISA bridge: Intel Corporation C220 Series Chipset Family H81 Express LPC Controller (rev 05)
00:1f.2 SATA controller: Intel Corporation 8 Series/C220 Series Chipset Family 6-port SATA Controller 1 [AHCI mode] (rev 05)
00:1f.3 SMBus: Intel Corporation 8 Series/C220 Series Chipset Family SMBus Controller (rev 05)
01:00.0 PCI bridge: PLX Technology, Inc. PEX 8609 8-lane, 8-Port PCI Express Gen 2 (5.0 GT/s) Switch with DMA (rev ba)
01:00.1 System peripheral: PLX Technology, Inc. PEX 8609 8-lane, 8-Port PCI Express Gen 2 (5.0 GT/s) Switch with DMA (rev ba)
02:01.0 PCI bridge: PLX Technology, Inc. PEX 8609 8-lane, 8-Port PCI Express Gen 2 (5.0 GT/s) Switch with DMA (rev ba)
02:05.0 PCI bridge: PLX Technology, Inc. PEX 8609 8-lane, 8-Port PCI Express Gen 2 (5.0 GT/s) Switch with DMA (rev ba)
02:07.0 PCI bridge: PLX Technology, Inc. PEX 8609 8-lane, 8-Port PCI Express Gen 2 (5.0 GT/s) Switch with DMA (rev ba)
02:09.0 PCI bridge: PLX Technology, Inc. PEX 8609 8-lane, 8-Port PCI Express Gen 2 (5.0 GT/s) Switch with DMA (rev ba)
03:00.0 USB controller: ASMedia Technology Inc. ASM1042A USB 3.0 Host Controller
04:00.0 USB controller: ASMedia Technology Inc. ASM1042A USB 3.0 Host Controller
05:00.0 USB controller: ASMedia Technology Inc. ASM1042A USB 3.0 Host Controller
06:00.0 USB controller: ASMedia Technology Inc. ASM1042A USB 3.0 Host Controller
08:00.0 USB controller: ASMedia Technology Inc. ASM1042A USB 3.0 Host Controller
09:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller (rev 0c)

A saída de ls /dev/input/by-path/:

pci-0000:00:14.0-usb-0:1:1.2-event-kbd
pci-0000:00:14.0-usb-0:2:1.0-event-kbd
pci-0000:00:14.0-usb-0:7:1.0-event-mouse
pci-0000:00:14.0-usb-0:1:1.2-event-mouse
pci-0000:00:14.0-usb-0:3.1:1.0-event-mouse
pci-0000:00:14.0-usb-0:7:1.0-mouse
pci-0000:00:14.0-usb-0:1:1.2-mouse
pci-0000:00:14.0-usb-0:3.1:1.0-mouse
platform-eeepc-wmi-event

11
Eu nunca tentei, mas você olhou para o WIKI ?
ridgy 2/09/16

@ridgy Isso é para multi cartões
Soren

11
Existem mais algumas soluções (como Xephyr, veja a resposta a esta pergunta ). Mas para aplicativos intensivos em GPU, como jogos, nenhum deles terá desempenho suficiente, tanto quanto eu vejo, nem servidores X remotos, pois não podem usar a GPU do computador que executa o cliente X para renderização.
ridgy

xdmcp vai usar o motor de renderização local e exibir remotamente, embora você não pode obter alguns dos mais extravagante xtenstions mais modernos, como glamour ao trabalho
Amias

Respostas:


7

Portanto, este é um guia antigo, mas ainda pode funcionar. MultiSeatOneCard .

Algumas notas antes de começar a trazer instruções:

  • Toda a gdmconfiguração que você deseja fazer pode nem ser necessária. Se você possui o GNOME, você já possui gdm(e uma versão muito mais recente). O Unity usa lightdm, o que parece não funcionar. Você deve instalar gdme usá-lo para experimentar este guia.

  • Apenas mais um aviso: GUIA ANTIGO. Pode não funcionar, pode quebrar o Ubuntu, pode explodir sua máquina (não é claro). Por favor, tenha cuidado e faça as coisas de volta.

Agora para o guia

O wiki sugere desativar a tela inicial com o seguinte. Não sei se o procedimento ainda funciona ou não.

Muita coisa pode dar errado com essa configuração e a tela inicial sofisticada durante a inicialização não ajuda. Para desativá-lo (talvez temporariamente), edite o arquivo / etc / default / grub e altere a atribuição GRUB_CMDLINE_LINUX_DEFAULT de quiet splash para nomodeset noplymouth. Em seguida, execute o sudo update-grub.

A próxima parte, sobre a "área de trabalho expandida", provavelmente também pode ser ignorada. Basta conectar os dois monitores e configurá-los para "modo estendido" nas configurações do seu monitor.

Agora, para algumas configurações.

Primeiro, encontre em /etc/gdm/gdm.conf, na seção [servers], uma linha começando com 0 = .... (sem # no início da linha). Coloque um # na frente dele.

Isso deve ser possível sem muitos problemas.

Depois edite /etc/gdm/gdm.conf-custom. Encontre a seção [security] e adicione uma linha PamStack = gdm-2.20.

É aqui que você pode ter um problema. Em vez de 2.20, pode ser necessário tentar 3.18 (isto é para 16.04).

encontre a seção [xdmcp] e adicione uma linha Enable = true.

Isso não deve causar problemas.

O XDMCP não é um protocolo particularmente seguro, portanto, é uma boa idéia fazer o gdm recusar conexões de outros computadores. Adicione uma linha gdm: 127. * em /etc/hosts.allow e uma linha gdm: ALL em /etc/hosts.deny.

Isso, você pode optar por não fazer. Se você se preocupa com segurança, sugiro que faça, mas, caso contrário, acho que você pode deixar.

Agora reinicie gdmreiniciando (provavelmente a maneira mais fácil). Se você vir a tela de login do GDM, algo está acontecendo. Verifique o guia original e ajuste algumas configurações.

Se você não tiver uma tela de login, acesse um TTY e execute X -query 127.0.0.1. Se o GDM aparecer, mate-o (volte para o TTY e mate-o lá).

Faça um novo usuário chamado monitor:

addgroup --gid 983 monitor
adduser --uid 983 --gid 983 monitor

Crie um arquivo (o guia não tem especificações de nome) /etc/udev/rules.d/my.rulese insira o seguinte:

SUBSYSTEM=="input", OWNER="monitor", GROUP="monitor"

Algumas instalações de pacotes:

apt-get install x11-utils xserver-xephyr

Precisamos separar os monitores com alguns aliases:

ln -s xmessage /usr/bin/xmessage0
ln -s xmessage /usr/bin/xmessage1

Efetue login no monitorusuário no TTY e crie ~/.xsession.

Coloque isso dentro:

runscreen () {
    # $1 = number
    # $2 = geometry
    local xpid winid k
    while :; do
        xmessage$1 -geometry $2 "Window $1" &
        xpid=$!
        k=10
        while \
            winid=`xwininfo -name xmessage$1|grep 'Window id'|cut -d' ' -f4` \
            && [ $k -gt 0 -a ! "$winid" ]
        do
            sleep 1
            k=$(($k - 1))
        done
        if [ "$winid" ]; then
            Xephyr :1$1 -parent "$winid" -dpms -keybd "evdev,,device=$3,$xkb" -mouse "evdev,,device=$4" -query 127.0.0.1 
        fi
        kill $xpid
        sleep 3
        kill -9 $xpid
    done 
}

# For some reason I was unable to set the following in xorg.conf
# We need to turn off power management of the main X server because it doesn't
# see either of the keyboards and the mice so it will enter power-saving mode
# after 10 minutes
xset s off
xset dpms 0 0 0
xset -dpms

xkb='xkbrules=xorg,xkbmodel=evdev,xkblayout=us'

# PS/2 keyboard and mouse
kbd1=`ls /dev/input/by-path/platform-*-event-kbd`
mouse1=`ls /dev/input/by-path/platform-*-event-mouse`

# USB keyboard and mouse
kbd2=`ls /dev/input/by-path/pci-*-event-kbd`
mouse2=`ls /dev/input/by-path/pci-*-event-mouse`

runscreen 1 1280x1024+1920+0 "$kbd2" "$mouse2" &
runscreen 0 1920x1080+0+0 "$kbd1" "$mouse1"

Lembre-se de editá-lo para refletir suas resoluções.

Executar startxcomo omonitor usuário e veja se funciona.

Isso precisa ser feito para iniciar na inicialização, se funcionar, portanto, adicione-o ao final de ~/.profile(para a conta do monitor):

if [ "`tty`" = /dev/tty6 ]; then
    exec startx
fi

Mate a GUI e vá para TTY6. Entrar comomonitor e deve iniciar.

Se isso funcionar, edite o arquivo /etc/init/tty6.confcomo root e substitua a linha começando /sbin/gettypor

exec /bin/login -f monitor tty6 </dev/tty6 >/dev/tty6 2>&1

Se funcionar, mas você também quiser separar o áudio, o MultiSeatX vinculado guia tem algumas coisas para você.

Lembre-se de que isso pode não funcionar. Eu digitei isso rapidamente e espero editá-lo para ficar um pouco mais claro, se necessário. Adaptei partes do guia para ficarem mais atualizadas e aumentarem as chances de sucesso.

Boa sorte!


Algum conhecimento sobre como portar para LightDM?
Soren

@moo_we_all_do não, nenhum. Só posso ter uma idéia específica do que esse procedimento faz e por que é necessário, mas não sei como o GDM funciona versus o LightDM. Não é realmente um problema usar o GDM em vez do LightDM. Sua tela de login muda e é sobre isso (visivelmente).
TheWanderer

3

Parece muito legal, então eu procurei e encontrei esta entrada do wiki como vinculada a esta entrada da wikipedia . Basicamente, usa uma ferramenta chamada xephyr para organizar entradas / saídas.

A entrada é bastante antiga e atualizada apenas para o ubuntu 12.04, mas o xephyr ainda está nos repositórios padrão (apenas testei sua presença no meu computador). As edições de configuração parecem complexas, mas bem diretas, ainda podem funcionar. Aqui está um blog que data de 2014, que também nos deixa esperançosos.

Por favor, deixe-nos saber como você se sai!


Bom obrigado! Você pode postar uma versão editada das instruções que se encaixam na minha configuração na sua resposta?
Soren

Eu não acho que isso seja possível. Você precisará executar quase todas as etapas (exceto a instalação inicial). O gdm agora é substituído pelo lightdm. Talvez você tenha sorte com o assistente mencionado na entrada ? Mas também que se parece ultrapassada ...
Jeroen

1

Eu não acho que isso seja possível porque você não pode ter dois conjuntos de dispositivos de entrada. É possível que uma ferramenta como a sinergia possa ajudar aqui, mas será uma bagunça.

Você pode adquirir outra máquina e usá-la como o X Terminal. Isso só precisa ser rápido o suficiente para atualizar a tela, então peça aos seus amigos o antigo PC. Se você configurar sua máquina original para executar o XDMCP, ela permitirá que a outra máquina efetue login em sua própria área de trabalho.

Essa funcionalidade está programada para ser removida do ubuntu quando o X windows for substituído pelo Mir, provavelmente será por volta da próxima versão do LTS.

Aqui está o guia do ubuntu para o XDMCP - https://wiki.ubuntu.com/xdmcp


Temos apenas um bom computador. Nossos outros computadores estão lentos. Isso funcionaria?
Soren

eu fiz isso com um laptop pré-pentium e uma placa Cisco cisco aironet
Amias

Você pode adicionar instruções a esta resposta? Por exemplo, "Editar (arquivo) para dizer o seguinte: .."
Soren

As instruções xdmcp são todas abordadas nesse guia e são muito longas para serem reproduzidas aqui. A configuração do xdmcp não é trivial.
Amias
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.