Come posso impostare il multiseat con una sola scheda grafica fisica?


16

Ho un computer Ubuntu con 16.04 e ho solo una scheda grafica.

Specifiche

Io e mio fratello litighiamo costantemente su chi può usarlo, quindi sto provando a fare un favore a tutti e installando il multiseat.

  • Sarei seat0, con la porta VGA, un mouse, una tastiera e le prese per le cuffie sul retro del computer.

  • Sarebbe seat1, con la porta DVI-D, un mouse, una tastiera e le prese per le cuffie nella parte anteriore del computer.

  • Condividiamo il dongle Wi-Fi per connetterci a Internet.

Sono completamente in perdita su come farlo. Quali file creo, dove vanno e cosa inserisco? Una risposta ben formattata (non una guida online) sarebbe buona.

L'output di 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)

L'output di 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

1
Non ho mai provato, ma hai guardato il WIKI ?
ridicolo

@ridgy Questo è per le carte multiple
Soren,

1
Ci sono altre soluzioni (come Xephyr, guarda la risposta a questa domanda ). Ma per le applicazioni ad alta intensità di GPU come i giochi nessuna di queste sarà sufficientemente preformante, per quanto vedo, né i server X remoti in quanto non possono utilizzare la GPU del computer che esegue il client X per il rendering.
ridicolo

xdmcp utilizzerà il motore di rendering locale e verrà visualizzato in remoto, anche se potresti non far funzionare alcune delle estensioni più moderne e fantasiose come il glamour per funzionare
Amias,

Risposte:


7

Quindi questa è una vecchia guida, ma potrebbe ancora funzionare. MultiSeatOneCard .

Alcune note prima di iniziare a portare istruzioni:

  • Tutta la gdmconfigurazione che vuole che tu possa fare potrebbe non essere nemmeno necessaria. Se hai GNOME, hai già gdm(e una versione molto più recente). Unity utilizza lightdm, che sembra che potrebbe non funzionare. È necessario installarlo gdme utilizzarlo per provare questa guida.

  • Solo un altro avvertimento: VECCHIA GUIDA. Potrebbe non funzionare, potrebbe spezzare Ubuntu, potrebbe far esplodere la tua macchina (non proprio ovviamente). Per favore, stai attento e torna indietro.

Ora per la guida

Il wiki suggerisce di disabilitare la schermata iniziale con quanto segue. Non so se la procedura funziona ancora o no.

Molto può andare storto con questa configurazione e la schermata iniziale di fantasia durante l'avvio non aiuta. Per disabilitarlo (forse temporaneamente) modifica / etc / default / grub e cambia l'assegnazione GRUB_CMDLINE_LINUX_DEFAULT da splash silenzioso a nomodeset noplymouth. Quindi eseguire sudo update-grub.

Probabilmente anche la parte successiva, relativa al "desktop espanso", può essere saltata. Basta collegare entrambi i monitor e impostarli su "modalità estesa" nelle impostazioni del monitor.

Ora, per qualche configurazione.

Innanzitutto, trova in /etc/gdm/gdm.conf, nella sezione [server] una riga che inizia con 0 = .... (senza # all'inizio della riga). Metti un # davanti.

Ciò dovrebbe essere possibile senza troppi problemi.

Quindi modifica /etc/gdm/gdm.conf-custom. Trova la sezione [sicurezza] e aggiungi una riga PamStack = gdm-2.20.

Questo è dove potresti avere un problema. Invece di 2.20, potrebbe essere necessario provare 3.18 (questo è per 16.04).

trova la sezione [xdmcp] e aggiungi una riga Enable = true.

Ciò non dovrebbe causare problemi.

XDMCP non è un protocollo particolarmente sicuro, quindi è una buona idea fare in modo che gdm rifiuti le connessioni da altri computer. Aggiungi una riga gdm: 127. * in /etc/hosts.allow e una riga gdm: ALL in /etc/hosts.deny.

Questo, puoi scegliere di non farlo. Se ti interessa la sicurezza, ti suggerisco di farlo, ma per il resto, penso che tu possa lasciarlo.

Ora riavvia gdmriavviando (probabilmente il modo più semplice). Se vedi la schermata di accesso GDM, qualcosa è successo. Controlla la guida originale e modifica alcune impostazioni.

Se non hai una schermata di accesso, accedi a un TTY ed esegui X -query 127.0.0.1. Se arriva GDM, uccidilo (torna al TTY e uccidilo lì).

Crea un nuovo utente chiamato monitor:

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

Crea un file (la guida non ha specifiche di nome) /etc/udev/rules.d/my.rulese inserisci quanto segue:

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

Alcune installazioni di pacchetti:

apt-get install x11-utils xserver-xephyr

Dobbiamo separare i monitor con alcuni alias:

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

Accedi monitorall'utente nel TTY e crea ~/.xsession.

Metti questo 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"

Ricorda di modificarlo per riflettere le tue risoluzioni.

Esegui startxcome monitorutente e vedi se funziona.

Questo deve essere fatto per iniziare all'avvio se funziona, quindi aggiungilo alla fine di ~/.profile(per l'account monitor):

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

Uccidi la GUI e vai a TTY6. Accedi come monitore dovrebbe avviarsi.

Se funziona, modifica il file /etc/init/tty6.confcome root e sostituisci la riga che inizia /sbin/gettycon

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

Se funziona, ma vuoi anche separare l'audio, la guida MultiSeatX collegata ha alcune cose per te.

Ricorda che potrebbe non funzionare. L'ho scritto abbastanza velocemente e spero di modificarlo per essere un po 'più chiaro se necessario. Ho adattato parti della guida per essere più aggiornato e aumentare le possibilità di successo.

In bocca al lupo!


Qualche conoscenza sul porting su LightDM?
Soren,

@moo_we_all_do no, niente affatto. Posso solo avere un'idea in qualche modo specifica di ciò che questa procedura fa e del perché è necessaria, ma non so come funziona GDM rispetto a LightDM. Tuttavia, non è davvero un problema usare GDM invece di LightDM. La schermata di accesso cambia e questo è tutto (visibilmente).
TheWanderer,

3

Sembra molto bello, quindi ho sfogliato e ho trovato questa voce wiki come collegata da questa voce di Wikipedia . In pratica utilizza uno strumento chiamato xephyr per organizzare input / output.

La voce è piuttosto vecchia e aggiornata solo per Ubuntu 12.04, ma Xephyr è ancora nei repository standard (ho appena testato la sua presenza sul mio computer). Le modifiche alla configurazione sembrano complesse ma piuttosto semplici, potrebbe ancora funzionare. Ecco un blog risalente al 2014, che fa anche sperare.

Per favore facci sapere come stai!


Bene grazie! Puoi pubblicare una versione ridotta delle istruzioni che si adattano alla mia configurazione nella tua risposta?
Soren,

Non penso sia nemmeno possibile. Dovrai eseguire quasi tutti i passaggi (tranne l'installazione iniziale), inoltre gdm è ora sostituito da lightdm. Forse hai fortuna con il mago menzionato nella voce ? Ma anche quello sembra obsoleto ...
Jeroen

1

Non credo sia possibile perché non puoi avere due set di dispositivi di input. È possibile che uno strumento come la sinergia possa aiutare qui, ma sarà disordinato.

Potresti ottenere un altro computer e usarlo come X Terminal, questo dovrebbe essere abbastanza veloce per aggiornare lo schermo, quindi chiedi ai tuoi amici per il loro vecchio PC. Se configuri la tua macchina originale per eseguire XDMCP, consentirà all'altra macchina di accedere al proprio desktop.

Questa funzionalità è programmata per essere rimossa da Ubuntu quando X windows viene sostituito con Mir, probabilmente sarà all'incirca al momento della prossima versione di LTS.

Ecco la guida di Ubuntu a XDMCP - https://wiki.ubuntu.com/xdmcp


Abbiamo solo 1 buon computer. I nostri altri computer sono lenti. Questo funzionerebbe?
Soren,

l'ho fatto con un laptop pre pentium e una scheda wifi aironet cisco
Amias,

Puoi aggiungere istruzioni a questa risposta? Ad esempio "Modifica (file) per dire questo: .."
Soren

ho, le istruzioni xdmcp sono tutte coperte in quella guida e sono troppo lunghe per essere riprodotte qui. La configurazione di xdmcp non è banale.
Amias,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.