Переключение виртуального терминала с настройкой нескольких мест и lightdm
Моя цель - получить два места для моей машины Ubuntu. Одним из мониторов является USB-сенсорный экран от Mimo с микросхемой displaylink. Я уже установил его в качестве основного дисплея, просто переконфигурировав xorg.conf. Даже сенсорный интерфейс работает.
Но для нескольких мест недостаточно просто изменить xorg.conf, потому что необходимо также запустить дополнительные экраны входа в систему. Это должно войти в конфигурацию lightdm.
Настроив lightdm для нескольких мест (lightdm.conf), мне удалось запустить два экземпляра X, по одному для каждого ServerLayout (xorg.conf). Один работает на виртуальном терминале 7 (VT7), а другой на VT8. Как известно, вы можете переключаться между виртуальными терминалами с помощью сочетаний клавиш Ctrl + Alt + Fx (где x - номер терминала).
Теперь проблема заключается в следующем: по умолчанию VT7 включен, а VT8 отключен. Но когда я переключаюсь на VT8, он становится включенным, а VT7 становится отключенным.
Как я могу заставить оба терминала / сервера X Server работать параллельно?
Спасибо.
Вот мой lightdm.conf
[SeatDefaults]
greeter-session=unity-greeter
user-session=ubuntu
[Seat:0]
xserver-layout=default
[Seat:1]
xserver-layout=displaylink
Вот только соответствующие части моего xorg.conf:
# Two Server Layouts
Section "ServerLayout"
Identifier "default"
Screen 0 "Screen0" 0 0
InputDevice "Mouse0" "CorePointer"
InputDevice "Keyboard0" "CoreKeyboard"
EndSection
Section "ServerLayout"
Identifier "displaylink"
Screen "DisplayLinkScreen"
InputDevice "Mouse1"
EndSection
# Two Screens
Section "Screen"
Identifier "Screen0"
Device "Card0"
Monitor "Monitor0"
SubSection "Display"
Viewport 0 0
Depth 24
EndSubSection
EndSection
Section "Screen"
Identifier "DisplayLinkScreen"
Device "DisplayLinkDevice"
Monitor "DisplayLinkMonitor"
SubSection "Display"
Depth 24
Modes "800x480"
EndSubSection
EndSection
# Two Monitors
Section "Monitor"
Identifier "Monitor0"
VendorName "Monitor Vendor"
ModelName "Monitor Model"
EndSection
Section "Monitor"
Identifier "DisplayLinkMonitor"
EndSection
# Two Graphics Cards/Interfaces
Section "Device"
Identifier "Card0"
Driver "nvidia"
BusID "PCI:1:0:0"
EndSection
Section "Device"
Identifier "DisplayLinkDevice"
driver "displaylink"
Option "fbdev" "/dev/fb1"
EndSection
# Three Input Devices (the last is touchscreen of the USB monitor)
Section "InputDevice"
Identifier "Keyboard0"
Driver "kbd"
EndSection
Section "InputDevice"
Identifier "Mouse0"
Driver "mouse"
Option "Protocol" "auto"
Option "Device" "/dev/input/mice"
Option "ZAxisMapping" "4 5 6 7"
EndSection
Section "InputDevice"
Identifier "Mouse1"
Driver "mouse"
Option "Device" "/dev/input/by-path/pci-0000:00:1d.7-usb-0:1.3:1.0-event"
EndSection
3 ответа
Перечитывая вики-статью под https://help.ubuntu.com/community/MultiseatX, я думаю, вы должны взглянуть на то, как вызывается X; например -sharevts
а также -novtswitch
параметры командной строки должны быть каким-то образом переданы X в вашем lightdm.conf
,
Если у вас рабочее состояние, рассмотрите возможность обновления записи в вики до 11.10.
Спасибо за подсказку. Ключ -sharevts был ключевым. По умолчанию Lightdm не добавляется. Я посмотрел на /var/log/lightdm/lightdm.log и добавил пользовательский параметр xserver-command, и теперь он наконец работает! Спасибо за вашу помощь.
Мой последний lightdm.conf:
[SeatDefaults]
greeter-session=unity-greeter
user-session=ubuntu
[Seat:0]
xserver-layout=default
xserver-command=/usr/bin/X :0 -layout default -auth /var/run/lightdm/root/:0 -nolisten tcp vt7 -novtswitch -sharevts
[Seat:1]
xserver-layout=displaylink
xserver-command=/usr/bin/X :1 -layout displaylink -auth /var/run/lightdm/root/:1 -nolisten tcp vt8 -novtswitch -sharevts
Я бы подумал, что должен быть отдельный набор ttys для второго места, и что второй X-сервер должен быть запущен на одном из них. Однако после просмотра кода консоли ядра выяснилось, что он был написан с предположением, что имеется только одна консоль. Он использует глобальные переменные для мультиплексирования виртуальных консолей на одном дисплее и считывает ввод с клавиатуры со всех подключенных клавиатур.
Похоже, что консольный код Linux потребуется значительно реорганизовать для поддержки нескольких рабочих мест.