Last Updated: February 25, 2016
·
8.67K
· Alisue Lambda

debian (wheezy) を Dual Display にする

まる一日ハマったので

重要ポイント

  1. TwinViewなんてなかったんやー
  2. /etc/X11/xorg.conf でデュアルディスプレイとかしないんだわさ
  3. ~/.config/monitors.xml に気をつけろ、闇だ

やりかた

ディスプレイの認識確認

まずは xrandr でディスプレイが認識されているか確認します。
認識されている場合はいかのようになると思います

% xrandr
Screen 0: minimum 8 x 8, current 3600 x 1080, maximum 8192 x 8192
DVI-I-0 disconnected (normal left inverted right x axis y axis)
VGA-0 disconnected (normal left inverted right x axis y axis)
DVI-I-1 connected 1680x1050+0+30 (normal left inverted right x axis y axis) 473mm x 296mm
   1680x1050      60.0*+   60.0  
   1600x1200      60.0  
   1440x900       75.0     59.9  
   1280x1024      75.0     60.0  
   1152x864       75.0  
   1024x768       75.0     70.1     60.0  
   800x600        75.0     72.2     60.3     56.2  
   640x480        75.0     72.8     59.9  
HDMI-0 connected 1920x1080+1680+0 (normal left inverted right x axis y axis) 510mm x 290mm
   1920x1080      59.9*+   60.0     60.0     59.9     50.0     30.0     30.0     25.0  
   1680x1050      60.0  
   1280x1024      75.0     60.0  
   1280x720       60.0     59.9     50.0  
   1152x864       75.0  
   1024x768       75.0     60.0  
   800x600        75.0     60.3     56.2  
   720x576        50.0  
   720x480        59.9  
   640x480        75.0     59.9     59.9  

このように接続されているディスプレイがすべて認識されていれば問題ないのですが…僕の場合はここが大問題でした。HDMI側が全く認識されない。

xorg.conf をいじってディスプレイを認識させる

なので強制的にディスプレイを認識させます。僕の場合一枚のビデオカードに DVI と HDMI をさした形だったので以下のように /etc/X11/xorg.conf を編集しました。なおドライバーのインストールに関しては http://wiki.debian.org/NvidiaGraphicsDrivers にしたがって行なっています

/etc/X11/xorg.conf は必ずバックアップをとってから編集してください。失敗した場合初心者だと復旧が絶望的になります

Section "ServerLayout"
    Identifier     "Layout0"
    Screen      0  "Screen0" 0 0
    Option         "Xinerama" "0"
EndSection

Section "Module"
    Load           "glx"
EndSection

Section "Device"
    Identifier     "Device0"
    Driver         "nvidia"
    VendorName     "NVIDIA Corporation"
    BoardName      "GeForce 210"
    # nvidia に自動で設定させる
    Option         "MetaModes" "nvidia-auto-select"
    # このへんから味噌、このデバイスに二個目のモニター
    # がついてることを強制的に認識させている
    Option         "SecondMonitorHorizSync" "UseEdidFreqs"
    Option         "SecondMonitorVertRefresh" "UseEdidFreqs"
    Option         "ConnectedMonitor" "DFP-0,DFP-1"
EndSection

Section "Screen"
    Identifier     "Screen0"
    Device         "Device0"
    Monitor        "Monitor0"
    DefaultDepth    24
    # ここに TwinView を書くと普通はデュアルディスプレイ
    # の設定ができるんだけどね…Gnome3では書いちゃダメです
    SubSection     "Display"
        Depth       24
        Modes      "nvidia-auto-select"
    EndSubSection
EndSection

再起動後 xrandr にてディスプレイがただしく認識されていればOK

Gnome3の設定からデュアルディスプレイを設定する

これが味噌でした。 xrandr で認識されていれば Gnome3 の設定からデュアルディスプレイの設定を行うことができます。これを行わず xorg.conf にて TwinView などを使用した場合、初回起動時は ~/.config/monitors.xml の設定が優先されるのか知りませんが、デュアルディスプレイのサブディスプレイに背景が表示されないなどの不都合が発生します(ただ、これは service gdm3 restart で直る、なぜか)

以上。xorg.conf をいじらないとディスプレイを認識しなかったので永遠と xorg.conf でデュアルディスプレイにしようとしていました。本当にハマった……

おまけ:Xが起動しない

もしも /etc/X11/xorg.conf の編集をミスして X が起動しなくなった場合はシングルユーザーモード(起動時に レスキュー とか書いてあるやつ)を選んで入ると root では入れます。その後

# cp /etc/X11/xorg.conf.backup /etc/X11/xorg.conf

とすれば多分復帰可能。もしも xorg.conf のバックアップを取り忘れてしまったヤンチャな方は以下のどちらかの方法でデフォルトのものを作成可能、ですがそれで直るかは……ま、試す価値はあります

Xorgを使用した方法 (GUI起動時不可)

# Xorg -configure
# cp ~/xorg.conf.new /etc/X11/xorg.conf

nvidia-xconfig を使用した方法

# aptitude install nvidia-xconfig
# nvidia-xconfig