使用多座位设置和 lightdm 进行虚拟终端切换

使用多座位设置和 lightdm 进行虚拟终端切换

我的目标是为我的 Ubuntu 机器安装两个显示器。其中一个显示器是 Mimo 的 USB 触摸屏,带有 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

答案1

重新阅读维基百科条目https://help.ubuntu.com/community/MultiseatX,我想您应该看看 X 是如何调用的;例如,-sharevts-novtswitch命令行选项应该以某种方式传递给您的 X lightdm.conf

如果您处于工作状态,请考虑将 wiki 条目更新至 11.10。

答案2

谢谢你的提示。-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

答案3

我认为第二个座位应该有一组单独的 tty,第二个 X 服务器应该在其中一个上运行。不过,在查看了内核控制台代码后,似乎它是在假设只有一个控制台的情况下编写的。它使用全局变量将虚拟控制台多路复用到单个显示器上,并从所有连接的键盘读取键盘输入。

看起来 Linux 控制台代码需要进行大量重构才能支持多席位。

相关内容