Bagaimana cara mengatur multiseat dengan hanya satu kartu grafis fisik?

16

Saya memiliki komputer Ubuntu yang menjalankan 16,04, dan saya hanya memiliki satu kartu grafis.

Spesifikasi

Adikku dan aku terus-menerus memperdebatkan siapa yang bisa menggunakannya, jadi aku mencoba melakukan semua bantuan dan menginstal multiseat.

  • Saya akan seat0, dengan port VGA, mouse, keyboard, dan jack headphone di bagian belakang komputer.

  • Dia akan seat1, dengan port DVI-D, mouse, keyboard, dan jack headphone di bagian depan komputer.

  • Kami akan membagikan dongle Wi-Fi untuk terhubung ke internet.

Saya benar-benar bingung bagaimana melakukan ini. File apa yang saya buat, kemana mereka pergi, dan apa yang saya masukkan ke dalamnya? Jawaban yang diformat dengan baik (bukan panduan online) akan menyenangkan.

Output dari 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)

Output dari 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
sumber
1
Saya tidak pernah mencoba, tetapi apakah Anda melihat WIKI ?
ridgy
@ridgy Itu untuk multi kartu
Soren
1
Ada beberapa solusi lagi (seperti Xephyr, lihat jawaban untuk Pertanyaan ini ). Tetapi untuk aplikasi intensif GPU seperti gim, keduanya tidak akan cukup dahsyat, sejauh yang saya lihat, juga tidak akan membuat server X jauh karena mereka tidak dapat menggunakan GPU komputer yang menjalankan klien X untuk rendering.
ridgy
xdmcp akan menggunakan mesin render lokal dan menampilkan dari jarak jauh, meskipun Anda mungkin tidak mendapatkan beberapa xtenstions lebih modern yang lebih mewah seperti glamour untuk bekerja
Amias

Jawaban:

7

Jadi ini adalah panduan lama, tetapi mungkin masih berfungsi. MultiSeatOneCard .

Beberapa catatan sebelum saya mulai membawa instruksi:

  • Semua gdmkonfigurasi yang Anda ingin lakukan bahkan mungkin tidak diperlukan. Jika Anda memiliki GNOME, Anda sudah memiliki gdm(dan versi yang jauh lebih baru). Penggunaan Unity lightdm, yang sepertinya tidak berfungsi. Anda harus menginstal gdmdan menggunakannya untuk mencoba panduan ini.

  • Hanya peringatan lain: PANDUAN TUA. Ini mungkin tidak berfungsi, mungkin merusak Ubuntu, mungkin meledakkan mesin Anda (tidak benar-benar tentu saja). Harap berhati-hati dan cadangan barang.

Sekarang untuk panduannya

Wiki menyarankan untuk menonaktifkan splash screen dengan yang berikut ini. Saya tidak tahu apakah prosedurnya masih berfungsi atau tidak.

Banyak yang bisa salah dengan pengaturan ini dan layar splash mewah selama boot tidak membantu. Untuk menonaktifkannya (mungkin sementara) edit / etc / default / grub dan ubah tugas GRUB_CMDLINE_LINUX_DEFAULT dari quiet splash ke nomodeset noplymouth. Kemudian jalankan sudo update-grub.

Bagian selanjutnya, tentang "desktop yang diperluas" mungkin dapat dilewati juga. Cukup colokkan kedua monitor dan atur ke "extended mode" di pengaturan monitor Anda.

Sekarang, untuk beberapa konfigurasi.

Pertama, temukan di /etc/gdm/gdm.conf, di bagian [server] sebuah baris yang dimulai dengan 0 = .... (tanpa # di awal baris). Letakkan # di depannya.

Itu harus mungkin tanpa banyak masalah.

Kemudian edit /etc/gdm/gdm.conf-custom. Temukan bagian [keamanan] dan tambahkan baris PamStack = gdm-2.20.

Di sinilah Anda mungkin memiliki masalah. Alih-alih 2,20, Anda mungkin perlu mencoba 3,18 (ini untuk 16,04).

temukan bagian [xdmcp] dan tambahkan baris Enable = true.

Seharusnya tidak menimbulkan masalah.

XDMCP bukan protokol yang sangat aman sehingga merupakan ide bagus untuk membuat koneksi menolak gdm dari komputer lain. Tambahkan baris gdm: 127. * di /etc/hosts.allow dan baris gdm: ALL di /etc/hosts.deny.

Ini, Anda dapat memilih untuk tidak melakukannya. Jika Anda peduli dengan keamanan, saya sarankan Anda melakukannya, tetapi sebaliknya, saya pikir Anda bisa meninggalkannya.

Sekarang restart gdmdengan me-reboot (mungkin cara termudah). Jika Anda melihat layar login GDM, ada sesuatu yang terjadi. Periksa kembali panduan asli dan atur beberapa pengaturan.

Jika Anda tidak memiliki layar login, maka lanjutkan ke TTY dan jalankan X -query 127.0.0.1. Jika GDM muncul, bunuh (kembali ke TTY dan bunuh di sana).

Buat pengguna baru bernama monitor:

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

Buat file (panduan tidak memiliki spesifikasi nama) /etc/udev/rules.d/my.rulesdan masukkan sebagai berikut:

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

Beberapa instalasi paket:

apt-get install x11-utils xserver-xephyr

Kita perlu memisahkan monitor dengan beberapa alias:

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

Masuk ke monitorpengguna di TTY dan buat ~/.xsession.

Letakkan ini di dalam:

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"

Ingatlah untuk mengeditnya untuk mencerminkan resolusi Anda.

Jalankan startxsebagai monitorpengguna dan lihat apakah itu berfungsi.

Ini perlu dilakukan untuk mulai saat boot jika berhasil, jadi tambahkan ini di akhir ~/.profile(untuk akun monitor):

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

Bunuh GUI dan pergi ke TTY6. Masuk sebagai monitordan itu harus mulai.

Jika berhasil, edit file /etc/init/tty6.confsebagai root dan ganti baris yang dimulai /sbin/gettydengan

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

Jika berfungsi, tetapi Anda juga ingin memisahkan audio, panduan MultiSeatX yang tertaut memiliki beberapa hal untuk Anda.

Harap diingat ini mungkin tidak berfungsi. Saya mengetik ini agak cepat dan mudah-mudahan akan mengeditnya menjadi sedikit lebih jelas jika perlu. Saya telah mengadaptasi bagian-bagian panduan ini agar lebih mutakhir dan meningkatkan peluang keberhasilan.

Semoga berhasil!

Petualang
sumber
Adakah pengetahuan tentang porting ke LightDM?
Soren
@moo_we_all_do tidak, tidak ada sama sekali. Saya hanya bisa mendapatkan ide yang agak spesifik tentang apa yang dilakukan prosedur ini, dan mengapa ini diperlukan, tetapi saya tidak tahu bagaimana GDM bekerja vs. LightDM. Ini sebenarnya bukan masalah untuk menggunakan GDM alih-alih LightDM. Layar login Anda berubah dan hanya itu saja (terlihat).
TheWanderer
3

Kedengarannya sangat keren, jadi saya melihat-lihat dan menemukan entri wiki ini sebagai ditautkan dari entri wikipedia ini . Ini pada dasarnya menggunakan alat yang disebut xephyr untuk mengatur input / output.

Entri ini cukup lama dan hanya diperbarui untuk ubuntu 12.04, tetapi xephyr masih dalam repo standar (baru saja menguji keberadaannya di komputer saya). Suntingan konfigurasi tampak rumit tetapi cukup mudah, mungkin masih berfungsi. Ini adalah blog yang berasal dari 2014, yang membuat orang juga berharap.

Harap beri tahu kami tarif Anda!

Jeroen
sumber
Terima kasih banyak! Dapatkah Anda mengirim versi instruksi yang diedit ke bawah yang sesuai dengan pengaturan saya dalam jawaban Anda?
Soren
Saya pikir itu tidak mungkin. Anda harus melakukan hampir semua langkah (kecuali instalasi awal), juga gdm sekarang diganti oleh lightdm. Mungkin Anda beruntung dengan penyihir yang disebutkan dalam entri ? Tetapi yang satu itu tampaknya sudah ketinggalan zaman ...
Jeroen
1

Saya rasa ini tidak mungkin karena Anda tidak dapat memiliki dua set perangkat input. Mungkin alat seperti sinergi mungkin membantu di sini tetapi akan berantakan.

Anda bisa mendapatkan mesin lain dan menggunakannya sebagai Terminal X, ini hanya perlu cukup cepat untuk memperbarui layar jadi minta teman-teman Anda untuk pc lama mereka. Jika Anda mengonfigurasi mesin asli Anda untuk menjalankan XDMCP, maka mesin yang lain akan masuk ke desktopnya sendiri.

Fungsi ini dijadwalkan untuk dihapus dari ubuntu ketika X windows diganti dengan Mir, ini mungkin sekitar waktu rilis LTS berikutnya.

Ini adalah panduan ubuntu untuk XDMCP - https://wiki.ubuntu.com/xdmcp

Amias
sumber
Kami hanya memiliki 1 komputer yang bagus. Komputer kami yang lain lambat. Ini akan bekerja?
Soren
Saya sudah melakukan ini dengan laptop pra pentium dan kartu wifi cisco aironet
Amias
Bisakah Anda menambahkan instruksi ke jawaban ini? Misalnya "Edit (file) untuk mengatakan ini: .."
Soren
saya punya, instruksi xdmcp semuanya tercakup dalam panduan itu dan terlalu panjang untuk mereproduksi di sini. konfigurasi xdmcp bersifat non sepele.
Amias