Multi-sede com o Kubuntu 17.10 / Artful (systemd, sddm, KDE)

1

Eu quero configurar vários lugares no meu PC. Eu já adicionei um segundo adaptador VGA para tornar as coisas mais fáceis / possíveis ?.

Temos:

  • Kubuntu Artful 17.10 (KDE)
  • systemd
  • sddm (provavelmente precisamos usar o lightdm, já que o sddm não possui recursos de várias sedes)
  • Intel gfx on-die i5-4570S
  • ATI RV710 / Radeon HD4350 / 4550 muito antigo

Vamos tentar documentar uma solução genérica para versões recentes do Kubuntu / Ubuntu.

Estou convencido de que, se eu começar o X, não tenho nenhuma entrada em seat0 e ruído aleatório em seat-tv .

Criei uma nova pergunta porque as perguntas / respostas existentes são especializadas em hardware ou incompletas para explicar o histórico. Pelo menos eu não consegui resolver o problema usando fontes existentes.

Eu criei uma resposta da comunidade, então sinta-se à vontade para editar a resposta abaixo.

Quando terminar, devo acrescentar como iniciar o Kodi apenas sem o gerenciador de exibição e o gerenciador de janelas na TV do assento.

    
por JPT 18.03.2018 / 14:33

1 resposta

0

Antes de começar

  • Backup do seu sistema e / ou etc
  • Instale openssh-server e verifique se você pode fazer login em outro computador, caso o login local não funcione
  • desativar o início automático do gerenciador de exibição: sudo systemctl set-default multi-user.target
  • pense em um bom nome para seus lugares. Convenções diz que tem que começar com seat- . Eu escolho seat-tv .

Configurar regras do udev

  • leia sobre as regras do udev aqui link link
  • encontre seu hardware usando um desses

    $ lspci -nn
    [stripped non-audio, nongraphics]
    00:02.0 VGA compatible controller [0300]: Intel Corporation Xeon E3-1200 v3/4th Gen Core Processor Integrated Graphics Controller [8086:0412] (rev 06)
    00:03.0 Audio device [0403]: Intel Corporation Xeon E3-1200 v3/4th Gen Core Processor HD Audio Controller [8086:0c0c] (rev 06)
    00:1b.0 Audio device [0403]: Intel Corporation 8 Series/C220 Series Chipset High Definition Audio Controller [8086:8c20] (rev 05)
    01:00.0 VGA compatible controller [0300]: Advanced Micro Devices, Inc. [AMD/ATI] RV710 [Radeon HD 4350/4550] [1002:954f]
    01:00.1 Audio device [0403]: Advanced Micro Devices, Inc. [AMD/ATI] RV710/730 HDMI Audio [Radeon HD 4000 series] [1002:aa38]
    
    $ lsusb
    [stripped non-audio, non-input]
    Bus 003 Device 019: ID 413c:a503 Dell Computer Corp. [Soundbar]
    Bus 003 Device 018: ID 03f0:034a Hewlett-Packard Elite Keyboard
    Bus 003 Device 017: ID 046d:c050 Logitech, Inc. RX 250 Optical Mouse
    Bus 003 Device 023: ID 1915:0196 Nordic Semiconductor ASA [Mele USB remote keyboard and mouse]
    # how do I get a more useful output from lsusb?
    
    $ loginctl seat-status
    Devices:
    ├─/sys/devices/LNXSYSTM:00/LNXPWRBN:00/input/input1
    │ input:input1 "Power Button"
    ├─/sys/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/LNXVIDEO:00/input/input5
    │ input:input5 "Video Bus"
    ├─/sys/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0C0C:00/input/input0
    │ input:input0 "Power Button"
    ├─/sys/devices/pci0000:00/0000:00:01.0/0000:01:00.0/drm/renderD128
    │ drm:renderD128
    ├─/sys/devices/pci0000:00/0000:00:02.0/drm/card1
    │ [MASTER] drm:card1
    │ ├─/sys/devices/pci0000:00/0000:00:02.0/drm/card1/card1-DP-1
    │ │ [MASTER] drm:card1-DP-1
    │ ├─/sys/devices/pci0000:00/0000:00:02.0/drm/card1/card1-HDMI-A-1
    │ │ [MASTER] drm:card1-HDMI-A-1
    │ ├─/sys/devices/pci0000:00/0000:00:02.0/drm/card1/card1-HDMI-A-2
    │ │ [MASTER] drm:card1-HDMI-A-2
    │ ├─/sys/devices/pci0000:00/0000:00:02.0/drm/card1/card1-HDMI-A-3
    │ │ [MASTER] drm:card1-HDMI-A-3
    │ └─/sys/devices/pci0000:00/0000:00:02.0/drm/card1/card1-VGA-1
    │   [MASTER] drm:card1-VGA-1
    ├─/sys/devices/pci0000:00/0000:00:02.0/drm/renderD129
    │ drm:renderD129
    ├─/sys/devices/pci0000:00/0000:00:02.0/graphics/fb1
    │ [MASTER] graphics:fb1 "inteldrmfb"
    ├─/sys/devices/pci0000:00/0000:00:03.0/sound/card0
    │ sound:card0 "HDMI_1"
    │ ├─/sys/devices/pci0000:00/0000:00:03.0/sound/card0/input10
    │ │ input:input10 "HDA Intel HDMI HDMI/DP,pcm=8"
    │ ├─/sys/devices/pci0000:00/0000:00:03.0/sound/card0/input11
    │ │ input:input11 "HDA Intel HDMI HDMI/DP,pcm=9"
    │ ├─/sys/devices/pci0000:00/0000:00:03.0/sound/card0/input12
    │ │ input:input12 "HDA Intel HDMI HDMI/DP,pcm=10"
    │ ├─/sys/devices/pci0000:00/0000:00:03.0/sound/card0/input8
    │ │ input:input8 "HDA Intel HDMI HDMI/DP,pcm=3"
    │ └─/sys/devices/pci0000:00/0000:00:03.0/sound/card0/input9
    │   input:input9 "HDA Intel HDMI HDMI/DP,pcm=7"
    ├─/sys/devices/pci0000:00/0000:00:14.0/usb3
    │ usb:usb3
    │ ├─/sys/devices/pci0000:00/0000:00:14.0/usb3/3-2/3-2:1.0/0003:1915:0196.0027/input/input47
    │ │ input:input47 "MELE RI"
    │ ├─/sys/devices/pci0000:00/0000:00:14.0/usb3/3-2/3-2:1.1/0003:1915:0196.0028/input/input48
    │ │ input:input48 "MELE RI"
    │ ├─/sys/devices/pci0000:00/0000:00:14.0/usb3/3-2/3-2:1.2/0003:1915:0196.0029/input/input49
    │ │ input:input49 "MELE RI"
    │ └─/sys/devices/pci0000:00/0000:00:14.0/usb3/3-5
    │   usb:3-5
    │   ├─/sys/devices/pci0000:00/0000:00:14.0/usb3/3-5/3-5.1/3-5.1:1.0/0003:046D:C050.0017/input/input34
    │   │ input:input34 "Logitech USB-PS/2 Optical Mouse"
    │   ├─/sys/devices/pci0000:00/0000:00:14.0/usb3/3-5/3-5.2/3-5.2:1.0/0003:03F0:034A.0018/input/input35
    │   │ input:input35 "Chicony HP Elite USB Keyboard"
    │   ├─/sys/devices/pci0000:00/0000:00:14.0/usb3/3-5/3-5.2/3-5.2:1.1/0003:03F0:034A.0019/input/input36
    │   │ input:input36 "Chicony HP Elite USB Keyboard"
    │   ├─/sys/devices/pci0000:00/0000:00:14.0/usb3/3-5/3-5.3/3-5.3:1.0/sound/card3
    │   │ sound:card3 "SoundBar"
    │   └─/sys/devices/pci0000:00/0000:00:14.0/usb3/3-5/3-5.3/3-5.3:1.3/0003:413C:A503.001A/input/input37
    │     input:input37 "Dell Dell AC511 USB SoundBar"
    ├─/sys/devices/pci0000:00/0000:00:14.0/usb4
    │ usb:usb4
    ├─/sys/devices/pci0000:00/0000:00:1a.0/usb1
    │ usb:usb1
    │ └─/sys/devices/pci0000:00/0000:00:1a.0/usb1/1-1
    │   usb:1-1
    ├─/sys/devices/pci0000:00/0000:00:1b.0/sound/card1
    │ sound:card1 "PCH"
    │ ├─/sys/devices/pci0000:00/0000:00:1b.0/sound/card1/input13
    │ │ input:input13 "HDA Intel PCH Front Mic"
    │ ├─/sys/devices/pci0000:00/0000:00:1b.0/sound/card1/input14
    │ │ input:input14 "HDA Intel PCH Rear Mic"
    │ ├─/sys/devices/pci0000:00/0000:00:1b.0/sound/card1/input15
    │ │ input:input15 "HDA Intel PCH Line"
    │ ├─/sys/devices/pci0000:00/0000:00:1b.0/sound/card1/input16
    │ │ input:input16 "HDA Intel PCH Line Out"
    │ └─/sys/devices/pci0000:00/0000:00:1b.0/sound/card1/input17
    │   input:input17 "HDA Intel PCH Front Headphone"
    ├─/sys/devices/pci0000:00/0000:00:1d.0/usb2
    │ usb:usb2
    │ └─/sys/devices/pci0000:00/0000:00:1d.0/usb2/2-1
    │   usb:2-1
    ├─/sys/devices/pci0000:00/0000:00:1f.2/ata1/host0/target0:0:0/0:0:0:0/block/sr0
    │ block:sr0
    ├─/sys/devices/pci0000:00/0000:00:1f.2/ata1/host0/target0:0:0/0:0:0:0/scsi_generic/sg0
    │ scsi_generic:sg0
    ├─/sys/devices/platform/eeepc-wmi/input/input6
    │ input:input6 "Eee PC WMI hotkeys"
    ├─/sys/devices/virtual/misc/kvm
    │ misc:kvm
    └─/sys/devices/virtual/misc/rfkill
    misc:rfkill
    
  • adicione regras por ...

    • usando loginctl plus acima dos pathes para criar as regras do udev, mas não recomendo. Os IDs dos ônibus permanecem os mesmos?

      # gfx
      sudo loginctl attach seat-tv /sys/devices/pci0000:00/0000:00:01.0/0000:01:00.0/drm/card0
      sudo loginctl attach seat-tv /sys/devices/pci0000:00/0000:00:01.0/0000:01:00.0/graphics/fb0
      # hdmi audio
      sudo loginctl attach seat-tv /sys/devices/pci0000:00/0000:00:01.0/0000:01:00.1/sound/card2
      # mele remote
      sudo loginctl attach seat-tv /sys/devices/pci0000:00/0000:00:14.0/usb3/3-2/3-2:1.0/0003:1915:0196.0008/input/input21
      sudo loginctl attach seat-tv /sys/devices/pci0000:00/0000:00:14.0/usb3/3-2/3-2:1.1/0003:1915:0196.0009/input/input22
      sudo loginctl attach seat-tv /sys/devices/pci0000:00/0000:00:14.0/usb3/3-2/3-2:1.2/0003:1915:0196.000A/input/input23
      
    • Isso adiciona arquivos de regras como os seguintes. A regra define ID_SEAT como seat-tv se ID_FOR_SEAT corresponder ao dado.

      $ cat /etc/udev/rules.d/72-seat-graphics-pci-0000_01_00_0.rules'
      TAG=="seat", ENV{ID_FOR_SEAT}=="graphics-pci-0000_01_00_0", ENV{ID_SEAT}="seat-tv"
      
    • ou criando as regras do udev manualmente. Eu prefiro VendorID / ProductID para identificação. Nomes de arquivo devem começar com 72 porque outras coisas relacionadas a assentos em /lib/udev/rules.d são 71 ou 73.

      $ cat 72-seat0.rules
      # do I really need to set up anything for seat0?
      # It should just grab anything not allocated to another seat?
      # Intel GFX
      # if TAG contains seat and vendor and product match the hex codes than set ID_SEAT to seat0
      TAG=="seat", ATTRS{idVendor}=="0x8086", ATTRS{idProduct}=="0x0412", ENV{ID_SEAT}="seat0"
      
      # Dell AC511 Sound
      #/sys/devices/pci0000:00/0000:00:14.0/usb3/3-5/3-5.3/3-5.3:1.0/sound/card3
      #/sys/devices/pci0000:00/0000:00:14.0/usb3/3-5/3-5.3/3-5.3:1.3/0003:413C:A503.001A/input/input37
      TAG=="seat", ATTRS{idVendor}=="0x413c", ATTRS{idProduct}=="0xa503", ENV{ID_SEAT}="seat0"
      
      # HP Keyboard
      #/sys/devices/pci0000:00/0000:00:14.0/usb3/3-5/3-5.2/3-5.2:1.0/0003:03F0:034A.0018/input/input35
      #/sys/devices/pci0000:00/0000:00:14.0/usb3/3-5/3-5.2/3-5.2:1.1/0003:03F0:034A.0019/input/input36
      SUBSYSTEM=="input", ATTRS{idVendor}=="0x03f0", ATTRS{idProduct}=="0x034a", ENV{ID_INPUT.tags}="input_seat0"
      
      # Logitech Mouse
      #/sys/devices/pci0000:00/0000:00:14.0/usb3/3-5/3-5.1/3-5.1:1.0/0003:046D:C050.0017/input/input34
      SUBSYSTEM=="input", ATTRS{idVendor}=="0x046d", ATTRS{idProduct}=="0xc050", ENV{ID_INPUT.tags}="input_seat0"
      
      $ cat 72-seat-tv.rules
      # ATI RV710
      #/sys/devices/pci0000:00/0000:00:01.0/0000:01:00.0/drm/card0
      #/sys/devices/pci0000:00/0000:00:01.0/0000:01:00.0/graphics/fb0
      # any graphics card should already have the master-of-seat TAG,
      # see /lib/udev/rules.d/71-u-d-c-gpu-detection.rules
      #SUBSYSTEM=="drm", KERNEL=="card[0-9]*", ATTRS{idVendor}=="0x1002", ATTRS{idProduct}=="0x954f", TAG+="master-of-seat"
      TAG=="seat", ATTRS{idVendor}=="0x1002", ATTRS{idProduct}=="0x954f" , ENV{ID_SEAT}="seat-tv"
      
      # ATI HDMI audio
      #/sys/devices/pci0000:00/0000:00:01.0/0000:01:00.1/sound/card2
      #/sys/devices/pci0000:00/0000:00:01.0/0000:01:00.1/sound/card2/input7
      TAG=="seat", ATTRS{idVendor}=="0x1002", ATTRS{idProduct}=="0xaa38", ENV{ID_SEAT}="seat-tv"
      #TAG=="seat", ENV{ID_FOR_SEAT}=="sound-pci-0000_01_00_1", ENV{ID_SEAT}="seat-tv"
      
      # Mele USB remote keyboard and mouse
      #1915:0196
      SUBSYSTEM=="input", ATTRS{idVendor}=="0x1915", ATTRS{idProduct}=="0x0196", ENV{ID_INPUT.tags}="input_seat-tv", ENV{ID_SEAT}="seat-tv"
      
      # TODO usb hub where all attached devices belong to this seat
      #SUBSYSTEM=="input", DEVPATH=="/devices/pci0000:00/0000:00:1d.0/usb2/*", ENV{ID_INPUT.tags}="input_seat-tv"
      
  • você deve agora (após a reinicialização do gerenciador de exibição?) perceber o seguinte

    • as entradas atribuídas a outros lugares não devem funcionar mais no assento0
    • as telas atribuídas a outros lugares devem desaparecer das configurações do sistema / exibir
    • mesmo para o dispositivo de áudio

Configuração do Xorg

  • crie um diretório como /etc/X11/xorg.conf.multiseat para que ele não altere sua configuração padrão.
  • buscar a configuração atual do xorg com sudo Xorg :2 -configure
  • crie o arquivo /etc/X11/xorg.conf.multiseat/90-seat-tv.conf

    Section "Device"
            # get this from Xorg -configure
            Identifier  "Card0"
            Driver      "amdgpu"
            BusID       "PCI:1:0:0"
    
            MatchSeat      "seat-tv"
    #    Identifier     "Seat-TV"
    #    Option         "ProbeAllGpus" "FALSE"
    EndSection
    
    #Section "Device"
    #       Identifier  "Card1"
    #       Driver      "amdgpu"
    #       BusID       "PCI:1:0:1"
    #EndSection
    
    Section "InputClass"
            Identifier      "ignore_other_seats"
            Option          "Ignore" "yes"
    EndSection
    
    Section "InputClass"
            Identifier      "use_seat_devices"
            MatchTag        "input_seat-tv"
            Option          "Ignore" "no"
    EndSection
    
  • Eu não sei sobre as entradas comentadas.

  • Preciso de um arquivo semelhante para seat0 ou os padrões estão ok?
  • TODO: layout do servidor

Teste

  • logout do gui e desligue o gerenciador de janelas usando sudo service sddm stop
  • inicie o X em todos os seus lugares - um após o outro - e veja o que acontece. startx -- -layout seat0 -config xorg.conf.multiseat , consulte link

Desfazer

  • temporariamente
    • ative seu gerenciador de janelas novamente sudo systemctl set-default graphical.target
  • permanentemente
    • exclua seus arquivos udev /etc/udev/rules.d/72-*
    • elimine a sua pasta /etc/X11/xorg.conf.multseat

E agora?

  • O que estou perdendo?
  • Como funciona o layout do servidor?
  • O teclado da Mele de alguma forma não está conectado à TV do assento?
por JPT 18.03.2018 / 16:10