X는 시작 시 모니터 및 레이아웃 구성을 읽지만 xrandr은 Screen0만 표시합니다.

X는 시작 시 모니터 및 레이아웃 구성을 읽지만 xrandr은 Screen0만 표시합니다.

저는 며칠 동안 아치 리눅스를 설정해 왔습니다. 대부분의 경우 진행하기 쉽지만 멀티 헤드 지원에 실제 문제가 있습니다.

Intel 및 NVIDIA 비디오 칩과 하이브리드 그래픽을 갖춘 Thinkpad X1 Extreme을 사용하고 있습니다.

나는 다음을 설치했습니다:

  • xf86-비디오-인텔
  • xf86-비디오-vesa
  • 호박벌
  • BB 스위치
  • 광DM
  • i3wm

이것은 내가 사용하고 있는 xorgconf입니다:

Section "ServerLayout"
    Identifier  "Layout0"
    Screen      0 "Screen0" 0 0
    Screen      1 "Screen1" Above "Screen0"
    InputDevice "Mouse0" "CorePointer"
    InputDevice "Keyboard0" "CoreKeyboard"
EndSection

Section "Module"
    Load           "dbe"
    Load           "extmod"
    Load           "type1"
    Load           "freetype"
    Load           "glx"
EndSection

Section "InputDevice"
    # generated from default
    Identifier     "Mouse0"
    Driver         "mouse"
    Option         "Protocol" "auto"
    Option         "Device" "/dev/psaux"
    Option         "Emulate3Buttons" "no"
    Option         "ZAxisMapping" "4 5"
EndSection

Section "InputDevice"
    # generated from default
    Identifier     "Keyboard0"
    Driver         "keyboard"
EndSection
Section "Device"
    Identifier  "intelgpu0"
    Driver      "intel"
    Screen      0
    Option      "XvMC" "true"
    Option      "UseEvents" "true"
    Option      "AccelMethod" "UXA"
    BusID       "PCI:00:02:0"
EndSection

Section "Device"
    Identifier  "intelgpu1"
    Driver      "intel"
    Screen      1
    Option      "XvMC" "true"
    Option      "UseEvents" "true"
    Option      "AccelMethod" "UXA"
    BusID       "PCI:00:02:0"
EndSection

Section "Device"
    Identifier  "nvidiagpu0"
    Driver      "nvidia"
    BusID       "PCI:01:00:0"
EndSection

Section "Monitor"
    Identifier  "Monitor0"
    Option      "Enable" "true"
EndSection

Section "Monitor"
    Identifier  "Monitor1"
    Option      "Enable" "true"
EndSection

Section "Screen"
    Identifier  "Screen0"
    Device      "intelgpu0"
    Monitor     "Monitor0"
    DefaultDepth    24
    Option      "TwinView" "0"
    SubSection "Display"
        Depth       24
    EndSubSection
EndSection

Section "Screen"
    Identifier  "Screen1"
    Device      "intelgpu1"
    Monitor     "Monitor1"
    DefaultDepth    24
    Option      "TwinView" "0"
    SubSection "Display"
        Depth       24
    EndSubSection
EndSection

다음은 두 비디오 장치에 대한 lspci -v 출력입니다.

00:02.0 VGA compatible controller: Intel Corporation Device 3e9b (prog-if 00 [VGA controller])
    Subsystem: Lenovo Device 2267
    Flags: bus master, fast devsel, latency 0, IRQ 171
    Memory at 404a000000 (64-bit, non-prefetchable) [size=16M]
    Memory at 80000000 (64-bit, prefetchable) [size=256M]
    I/O ports at 6000 [size=64]
    [virtual] Expansion ROM at 000c0000 [disabled] [size=128K]
    Capabilities: <access denied>
    Kernel driver in use: i915
    Kernel modules: i915

01:00.0 VGA compatible controller: NVIDIA Corporation GP107M [GeForce GTX 1050 Ti Mobile] (rev a1) (prog-if 00 [VGA controller])
    Subsystem: Lenovo GP107M [GeForce GTX 1050 Ti Mobile]
    Flags: bus master, fast devsel, latency 0, IRQ 16
    Memory at bf000000 (32-bit, non-prefetchable) [size=16M]
    Memory at 60000000 (64-bit, prefetchable) [size=256M]
    Memory at 70000000 (64-bit, prefetchable) [size=32M]
    I/O ports at 5000 [size=128]
    Expansion ROM at c0000000 [disabled] [size=512K]
    Capabilities: <access denied>
    Kernel driver in use: nvidia
    Kernel modules: nouveau, nvidia_drm, nvidia

X를 실행하면 레이아웃과 화면이 잘 선택되는 것 같습니다(이전에는 첫 번째 화면 섹션을 읽는 데 어려움이 있었습니다).

[     2.312] (==) Using config directory: "/etc/X11/xorg.conf.d"
[     2.312] (==) Using system config directory "/usr/share/X11/xorg.conf.d"
[     2.314] (==) ServerLayout "Layout0"
[     2.314] (**) |-->Screen "Screen0" (0)
[     2.314] (**) |   |-->Monitor "Monitor0"
[     2.315] (**) |   |-->Device "intelgpu0"
[     2.315] (**) |-->Screen "Screen1" (1)
[     2.315] (**) |   |-->Monitor "Monitor1"
[     2.315] (**) |   |-->Device "intelgpu1"
[     2.315] (**) |-->Input Device "Mouse0"
[     2.315] (**) |-->Input Device "Keyboard0"
[     2.315] (==) Automatically adding devices
[     2.315] (==) Automatically enabling devices
[     2.315] (==) Automatically adding GPU devices
[     2.315] (==) Automatically binding GPU devices

(전체 Xorg.0.log의 Pastebin)

bbswitch는 몇 가지 문제가 있기는 하지만 두 비디오 장치를 모두 인식하고 관리할 수 있는 것 같습니다.

[    2.272033] bbswitch: loading out-of-tree module taints kernel.
[    2.272053] bbswitch: module verification failed: signature and/or required key missing - tainting kernel
[    2.272220] bbswitch: version 0.8
[    2.272238] bbswitch: Found integrated VGA device 0000:00:02.0: \_SB_.PCI0.GFX0
[    2.272243] bbswitch: Found discrete VGA device 0000:01:00.0: \_SB_.PCI0.PEG0.PEGP
[    2.272435] bbswitch: detected an Optimus _DSM function
[    2.272526] bbswitch: Succesfully loaded. Discrete card 0000:01:00.0 is on
[    2.276310] bbswitch: disabling discrete graphics

(전체 출력의 dmesg Pastebin)

xrandr하지만 여전히 xrandr --listproviders화면 1개와 제공자 1개만 표시됩니다.

$ xrandr
Screen 0: minimum 320 x 200, current 1920 x 1080, maximum 8192 x 8192
eDP1 connected primary 1920x1080+0+0 (normal left inverted right x axis y axis) 344mm x 194mm
   1920x1080     60.03*+  59.96    59.93    47.99  
   1680x1050     59.95    59.88  
   ...

$ xrandr --listproviders
Providers: number : 1
Provider 0: id: 0x43 cap: 0xb, Source Output, Sink Output, Sink Offload crtcs: 3 outputs: 1 associated providers: 0 name:Intel

시작 후 출력을 사용할 수 없기 때문에 xrandr을 사용하여 모니터를 열거나 이동할 수 없습니다(모니터 연결 여부에 관계 없음).

답변1

이에 대한 해결책이 있습니다.

방해하지 않도록 xorg conf 파일을 삭제하고 xrandr화면 0에 더미 출력을 표시하기 시작했습니다.

이것을 실행했는데 intel-virtual-output화면이 깜박이고 xrandr많은 내용이 표시되었습니다.VIRTUAL3( ) 중 하나가 연결된 가상 출력 입니다.

그런 다음 해당 모드를 설정할 수 있으며 디스플레이가 켜지고 작업 공간이 표시됩니다.

해상도가 너무 틀려서 정확한 해상도로 패턴을 만들 수가 없는데 그건 또 다른 문제네요.

관련 정보