web-dev-qa-db-ja.com

DebianでのXとxrandrの問題

X、xrandr、そしておそらく使用しているWMに関連していると思われる問題が発生しています。私は

  • Debian 8は安定しており、更新されています。
  • インテルグラフィックス、
  • i3wm、DEなし
  • lightDM(これが関連しているかどうかはわかりませんが、ある時点で関連があると思いました)。クラッシュ時にGDMを使用してから、lightdmをインストールしようとしました。 DMによるXの認証の複雑さはわかりません。

これがシナリオです。家に帰ってラップトップを2台のモニター(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でxrandr --autoにバインドされているSuper + Shift + F8を押します。これにより、VGA1とHDMI1が接続されていないため、切断されます。もう、i3wmはすべてのワークスペースを単一の画面に移動します。これが機能することもありますが、ほとんどの場合、XサーバーがクラッシュしてDMログインのプロンプトが表示されます。したがって、開いているすべてのアプリケーションと、場合によってはファイルが失われます(ただし、保存に関してはOCDです)。

これがsyslogです。それは私のi3wm設定ファイルのSuper + Shift + F8にバインドされている私のスクリプトによって印刷された行で始まります。このショートカットの理由は、VGAまたはHDMIのudevルールがないためです。スクリプトを実行するルールがありましたが、削除しました。投稿することはできますが、投稿はすでに非常に大きいので、散らかしたくありません。したがって、HDMIまたはVGAを抜くと、LVDSが黒くなり、このスクリプトでオンになります。/var/logからXorg.logを投稿することもできますが、何も役に立たないようです(投稿しますが、長いですが、お知らせください)。

今や複雑なことに、Debian8のインストールに付属しているGnome3がインストールされています。私がそれを使用し、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
Serge Poele

xrandrメッセージの急速な連続が、Xサーバーのバグを引き起こしている可能性があります。私はあなたが2つのことをすることを提案します:

  • Xサーバーに対してバグを報告します。何をしてもクラッシュすることは想定されていません(最悪の場合、エラーメッセージが表示されるはずです)
  • xrandrを1回だけ呼び出すようにスクリプトを変更します。

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

    ここでのポイントは、出力ごとに複数のコマンドをxrandrに渡すことができ、複数の出力を渡すことができるということです。個人的には、出力の1つをプライマリ出力として設定します(--primary)、しかしそれは重要ではありません。

[〜#〜] edit [〜#〜]:ログをもう少し詳しく見ると、次のことがわかります。

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)を介して送信されます。略語は Cathode Ray Tube Controller の略ですが、その用語は明らかにやや時代遅れです。ほとんどのGPUは、出力よりも少ない数であり、CRTCの数は通常、GPUカードが同時に操作できるモニターの数を決定する制限要因です。数年前まで、ほとんどのIntelのモバイルGPUではその数は2でしたが、4K画面(モニターごとに2つのCRTCが必要)の外観により、最新のモバイルGPUには3つあります。

システムはLVDS(現在は組み込みディスプレイポートまたはeDPに置き換えられている古い標準)についても説明しているため、2つのCRTCがあると想定するのはかなり安全です。

上で引用したエラーメッセージが意味するのは、XサーバーにLVDSパネルを有効にするように要求すると、使用可能なCRTCが検索され、見つからないということです。その後、物事はひどくうまくいかないようです。したがって、問題の解決策は、外部出力を無効にすることで、外部モニターを有効にしようとしたときにis利用可能なCRTCがあることを確認することですbeforeあなたが今やろうとしているように、後でではなく内部のもの。

3
Wouter Verhelst