5月16日
Gnome / Debian lennyで,dual display環境を構築する。
大学で使うcomputerに,Windows VISTAとDebian lenny(5.0.1)をインストールした。
Computerなんてのは大体においてdual head (dual display)でないと役に立たないので,今回もdual headを構築しようと試みた。(だってLaTeXで文章を書くときにいちいちpreview画面を見るのにwindow切り替えなきゃいけないとか耐えられなくない?)
Windowsの方は,いつものように画面の設定みたいなところで3分でできたのだけど,Gnome/Debianの方は何をやっていいのかさっぱりわからず,結局3日間を要してしまった。これもすべてWeb上にまともな情報がないのが問題なので,この俺様が後の人々のために書き残しておくことにする。
ちなみに僕はこれまでずっとLinuxはCUIでしか使ったことがなかったので,gnomeを自分で設定するのは初めてです。GUIめんどくさいね。Windows/Cygwinでいいじゃん的な何か。
環境
- OS
- Debian Lenny (i386) / Gnome 2.22.3
- Graphic Card
- ATI Radeon HD2600
- Package管理
- apt-get
- 操作する人
- みしょ。LinuxのCUIは使えるけれどもGnomeの設定は初めて。
精神
- 多分Debianじゃなくても,他の大抵のLinuxでうまくいくと思う。
- 多分Radeon HD2600じゃなくても,他の大抵のGraphic boardでうまくいくと思う。
- 基本的には,/etc/X11/xorg.confを編集すればよい。
- でもそこに何を書いたらよいのか分からない。Google検索してxorg.confの実例を見ても何がなんだかわからない。だから基本的には自動で設定してもらう。
- xrandrと仲良くなろう。
- 困ったらGoogleよりもman!! Google検索してもあまりいい情報はないです。
注意
- /etc/X11/xorg.confはback upを取りまくっておくように!User homeに
sudo cp /etc/X11/xorg.conf /etc/X11/xorg.conf.`date +%m%d-%H%M%S`; sudo vi /etc/X11/xorg.conf
みたいなscriptを書いてからやるとよさげ。 - 余計なpackageをinstallしたり,無駄にKernelの更新とかをしたりしない。最小限の努力で。
予備知識
- Gnomeを終了して,Single User Mode (runlevel 1,つまりいわゆるrootのCUI)に入るには,suしてtelinit 1すればよい。そこでexitすれば,またrunlevel 5に戻る。
- xorg.confの設定を間違えて,Gnomeが(っていうかXが)起動しなくなった場合は,runlevel 3 (CUI)に入るが,その場合も慌てず騒がずxorg.confを修正してからgnomeを起動すればよい。Gnomeを起動するscriptはいつものようにinit.dあたりにあるので,/etc/init.d/gdm startみたいにすればgnomeが起動する。
- Gnome起動中にCTRL+ALT+BackSpaceを押すと,gnomeが強制再起動する。
手順(1) Deviceを自動認識させる
まず最初に/etc/X11/xorg.confのbackupを作成すること。
で,次に,Xにdeviceとかを自動で認識させて,自動でxorg.confを生成してもらう。これはXorg -configureで出来るのだけど,そのためにはXを一度終了しなければならないので,一旦runlevel 1に入って作業する。
この設定の副作用として,keyboardが英語配列設定になってしまう虞がある。その場合は頑張ってxorg.confのkeyboardのところを再設定してください。お手本は次のとおり。
Section "InputDevice"
Identifier "Keyboard0"
Driver "kbd"
Option "XkbModel" "jp106"
# ← これとOption "XkbLayout" "jp"
# ← これを設定すればよい。EndSection
そんでGnomeに戻る。
手順(2) とりあえずxrandrしてみる
Gnomeに戻ったら,端末からxrandrとかしていろいろと遊んでみる。例えば僕の環境では
[20:33:37:misho] ~:> xrandr Screen 0: minimum 320 x 200, current 1900 x 1024, maximum 1900 x 1024 DVI-I_1/digital disconnected DVI-I_1/analog connected 1280x1024+0+0 338mm x 270mm 1280x1024 60.0*+ 75.0 1024x768 75.1 70.1 60.0 800x600 72.2 75.0 60.0 TV_7PIN_DIN disconnected DVI-I_2/digital disconnected DVI-I_2/analog connected 1024x768+1280+0 300mm x 230mm 1024x768 74.9* 75.0 60.0 800x600 72.2 75.0 60.3 640x480 75.0
みたいなことになる(一部略)。この出力結果から
- 2つのdisplayはそれぞれDVI-I_1/analogとDVI-I_2/analogにつながっている。
- 大きさは1280x1024と1024x768なので,横に並べると2304x1024になるのに,Screenのmaximumが1900x1024となっているのでScreenを拡大する必要がある。
ということがわかる。
手順(3) xorg.confを編集する - Screenの拡大
Screen maximumの拡大は,xorg.confのうちのSection "Screen"
のSubSection "Display"
のところにVirtual
を追加すればよい。
Section "Screen" Identifier "Screen0" Device "Card0" Monitor "Monitor0" Monitor "Monitor1" SubSection "Display" Viewport 0 0 Depth 1 Virtual 2304 1024
# ← こんなかんじEndSubSection
(以下略)
手順(4) xrandrで遊んでみる
いろいろとやってごらん。例をいくつか挙げておく。困ったらman xrandr。
[20:41:37:misho] ~:> xrandr --output "DVI-I_2/analog" --mode 1024x768 [20:48:47:misho] ~:> xrandr --output "DVI-I_2/analog" --mode 800x600 [20:48:52:misho] ~:> xrandr --output "DVI-I_2/analog" --off [20:48:59:misho] ~:> xrandr --output "DVI-I_2/analog" --mode 1024x768 [20:48:59:misho] ~:> xrandr --output "DVI-I_2/analog" --right-of "DVI-I_1/analog" # これでたぶんdual displayになる [20:48:59:misho] ~:> xrandr --output "DVI-I_2/analog" --left-of "DVI-I_1/analog" # これでもdual display [20:48:59:misho] ~:> xrandr --output "DVI-I_2/analog" --above "DVI-I_1/analog" # 上下に並ぶdual display
xrandr: screen cannot be larger than 1900x1900とか言われたら,さっきの手順(3)の設定が間違ってるに違いない。
手順(4) xorg.confを編集する - Device, Monitor, Screen
で,まぁ手順(3)のcommandsのうち下の方の3つを実行すればdual displayになるのだけど,しかしその設定はlog offすると元に戻ってしまう。変更を恒久的にするには,xorg.confを手動で設定しなければならない。
(自動で設定する方法があってもいいとは思うのだけど,見つけられなかった。)
次に,xorg.confの本丸の編集を行う。とは言ってもそれほど難しい作業ではない。Graphic Boardがdeviceで,displayがmonitorだということを念頭において,望むような設定を構築する。
つまり,deviceは1つで,それに2つのmonitorを繋いで,その2つのmonitorを1つのscreen上に並べればよいのだ。
困ったらman xorg.conf!!
そして僕の設定は次のようになった。
Section "ServerLayout"
Identifier "X.org Configured"
Screen 0 "Screen0" 0 0
# Screenは1つInputDevice "Mouse0" "CorePointer"
InputDevice "Keyboard0" "CoreKeyboard"
EndSection
Section "Files"
(省略)EndSection
Section "Module"
(省略)EndSection
Section "InputDevice"
Identifier "Keyboard0"
Driver "kbd"
Option "XkbModel" "jp106"
Option "XkbLayout" "jp"
EndSection
Section "InputDevice"
(省略)EndSection
Section "Monitor"
Identifier "Monitor0"
# 自分のわかりやすい名前でよいVendorName "Monitor Vendor"
# よく分からないけど設定不要?ModelName "Monitor Model"
# よく分からないけど設定不要?EndSection
Section "Monitor"
Identifier "Monitor1"
Option "RightOf" "Monitor0"
# ← Key point!!VendorName "Monitor Vendor"
ModelName "Monitor Model"
EndSection
Section "Device"
Identifier "Card0"
# このあたりはXが自動で認識した。Driver "radeonhd"
VendorName "ATI Technologies Inc"
BoardName "Unknown Board"
BusID "PCI:1:0:0"
# Optionでmonitorを設定する。"monitor-" の後に,さっきxrandrで調べた接続情報を書く。その後に識別子。Option "monitor-DVI-I_1/analog" "Monitor0"
Option "monitor-DVI-I_2/analog" "Monitor1"
EndSection
Section "Screen"
# Screenは1つIdentifier "Screen0"
Device "Card0"
Monitor "Monitor0"
# Monitorは2つMonitor "Monitor1"
SubSection "Display"
Viewport 0 0
Depth 24
Virtual 2304 1024
EndSubSection
EndSection
まぁざっとこんな感じ。Key pointは,xorg -configureとxrandrを使うこと。あとmanをよむこと!!
たぶんこのあたりの設定が一番Linuxの面倒なとこなんだとおもう。頑張ってください。
Comments
mach 2009/05/28(Thu) 21:02:08
KeynoteならLaTeXiT!
http://macwiki.sourceforge.jp/wiki/index.php/LaTeXiT