Как я могу настроить мультисайт только с одной физической видеокартой?

16

У меня есть компьютер с Ubuntu под управлением 16.04, и у меня только одна видеокарта.

Спекуляции

Мы с братом постоянно ссоримся из-за того, кто его использует, поэтому я стараюсь сделать всем одолжение и установить мультисайты.

  • Я бы seat0, с портом VGA, мышью, клавиатурой и разъемами для наушников на задней панели компьютера.

  • Он будет seat1с портом DVI-D, мышью, клавиатурой и разъемами для наушников на передней панели компьютера.

  • Мы хотели бы поделиться ключом Wi-Fi для подключения к Интернету.

Я совершенно не знаю, как это сделать. Какие файлы я создаю, куда они идут и что я в них помещаю? Хорошо отформатированный ответ (не онлайн-руководство) был бы хорош.

Выход из 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)

Выход из 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
Я никогда не пробовал, но вы смотрели на вики ?
риджи
@ridgy Это для мультикарт
Сорен
1
Есть еще несколько решений (например, Xephyr, посмотрите на ответ на этот вопрос ). Но для приложений с интенсивным использованием графических процессоров, таких как игры, ни одно из них, насколько я вижу, не будет достаточно предварительно отформатированным, равно как и удаленные X-серверы, поскольку они не могут использовать графический процессор компьютера, на котором работает X-клиент, для рендеринга.
риджи
xdmcp будет использовать локальный движок рендеринга и отображать его удаленно, хотя вы можете не использовать некоторые из более современных, более популярных выражений, таких как гламур,
Amias

Ответы:

7

Так что это старое руководство, но оно все еще может работать. MultiSeatOneCard .

Несколько заметок, прежде чем я начну приносить инструкции:

  • Все gdmнастройки, которые вам нужны, могут даже не понадобиться. Если у вас есть GNOME, у вас уже есть gdm(и гораздо более новая версия). Unity использует lightdm, похоже, это может не сработать. Вы должны установить gdmи использовать его, чтобы попробовать это руководство.

  • Еще одно предупреждение: СТАРЫЙ ГИД. Он может не работать, он может сломать Ubuntu, он может взорвать вашу машину (не совсем, конечно). Пожалуйста, будьте осторожны и вернитесь.

Теперь для гида

Вики предлагает отключить заставку следующим образом. Я не знаю, если процедура все еще работает или нет.

С этой настройкой многое может пойти не так, и причудливый экран-заставка во время загрузки не помогает. Чтобы отключить его (возможно временно), отредактируйте / etc / default / grub и измените назначение GRUB_CMDLINE_LINUX_DEFAULT с тихого всплеска на nomodeset noplymouth. Затем запустите sudo update-grub.

Следующая часть, касающаяся «расширенного рабочего стола», вероятно, тоже может быть пропущена. Просто подключите оба монитора и установите их в «расширенный режим» в настройках монитора.

Теперь для некоторой конфигурации.

Во-первых, найдите в /etc/gdm/gdm.conf в разделе [Servers] строку, начинающуюся с 0 = .... (без # в начале строки). Поставьте # перед ним.

Это должно быть возможно без особых проблем.

Затем отредактируйте /etc/gdm/gdm.conf-custom. Найдите раздел [security] и добавьте строку PamStack = gdm-2.20.

Это где у вас могут быть проблемы. Вместо 2.20 вам может потребоваться попробовать 3.18 (это для 16.04).

найдите раздел [xdmcp] и добавьте строку Enable = true.

Это не должно вызвать проблем.

Протокол XDMCP не является особо безопасным протоколом, поэтому рекомендуется отключить соединение gdm с другими компьютерами. Добавьте строку gdm: 127. * в /etc/hosts.allow и строку gdm: ALL в /etc/hosts.deny.

Это вы можете не делать. Если вы заботитесь о безопасности, я предлагаю вам сделать это, но в противном случае, я думаю, вы можете оставить это.

Теперь перезагрузите компьютер gdmпутем перезагрузки (вероятно, самый простой способ). Если вы видите экран входа в GDM, что-то не так. Проверьте оригинальное руководство и настройте некоторые параметры.

Если у вас нет экрана входа в систему, перейдите на TTY и запустите X -query 127.0.0.1. Если появится GDM, убейте его (вернитесь в TTY и убейте его там).

Создайте нового пользователя с именем monitor:

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

Создайте файл (в руководстве нет спецификаций имен) /etc/udev/rules.d/my.rulesи вставьте следующее:

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

Некоторые пакеты установки:

apt-get install x11-utils xserver-xephyr

Нам нужно разделить мониторы псевдонимами:

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

Войдите в систему monitorпользователя в TTY и создайте ~/.xsession.

Поместите это внутрь:

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"

Не забудьте отредактировать его, чтобы отразить ваши решения.

Запустите startxкак monitorпользователь и посмотрите, работает ли он.

Это должно быть сделано для запуска при загрузке, если это работает, поэтому добавьте это в конец ~/.profile(для учетной записи монитора):

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

Убить графический интерфейс и перейти к TTY6. Авторизуйтесь как monitorи это должно начаться.

Если это работает, отредактируйте файл /etc/init/tty6.confкак root и замените строку, начинающуюся /sbin/gettyс

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

Если это работает, но вы также хотите разделить аудио, у связанного руководства MultiSeatX есть кое-что для вас.

Пожалуйста, помните, что это может не сработать. Я набрал это довольно быстро и, надеюсь, отредактирую, чтобы он был более понятным при необходимости. Я адаптировал части руководства, чтобы они были более современными и увеличивали шансы на успех.

Удачи!

Странник
источник
Любые знания по портированию на LightDM?
Сорен
@moo_we_all_do нет, совсем нет. Я могу только получить определенное представление о том, что делает эта процедура и зачем она нужна, но я не знаю, как работает GDM против LightDM. Однако на самом деле не проблема использовать GDM вместо LightDM. Ваш экран входа в систему меняется, и это все (заметно).
Странник
3

Это звучит очень круто, поэтому я просмотрел и нашел эту запись в вики как связанную с этой записью в википедии . Он в основном использует инструмент под названием xephyr для организации входов / выходов.

Запись довольно старая и обновлена ​​только для Ubuntu 12.04, но xephyr все еще находится в стандартных репозиториях (только что проверил его наличие на моем компьютере). Редактирование конфигурации кажется сложным, но довольно простым, оно все еще может работать. Вот блог, датируемый 2014 годом, который также внушает надежду.

Пожалуйста, дайте нам знать, как вы поживаете!

Йерун
источник
Хорошо, спасибо! Можете ли вы опубликовать в своем ответе отредактированную версию инструкции, которая соответствует моим настройкам?
Сорен
Я не думаю, что это даже возможно. Вам нужно будет выполнить почти все шаги (кроме начальной установки), также gdm теперь заменен на lightdm. Возможно, вам повезло с волшебником, упомянутым в записи ? Но также этот кажется устаревшим ...
Йероен
1

Я не думаю, что это возможно, потому что вы не можете иметь два набора устройств ввода. Возможно, здесь поможет такой инструмент, как синергия, но он будет грязным.

Вы можете получить другую машину и использовать ее в качестве X-терминала, это должно быть достаточно быстрым для обновления экрана, поэтому попросите своих друзей найти их старый компьютер. Если вы сконфигурируете свой исходный компьютер для запуска XDMCP, он позволит другому компьютеру войти на свой рабочий стол.

Планируется, что эта функциональность будет удалена из Ubuntu при замене X windows на Mir, вероятно, это будет примерно во время следующего выпуска LTS.

Вот руководство Ubuntu по XDMCP - https://wiki.ubuntu.com/xdmcp

Амиас
источник
У нас только 1 хороший компьютер. Наши другие компьютеры работают медленно. Это будет работать?
Сорен
я сделал это с ноутбуком pre pentium и картой Wi-Fi cisco aironet
Amias
Можете ли вы добавить инструкции к этому ответу? Например, «Изменить (файл), чтобы сказать это: ..»
Сорен
у меня все инструкции xdmcp описаны в этом руководстве и они слишком длинные, чтобы их можно было воспроизвести здесь. Конфигурация xdmcp нетривиальна.
Amias