데비안의 X 및 xrandr 문제

데비안의 X 및 xrandr 문제

제가 사용하고 있는 X, xrandr 및 WM과 관련된 문제가 발생했습니다. 나는 여기 있다

  • 데비안 8은 안정적이며 업데이트되었습니다.
  • 인텔 그래픽 카드,
  • i3wm, DE 없음
  • lightDM(이것이 관련성이 있는지 확실하지 않지만 어느 시점에는 그럴 수도 있다고 생각합니다). 충돌이 발생했을 때 GDM을 사용하고 있었고 lightdm을 설치하려고 했습니다. DM이 X를 인증하는 것이 얼마나 복잡한지 모르겠습니다.

이것이 바로 그 장면이다. 집에 돌아와 노트북을 두 개의 모니터(VGA1 및 HDMI1)에 연결하고 LVDS1을 껐습니다. 이를 위해 .bashrc에 기능이 있습니다.

function duo {
    xrandr --output HDMI1 --right-of LVDS1
    xrandr --output LVDS1 --off # this is probably bad, but it still works thanks to xrandr
    xrandr --output HDMI1 --mode 1280x1024
    xrandr --output HDMI1 --right-of VGA1
    xrandr --output HDMI1 --rotate left
    xrandr --output VGA1 --mode 1280x1024
}

이 함수는 xrandr가 레이아웃을 어떻게 변경해야 하는지 실험하고 분석 중이기 때문에 혼란스럽습니다. 이는 아무런 문제 없이 100% 작동합니다. 연결을 끊고 "노트북" 모드로 돌아가려면 두 케이블을 모두 뽑고 i3wm에 바인딩된 Super+Shift+F8을 누릅니다. xrandr --auto이렇게 하면 VGA1과 HDMI1이 더 이상 연결되지 않으므로 연결이 끊어져야 하며 i3wm은 모든 작업 공간을 이동합니다. 하나의 화면으로. 때로는 이것이 작동하지만 대부분의 경우 X 서버가 충돌하여 로그인을 요청하는 DM으로 이동합니다. 그래서 열려 있는 응용 프로그램과 파일을 모두 잃어버렸습니다(저장에 관한 OCD에도 불구하고).

시스템 로그입니다. i3wm 구성 파일의 Super+Shift+F8에 바인딩된 스크립트에 의해 인쇄된 줄로 시작됩니다. 이 단축키를 사용하는 이유는 VGA 또는 HDMI에 대한 udev 규칙이 없기 때문입니다. 스크립트를 실행하지만 삭제하는 규칙이 있습니다. 게시할 수 있지만 게시물이 이미 너무 커서 복잡해지지 않기를 바랍니다. 따라서 HDMI 또는 VGA를 분리하면 LVDS가 검은색으로 바뀌고 이 스크립트는 이를 켜야 합니다. /var/log에서 Xorg.log를 게시할 수도 있지만 유용한 내용이 포함되어 있지 않은 것 같습니다(게시할 예정이지만 다시 한 번 – 내용이 너무 깁니다. 알려주시기 바랍니다).

이제 문제가 복잡해졌습니다. Debian 8과 함께 제공되는 Gnome 3을 설치했습니다. i3wm 없이 사용할 때 모든 것이 잘 작동하고 X가 충돌하지 않습니다! 이렇게 하면 모니터 2대를 연결하고 LVDS를 끄고 핫 플러그를 안전하게 제거할 수 있습니다. 내가 Gnome을 좋아하지 않는 것은 아니지만 i3wm과 최소한의 조명 설정(Arch 데스크탑에서 동일한 설정 사용)에 매우 익숙합니다. 노트북도 Gnome3에 비해 매우 오래되었습니다. 다른 DE를 시도하지 않는 것이 좋습니다.

#!/bin/bash
# Super+Shift+F8 is bound to this script in WM
function laptop() {
  xrandr --auto
  xrandr --output VGA1 --off
  xrandr --output HDMI1 --off
}
echo "running laptop script"
laptop


Oct 21 20:13:12 debianone /etc/gdm3/Xsession[8574]: running laptop script
Oct 21 20:13:12 debianone /etc/gdm3/Xsession[8574]: xrandr: cannot find crtc for output LVDS1
Oct 21 20:13:13 debianone gdm-Xorg-:0[8485]: (II) intel(0): Allocated new frame buffer 1024x1280 stride 4096, tiled
Oct 21 20:13:13 debianone /etc/gdm3/Xsession[8574]: X Error of failed request:  BadMatch (invalid parameter attributes)
Oct 21 20:13:13 debianone /etc/gdm3/Xsession[8574]: Major opcode of failed request:  140 (RANDR)
Oct 21 20:13:13 debianone /etc/gdm3/Xsession[8574]: Minor opcode of failed request:  21 (RRSetCrtcConfig)
Oct 21 20:13:13 debianone /etc/gdm3/Xsession[8574]: Serial number of failed request:  35
Oct 21 20:13:13 debianone /etc/gdm3/Xsession[8574]: Current serial number in output stream:  35
Oct 21 20:13:13 debianone /etc/gdm3/Xsession[8574]: i3: No usable outputs available.
Oct 21 20:13:13 debianone org.gtk.vfs.Daemon[8621]: A connection to the bus can't be made
Oct 21 20:13:13 debianone org.gtk.vfs.Daemon[8621]: g_dbus_connection_real_closed: Remote peer vanished with error: Underlying GIOStream returned 0 bytes on an async read (g-io-error-quark, 0). Exiting.
Oct 21 20:13:13 debianone org.a11y.Bus[8621]: g_dbus_connection_real_closed: Remote peer vanished with error: Underlying GIOStream returned 0 bytes on an async read (g-io-error-quark, 0). Exiting.
Oct 21 20:13:13 debianone /etc/gdm3/Xsession[8574]: [9400:9400:1021/201313:ERROR:chrome_browser_main_extra_parts_x11.cc(57)] X IO error received (X server probably went away)
Oct 21 20:13:13 debianone /etc/gdm3/Xsession[8574]: [libi3] libi3/font.c Using Pango font DejaVu Sans Mono, size 8
Oct 21 20:13:13 debianone /etc/gdm3/Xsession[8574]: [libi3] libi3/font.c X11 root window dictates 98.223565 DPI
Oct 21 20:13:13 debianone org.a11y.atspi.Registry[8648]: XIO:  fatal IO error 11 (Resource temporarily unavailable) on X server ":0"
Oct 21 20:13:13 debianone org.a11y.atspi.Registry[8648]: after 1608 requests (1608 known processed) with 0 events remaining.
Oct 21 20:13:13 debianone /etc/gdm3/Xsession[8574]: drracket: Fatal IO error 11 (Resource temporarily unavailable) on X server :0.
Oct 21 20:13:13 debianone /etc/gdm3/Xsession[8574]: [9434:9434:1021/201313:ERROR:x11_util.cc(82)] X IO error received (X server probably went away)
Oct 21 20:13:13 debianone /etc/gdm3/Xsession[8574]: Can't open display :0
Oct 21 20:13:13 debianone /etc/gdm3/Xsession[8574]: Exiting due to signal.
Oct 21 20:13:13 debianone /etc/gdm3/Xsession[8574]: XIO:  fatal IO error 11 (Resource temporarily unavailable) on X server ":0"
Oct 21 20:13:13 debianone /etc/gdm3/Xsession[8574]: after 2716 requests (2716 known processed) with 0 events remaining.
Oct 21 20:13:13 debianone /etc/gdm3/Xsession[4989]: Process 8664 dead!
Oct 21 20:13:13 debianone /etc/gdm3/Xsession[4989]: Warning: no target process found. Waiting for it...
Oct 21 20:13:13 debianone /etc/gdm3/Xsession[8574]: Process 8664 dead!
Oct 21 20:13:13 debianone /etc/gdm3/Xsession[8574]: Warning: no target process found. Waiting for it...
Oct 21 20:13:13 debianone gdm-Xorg-:0[8485]: (II) UnloadModule: "synaptics"
Oct 21 20:13:13 debianone gdm-Xorg-:0[8485]: (II) evdev: AT Translated Set 2 keyboard: Close
Oct 21 20:13:13 debianone gdm-Xorg-:0[8485]: (II) UnloadModule: "evdev"
Oct 21 20:13:13 debianone gdm-Xorg-:0[8485]: (II) evdev: Asus WMI hotkeys: Close
Oct 21 20:13:13 debianone gdm-Xorg-:0[8485]: (II) UnloadModule: "evdev"
Oct 21 20:13:13 debianone gdm-Xorg-:0[8485]: (II) evdev: USB Camera: Close
Oct 21 20:13:13 debianone gdm-Xorg-:0[8485]: (II) UnloadModule: "evdev"
Oct 21 20:13:13 debianone gdm-Xorg-:0[8485]: (II) evdev: Microsoft Microsoft® Nano Transceiver v1.0: Close
Oct 21 20:13:13 debianone gdm-Xorg-:0[8485]: (II) UnloadModule: "evdev"
Oct 21 20:13:13 debianone gdm-Xorg-:0[8485]: (II) evdev: Microsoft Microsoft® Nano Transceiver v1.0: Close
Oct 21 20:13:13 debianone gdm-Xorg-:0[8485]: (II) UnloadModule: "evdev"
Oct 21 20:13:13 debianone gdm-Xorg-:0[8485]: (II) evdev: Microsoft Microsoft® Nano Transceiver v1.0: Close
Oct 21 20:13:13 debianone gdm-Xorg-:0[8485]: (II) UnloadModule: "evdev"
Oct 21 20:13:13 debianone gdm-Xorg-:0[8485]: (II) evdev: Logitech USB Keyboard: Close
Oct 21 20:13:13 debianone gdm-Xorg-:0[8485]: (II) UnloadModule: "evdev"
Oct 21 20:13:13 debianone gdm-Xorg-:0[8485]: (II) evdev: Logitech USB Keyboard: Close
Oct 21 20:13:13 debianone gdm-Xorg-:0[8485]: (II) UnloadModule: "evdev"
Oct 21 20:13:13 debianone gdm-Xorg-:0[8485]: (II) evdev: Sleep Button: Close
Oct 21 20:13:13 debianone gdm-Xorg-:0[8485]: (II) UnloadModule: "evdev"
Oct 21 20:13:13 debianone gdm-Xorg-:0[8485]: (II) evdev: Video Bus: Close
Oct 21 20:13:13 debianone gdm-Xorg-:0[8485]: (II) UnloadModule: "evdev"
Oct 21 20:13:13 debianone gdm-Xorg-:0[8485]: (II) evdev: Power Button: Close
Oct 21 20:13:13 debianone gdm-Xorg-:0[8485]: (II) UnloadModule: "evdev"
Oct 21 20:13:13 debianone gdm-Xorg-:0[8485]: (EE) Server terminated successfully (0). Closing log file.

X, KDE, Debian 및 Ubuntu에서 유사한 문제에 대한 버그 보고서를 본 적이 있는데 수정된 것 같습니다. 확실히 최신 버전으로 업데이트했지만 여전히 충돌이 발생합니다. 최신 X로 백포트해야 합니까? 아니면 다른 것입니까?

답변1

메시지가 빠르게 연속되면 xrandrX 서버에서 오류가 발생할 수 있습니다. 나는 당신이 두 가지 일을 할 것을 제안합니다:

  • X 서버에 버그를 신고하세요. 무엇을 하든 충돌이 발생하지 않아야 합니다(최악의 경우 오류 메시지가 표시되어야 함).
  • xrandr한 번만 호출 되도록 스크립트를 변경하십시오 .

    xrandr --output LVDS --off --output VGA1 --mode 1280x1024 --output HDMI1 --mode 1280x1024 --rotate left --right-of VGA1
    

    여기서 중요한 점은 xrandr출력당 여러 명령을 전달할 수 있고 여러 출력을 . 개인적으로 출력 중 하나를 기본 출력으로 설정할 수도 있지만( 를 사용하여 --primary) 실제로는 중요하지 않습니다.

편집하다: 로그를 더 자세히 살펴보면 다음과 같습니다.

Oct 21 20:13:12 debianone /etc/gdm3/Xsession[8574]: xrandr: cannot find crtc for output LVDS1

CRTC는 디스플레이 제어 칩입니다. GPU에서 생성된 프레임 버퍼를 스캔 라인의 실제 구성 요소로 변환한 다음 선택한 출력(VGA, DVI, HDMI, DisplayPort, yada yada)을 통해 전송합니다. ~을 위한음극선 관 관제사, 비록 그 용어가 확실히 다소 구식이긴 하지만. 대부분의 GPU는 출력보다 이러한 수가 적으며 CRTC의 수는 GPU 카드가 동시에 제어할 수 있는 모니터 수를 결정하는 제한 요소인 경우가 많습니다. 몇 년 전까지만 해도 대부분의 Intel 모바일 GPU에서는 이 숫자가 2개였지만, 4K 화면(디스플레이당 2개의 CRTC 필요)이 등장하면서 현재 대부분의 최신 모바일 GPU에는 3개가 있습니다.

시스템은 LVDS(현재 eDP로 대체된 이전 표준)에 대해서도 설명하므로 두 개의 CRTC가 있다고 가정하는 것이 매우 안전합니다.

위에서 인용한 오류 메시지의 의미는 X 서버에 LVDS 패널 활성화를 요청하면 사용 가능한 CRTC를 찾았지만 찾지 못했다는 것입니다. 그러면 상황이 정말 나빠지는 것 같았습니다. 따라서 문제에 대한 해결책은 다음을 확인하는 것입니다.외부 출력을 비활성화하여 외부 모니터를 활성화하려고 하면 CRTC를 사용할 수 있습니다.앞으로지금 시도하는 것처럼 나중에 활성화하는 대신 내부적으로 활성화합니다.

관련 정보