Wie kann ich Multiseat mit nur einer physischen Grafikkarte einrichten?

16

Ich habe einen Ubuntu-Computer mit 16.04 und ich habe nur eine Grafikkarte.

Technische Daten

Mein Bruder und ich streiten uns ständig darum, wer es benutzen darf. Deshalb versuche ich, allen einen Gefallen zu tun und Multiseat zu installieren.

  • Ich würde seat0mit dem VGA-Anschluss, einer Maus, einer Tastatur und den Kopfhörerbuchsen auf der Rückseite des Computers sein.

  • Er würde seat1mit dem DVI-D-Anschluss eine Maus, eine Tastatur und die Kopfhöreranschlüsse an der Vorderseite des Computers haben.

  • Wir würden den WLAN-Dongle teilen, um eine Verbindung zum Internet herzustellen.

Ich bin völlig ratlos, wie das geht. Welche Dateien erstelle ich, wohin gehe ich und was lege ich darin ab? Eine gut formatierte Antwort (kein Online-Ratgeber) wäre schön.

Die Ausgabe von 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)

Die Ausgabe von 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
Soren
quelle
1
Ich habe es nie versucht, aber hast du dir das WIKI angesehen ?
ridgy
@ridgy Das ist für Multi-Karten
Soren
1
Es gibt einige weitere Lösungen (wie Xephyr, siehe die Antwort auf diese Frage ). Bei GPU-intensiven Anwendungen wie Spielen sind jedoch meines Erachtens weder diese noch Remote-X-Server ausreichend leistungsfähig, da sie nicht die GPU des Computers verwenden können, auf dem der X-Client zum Rendern ausgeführt wird.
ridgy
xdmcp wird die lokale Rendering-Engine verwenden und remote anzeigen, obwohl Sie einige der schickeren, moderneren xtenstions wie Glamour möglicherweise nicht zum Laufen bringen
Amias

Antworten:

7

Das ist also ein alter Leitfaden, aber es kann immer noch funktionieren. MultiSeatOneCard .

Einige Notizen, bevor ich anfange, Anweisungen zu überbringen:

  • gdmMöglicherweise ist nicht einmal die gesamte Konfiguration erforderlich, die Sie vornehmen möchten. Wenn Sie GNOME haben, haben Sie bereits gdm(und eine viel neuere Version). Unity nutzt lightdm, was anscheinend nicht funktioniert. Sie sollten es installieren gdmund verwenden, um dieses Handbuch auszuprobieren.

  • Noch eine Warnung: OLD GUIDE. Es könnte nicht funktionieren, es könnte Ubuntu kaputt machen, es könnte Ihre Maschine in die Luft jagen (nicht wirklich natürlich). Bitte seien Sie vorsichtig und sichern Sie alles.

Nun zum Leitfaden

Das Wiki schlägt vor, den Begrüßungsbildschirm wie folgt zu deaktivieren. Ich weiß nicht, ob das Verfahren noch funktioniert oder nicht.

Bei diesem Setup kann eine Menge schief gehen, und der ausgefallene Begrüßungsbildschirm während des Startvorgangs hilft nicht. Um sie (möglicherweise vorübergehend) zu deaktivieren, bearbeiten Sie / etc / default / grub und ändern Sie die GRUB_CMDLINE_LINUX_DEFAULT-Zuweisung von quiet splash in nomodeset noplymouth. Führen Sie dann sudo update-grub aus.

Der nächste Teil, "Erweiterter Desktop", kann wahrscheinlich auch übersprungen werden. Schließen Sie einfach beide Monitore an und stellen Sie sie in Ihren Monitoreinstellungen auf "Erweiterter Modus" ein.

Nun zu etwas Konfiguration.

Suchen Sie zunächst in /etc/gdm/gdm.conf im Abschnitt [servers] eine Zeile, die mit 0 = ... beginnt (ohne # am Zeilenanfang). Setzen Sie ein # davor.

Das sollte ohne großen Aufwand möglich sein.

Bearbeiten Sie dann /etc/gdm/gdm.conf-custom. Suchen Sie den Abschnitt [security] und fügen Sie eine Zeile PamStack = gdm-2.20 hinzu.

Hier könnte ein Problem auftreten. Anstelle von 2.20 müssen Sie möglicherweise 3.18 versuchen (dies gilt für 16.04).

Suchen Sie den Abschnitt [xdmcp] und fügen Sie eine Zeile hinzu. Enable = true.

Das sollte keine Probleme bereiten.

XDMCP ist kein besonders sicheres Protokoll, daher ist es eine gute Idee, gdm zu veranlassen, Verbindungen von anderen Computern abzulehnen. Fügen Sie eine Zeile gdm: 127. * in /etc/hosts.allow und eine Zeile gdm: ALL in /etc/hosts.deny hinzu.

Dies können Sie nicht tun. Wenn Ihnen die Sicherheit am Herzen liegt, sollten Sie dies tun, aber ich denke, Sie können es ansonsten belassen.

Starten Sie jetzt neu gdmdurch einen Neustart (wahrscheinlich der einfachste Weg). Wenn Sie den GDM-Anmeldebildschirm sehen, ist etwas nicht in Ordnung. Überprüfen Sie die Originalanleitung und ändern Sie einige Einstellungen.

Wenn Sie keinen Anmeldebildschirm haben, rufen Sie einen TTY auf und führen Sie ihn aus X -query 127.0.0.1. Wenn GDM auftaucht, töte es (gehe zurück zum TTY und töte es dort).

Erstellen Sie einen neuen Benutzer mit dem Namen monitor:

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

Erstellen Sie eine Datei (Anleitung hat keine Namensangaben) /etc/udev/rules.d/my.rulesund geben Sie Folgendes ein:

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

Einige Paketinstallationen:

apt-get install x11-utils xserver-xephyr

Wir müssen die Monitore mit einigen Aliasen trennen:

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

Melden Sie sich monitorim TTY beim Benutzer an und erstellen Sie ~/.xsession.

Setzen Sie dieses in:

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"

Denken Sie daran, es zu bearbeiten, um Ihre Auflösungen widerzuspiegeln.

Führen Sie startxals monitorBenutzer aus, und überprüfen Sie, ob es funktioniert.

Dies muss gemacht werden, um beim Booten zu starten, wenn es funktioniert. Fügen Sie dies am Ende von ~/.profile(für das Monitor-Konto) hinzu:

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

Töte die GUI und gehe zu TTY6. Melden Sie sich an als monitorund es sollte starten.

Wenn das funktioniert, bearbeiten Sie die Datei /etc/init/tty6.confals root und ersetzen Sie die Zeile beginnend /sbin/gettymit

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

Wenn es funktioniert, Sie aber auch Audio trennen möchten, finden Sie im verknüpften MultiSeatX- Handbuch einige nützliche Informationen .

Bitte denken Sie daran, dass dies möglicherweise nicht funktioniert. Ich habe das ziemlich schnell geschrieben und werde es hoffentlich etwas klarer bearbeiten, wenn nötig. Ich habe Teile des Leitfadens angepasst, um aktueller zu sein und die Erfolgschancen zu erhöhen.

Viel Glück!

Der Wanderer
quelle
Wissen Sie, wie man auf LightDM portiert?
Soren
@moo_we_all_do nein, überhaupt keine. Ich kann nur eine genaue Vorstellung davon bekommen, was diese Prozedur macht und warum sie benötigt wird, aber ich weiß nicht, wie GDM im Vergleich zu LightDM funktioniert. Es ist jedoch kein Problem, GDM anstelle von LightDM zu verwenden. Ihr Anmeldebildschirm ändert sich und das wars (sichtbar).
TheWanderer
3

Es klingt sehr cool, also habe ich mich umgesehen und diesen Wiki-Eintrag gefunden, der mit diesem Wikipedia-Eintrag verlinkt ist . Grundsätzlich wird ein Tool namens xephyr zum Organisieren von Ein- / Ausgängen verwendet.

Der Eintrag ist ziemlich alt und nur für Ubuntu 12.04 aktualisiert, aber Xephyr ist immer noch in den Standard-Repos (hat gerade seine Präsenz auf meinem Computer getestet). Die Konfigurationsänderungen scheinen komplex, aber ziemlich unkompliziert zu sein, es könnte trotzdem funktionieren. Hier ein Blog aus dem Jahr 2014, der auch Hoffnung macht.

Bitte lassen Sie uns wissen, wie es Ihnen geht!

Jeroen
quelle
Nett, danke! Können Sie eine bearbeitete Down-Version der Anweisungen veröffentlichen, die zu meinem Setup in Ihrer Antwort passen?
Soren
Ich denke nicht, dass es überhaupt möglich ist. Sie müssen fast alle Schritte ausführen (außer der Erstinstallation), außerdem wird gdm jetzt durch lightdm ersetzt. Vielleicht hast du Glück mit dem im Eintrag genannten Zauberer ? Aber auch das scheint veraltet ...
Jeroen
1

Ich denke nicht, dass dies möglich ist, weil Sie nicht zwei Sätze von Eingabegeräten haben können. Es ist möglich, dass ein Tool wie Synergie hier hilft, aber es wird chaotisch sein.

Sie könnten sich eine andere Maschine zulegen und diese als X-Terminal verwenden. Dies müsste nur schnell genug sein, um den Bildschirm zu aktualisieren. Fragen Sie Ihre Freunde nach ihrem alten PC. Wenn Sie Ihren ursprünglichen Computer für die Ausführung von XDMCP konfigurieren, kann sich der andere Computer auf seinem eigenen Desktop anmelden.

Es ist geplant, diese Funktionalität von Ubuntu zu entfernen, wenn X-Windows durch Mir ersetzt wird. Dies wird wahrscheinlich in der Zeit der nächsten LTS-Version sein.

Hier ist Ubuntus Leitfaden zu XDMCP - https://wiki.ubuntu.com/xdmcp

Amias
quelle
Wir haben nur 1 guten Computer. Unsere anderen Computer sind langsam. Das würde funktionieren?
Soren
Ich habe dies mit einem Pentium-Laptop und einer Cisco Aironet-WLAN-Karte getan
Amias
Können Sie dieser Antwort Anweisungen hinzufügen? ZB "Bearbeiten (Datei),
Soren
Ich habe, die xdmcp-Anweisungen sind alle in dieser Anleitung behandelt und sind zu lang, um sie hier wiederzugeben. Die xdmcp-Konfiguration ist nicht trivial.
Amias