Conmutación de terminal virtual con configuración multipuesto y lightdm

Conmutación de terminal virtual con configuración multipuesto y lightdm

Mi objetivo es tener dos puestos para mi máquina Ubuntu. Uno de los monitores es una pantalla táctil USB de Mimo con un chip displaylink. Ya lo hice funcionar como pantalla principal simplemente reconfigurando xorg.conf. Incluso la interfaz táctil funciona.

Pero para usuarios múltiples, no basta con cambiar xorg.conf, porque también se deben iniciar pantallas de inicio de sesión adicionales. Esto tiene que ir a la configuración de lightdm.

Al configurar lightdm para múltiples puestos (lightdm.conf), logré iniciar dos instancias X, una para cada ServerLayout (xorg.conf). Uno se ejecuta en Virtual Terminal 7 (VT7) y otro en VT8. Como es comúnmente conocido, puede cambiar entre terminales virtuales con los atajos Ctrl + Alt + Fx (donde x es el número de terminal).

Ahora el problema es este: de forma predeterminada, VT7 está habilitado y VT8 está deshabilitado. Pero cuando cambio a VT8, se habilita pero VT7 se deshabilita.

¿Cómo puedo hacer que ambos terminales/servidores X Server se ejecuten en paralelo?

Gracias.

Aquí está mi lightdm.conf

[SeatDefaults]
greeter-session=unity-greeter
user-session=ubuntu

[Seat:0]
xserver-layout=default

[Seat:1]
xserver-layout=displaylink

Aquí están sólo las partes relevantes de mi 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

Respuesta1

Releyendo la entrada wiki enhttps://help.ubuntu.com/community/MultiseatX, Supongo que deberías echarle un vistazo a cómo se invoca X; por ejemplo, las opciones de línea de comando -sharevtsy -novtswitchdeberían pasarse de alguna manera a X en su archivo lightdm.conf.

Si tiene un estado de funcionamiento, considere actualizar la entrada wiki a 11.10.

Respuesta2

Gracias por la pista. El interruptor -sharevts fue la clave. Lightdm no lo agrega de forma predeterminada. Miré /var/log/lightdm/lightdm.log y agregué una opción personalizada de comando xserver y ¡ahora finalmente funciona! Gracias por tu ayuda.

Mi lightdm.conf final:

[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

Respuesta3

Creo que debería haber un conjunto separado de ttys para el segundo asiento y que el segundo servidor X debería ejecutarse en uno de ellos. Sin embargo, después de observar el código de la consola del kernel, parece que fue escrito asumiendo que solo hay una consola. Utiliza variables globales para multiplexar las consolas virtuales en una sola pantalla y lee la entrada del teclado desde todos los teclados conectados.

Parece que será necesario refactorizar significativamente el código de la consola Linux para admitir múltiples puestos.

información relacionada