Jak skonfigurować multiseat z tylko jedną fizyczną kartą graficzną?

16

Mam komputer Ubuntu z 16.04 i mam tylko jedną kartę graficzną.

Okular

Mój brat i ja nieustannie walczymy o to, kto może z niego skorzystać, więc staram się wszystkim wyświadczyć przysługę i zainstalować multiseat.

  • Byłbym seat0z portem VGA, myszą, klawiaturą i gniazdami słuchawkowymi z tyłu komputera.

  • Byłby seat1z portem DVI-D, myszą, klawiaturą i gniazdami słuchawkowymi z przodu komputera.

  • Udostępnilibyśmy klucz Wi-Fi, aby połączyć się z Internetem.

Nie wiem, jak to zrobić. Jakie pliki tworzę, gdzie one idą i co mam w nich umieścić? Dobrze sformatowana odpowiedź (nie przewodnik online) byłaby miła.

Wyjście 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)

Wyjście 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
źródło
1
Nigdy nie próbowałem, ale czy spojrzałeś na WIKI ?
Ridgy
@ridgy To jest dla wielu kart
Soren
1
Istnieje kilka innych rozwiązań (takich jak Xephyr, spójrz na odpowiedź na to pytanie ). Ale w przypadku aplikacji intensywnie korzystających z GPU, takich jak gry, żadna z nich nie będzie wystarczająco wydajna, o ile mi wiadomo, ani zdalne serwery X, ponieważ nie mogą używać procesora graficznego komputera z uruchomionym klientem X do renderowania.
Ridgy
xdmcp użyje lokalnego silnika renderowania i wyświetli zdalnie, chociaż możesz nie dostać bardziej wymyślnych, bardziej nowoczesnych Xtenstionów, takich jak glamour do pracy
Amias

Odpowiedzi:

7

To jest stary przewodnik, ale może nadal działać. MultiSeatOneCard .

Kilka notatek, zanim zacznę przynosić instrukcje:

  • Cała gdmkonfiguracja, którą chce wykonać, może nawet nie być konieczna. Jeśli masz GNOME, już go masz gdm(i znacznie nowszą wersję). Używa Unity lightdm, które wygląda na to, że może nie działać. Powinieneś zainstalować gdmi użyć go, aby wypróbować ten przewodnik.

  • Kolejne ostrzeżenie: STARY PRZEWODNIK. Może nie działać, może zepsuć Ubuntu, może wysadzić twój komputer (nie do końca oczywiście). Zachowaj ostrożność i wykonaj kopię zapasową.

Teraz przewodnik

Wiki sugeruje wyłączenie ekranu powitalnego w następujący sposób. Nie wiem, czy procedura nadal działa, czy nie.

Z tą konfiguracją wiele może się nie udać, a fantazyjny ekran powitalny podczas rozruchu nie pomaga. Aby go wyłączyć (być może tymczasowo), edytuj / etc / default / grub i zmień przypisanie GRUB_CMDLINE_LINUX_DEFAULT z cichego powitania na nomodeset noplymouth. Następnie uruchom sudo update-grub.

Kolejną część dotyczącą „rozszerzonego pulpitu” można prawdopodobnie pominąć. Wystarczy podłączyć oba monitory i ustawić je w „trybie rozszerzonym” w ustawieniach monitora.

Teraz dla pewnej konfiguracji.

Najpierw znajdź w /etc/gdm/gdm.conf, w sekcji [serwery] wiersz zaczynający się od 0 = .... (bez # na początku wiersza). Umieść # przed nim.

Powinno to być możliwe bez większych problemów.

Następnie edytuj /etc/gdm/gdm.conf-custom. Znajdź sekcję [bezpieczeństwo] i dodaj wiersz PamStack = gdm-2.20.

Tutaj możesz mieć problem. Zamiast wersji 2.20 może być konieczne wypróbowanie wersji 3.18 (dotyczy wersji 16.04).

znajdź sekcję [xdmcp] i dodaj wiersz Enable = true.

To nie powinno sprawiać kłopotów.

XDMCP nie jest szczególnie bezpiecznym protokołem, więc dobrym pomysłem jest, aby gdm odmawiał połączeń z innych komputerów. Dodaj wiersz gdm: 127. * w /etc/hosts.allow i wiersz gdm: ALL w /etc/hosts.deny.

Możesz wybrać, aby tego nie robić. Jeśli zależy ci na bezpieczeństwie, sugeruję, abyś to zrobił, ale poza tym myślę, że możesz to zostawić.

Teraz uruchom ponownie gdm, uruchamiając ponownie komputer (prawdopodobnie najłatwiejszy sposób). Jeśli zobaczysz ekran logowania do GDM, coś jest nie tak. Sprawdź oryginalny przewodnik i popraw niektóre ustawienia.

Jeśli nie masz ekranu logowania, przejdź do TTY i uruchom X -query 127.0.0.1. Jeśli pojawi się GDM, zabij go (wróć do TTY i zabij go).

Utwórz nowego użytkownika o nazwie monitor:

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

Utwórz plik (przewodnik nie ma specyfikacji nazw) /etc/udev/rules.d/my.rulesi wprowadź następujące elementy:

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

Niektóre instalacje pakietów:

apt-get install x11-utils xserver-xephyr

Musimy oddzielić monitory kilkoma aliasami:

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

Zaloguj się do monitorużytkownika w TTY i utwórz ~/.xsession.

Umieść to w środku:

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"

Pamiętaj, aby go edytować, aby odzwierciedlić Twoje rozdzielczości.

Uruchom startxjako monitorużytkownik i sprawdź, czy to działa.

Należy to zrobić, aby uruchomić przy rozruchu, jeśli to działa, więc dodaj to na końcu ~/.profile(dla konta monitora):

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

Zabij GUI i przejdź do TTY6. Zaloguj się jako monitori powinno się uruchomić.

Jeśli to zadziała, edytuj plik /etc/init/tty6.confjako root i zamień wiersz zaczynający /sbin/gettysię na

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

Jeśli to działa, ale chcesz również oddzielić dźwięk, połączony przewodnik MultiSeatX ma dla Ciebie kilka rzeczy.

Pamiętaj, że to może nie działać. Napisałem to dość szybko i mam nadzieję, że w razie potrzeby dokonam edycji. Dostosowałem części przewodnika, aby były bardziej aktualne i zwiększały szansę na sukces.

Powodzenia!

Wędrowiec
źródło
Masz wiedzę na temat przenoszenia do LightDM?
Soren,
@moo_we_all_do nie, wcale. Mogę tylko zorientować się, co robi ta procedura i dlaczego jest potrzebna, ale nie wiem, jak działa GDM vs. LightDM. Jednak używanie GDM zamiast LightDM nie stanowi problemu. Twój ekran logowania się zmienia i to wszystko (widocznie).
Wędrowiec
3

Brzmi bardzo fajnie, więc rozejrzałem się i znalazłem ten wpis wiki jako link z tego wpisu wikipedii . Zasadniczo używa narzędzia o nazwie xephyr do organizowania wejść / wyjść.

Wpis jest dość stary i zaktualizowany tylko dla Ubuntu 12.04, ale Xephyr wciąż znajduje się w standardowych repozytoriach (właśnie przetestowałem jego obecność na moim komputerze). Edycje konfiguracji wydają się skomplikowane, ale dość proste, wciąż mogą działać. Oto blog z 2014 roku, dzięki czemu można mieć nadzieję.

Daj nam znać, jak sobie radzisz!

Jeroen
źródło
Fajnie dzięki! Czy możesz w swojej odpowiedzi opublikować zredagowaną wersję instrukcji, która pasuje do mojej konfiguracji?
Soren
Nie sądzę, żeby to było w ogóle możliwe. Będziesz musiał wykonać prawie wszystkie kroki (oprócz początkowej instalacji), również gdm jest teraz zastąpiony przez lightdm. Być może masz szczęście z czarodziejem wspomnianym we wpisie ? Ale także ten wydaje się przestarzały ...
Jeroen
1

Nie sądzę, że jest to możliwe, ponieważ nie możesz mieć dwóch zestawów urządzeń wejściowych. Możliwe, że narzędzie takie jak synergia może tu pomóc, ale będzie bałagan.

Możesz dostać inną maszynę i używać jej jako X Terminal, będzie to musiało być wystarczająco szybkie, aby zaktualizować ekran, więc poproś znajomych o stary komputer. Jeśli skonfigurujesz swój oryginalny komputer do uruchamiania XDMCP, pozwoli on drugiej maszynie zalogować się na swoim pulpicie.

Ta funkcja jest planowana do usunięcia z Ubuntu, gdy X Window zostanie zastąpiony Mirem, prawdopodobnie będzie to w przybliżeniu w czasie następnej wersji LTS.

Oto przewodnik Ubuntu na temat XDMCP - https://wiki.ubuntu.com/xdmcp

Amias
źródło
Mamy tylko 1 dobry komputer. Nasze pozostałe komputery działają wolno. To by działało?
Soren
Zrobiłem to z laptopem pre pentium i kartą Wi-Fi Cisco Aironet
Amias
Czy możesz dodać instrukcje do tej odpowiedzi? Np. „Edytuj (plik), aby powiedzieć to: ..”
Soren
Mam, instrukcje xdmcp są ujęte w tym przewodniku i są zbyt długie, aby je tutaj odtworzyć. Konfiguracja xdmcp nie jest trywialna.
Amias,