![Conmutación de terminal virtual con configuración multipuesto y lightdm](https://rvso.com/image/1036626/Conmutaci%C3%B3n%20de%20terminal%20virtual%20con%20configuraci%C3%B3n%20multipuesto%20y%20lightdm.png)
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 -sharevts
y -novtswitch
deberí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.