Comutação de terminal virtual com configuração multiterminal e lightdm

6

Meu objetivo é ter dois lugares para minha máquina Ubuntu. Um dos monitores é um touchscreen USB da Mimo com um chip displaylink. Eu já consegui trabalhar como tela principal apenas reconfigurando o xorg.conf. Até a interface de toque funciona.

Mas para multiseats, não é apenas o suficiente para mudar o xorg.conf, porque telas de login adicionais também precisam ser iniciadas. Isso tem que ir para a configuração lightdm.

Configurando lightdm para multiseats (lightdm.conf), eu consegui inicializar duas instâncias X, uma para cada ServerLayout (xorg.conf). Um está rodando no Virtual Terminal 7 (VT7) e um no VT8. Como é comumente conhecido, você pode alternar entre Terminais Virtuais com os atalhos Ctrl + Alt + Fx (onde x é o número do terminal).

Agora o problema é este: Por padrão, o VT7 está habilitado e o VT8 está desabilitado. Mas quando eu mudo para o VT8, ele fica ativado, mas o VT7 fica desativado.

Como posso fazer com que ambos os terminais / servidores do X Server sejam executados em paralelo?

Obrigado.

Aqui está o meu lightdm.conf

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

[Seat:0]
xserver-layout=default

[Seat:1]
xserver-layout=displaylink

Aqui estão apenas as partes relevantes do meu 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
    
por Michael Franzl 01.11.2011 / 11:42

3 respostas

4

Relendo a entrada da wiki em link , eu acho que você deveria dar uma olhada em como o X é invocado; por exemplo. as opções de linha de comando -sharevts e -novtswitch devem ser transmitidas de alguma forma para X no seu lightdm.conf .

Se você tem um estado de trabalho, por favor considere atualizar a entrada do wiki para 11.10.

    
por aquaherd 01.11.2011 / 12:05
1

Obrigado pela dica. O switch -sharevts foi a chave. Não é adicionado por padrão pelo Lightdm. Eu olhei para /var/log/lightdm/lightdm.log e adicionei uma opção de comando xserver personalizada e agora ela finalmente funciona! Obrigado pela sua ajuda.

Meu 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
    
por Michael Franzl 01.11.2011 / 22:06
0

Eu acho que deve haver um conjunto separado de ttys para o segundo assento, e que o segundo servidor X deve ser executado em um desses. Depois de examinar o código do console do kernel, parece que foi escrito com a suposição de que há apenas um console. Ele usa variáveis globais para multiplexar os consoles virtuais em uma única tela e lê a entrada do teclado de todos os teclados conectados.

Parece que o código do console do Linux precisará ser refatorado de forma significativa para suportar vários lugares.

    
por psusi 09.01.2012 / 22:26