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"EndSectionSection "Files"(省略)EndSectionSection "Module"(省略)EndSectionSection "InputDevice"Identifier "Keyboard0"Driver "kbd"Option "XkbModel" "jp106"Option "XkbLayout" "jp"EndSectionSection "InputDevice"(省略)EndSectionSection "Monitor"Identifier "Monitor0"# 自分のわかりやすい名前でよいVendorName "Monitor Vendor"# よく分からないけど設定不要?ModelName "Monitor Model"# よく分からないけど設定不要?EndSectionSection "Monitor"Identifier "Monitor1"Option "RightOf" "Monitor0"# ← Key point!!VendorName "Monitor Vendor"ModelName "Monitor Model"EndSectionSection "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"EndSectionSection "Screen"# Screenは1つIdentifier "Screen0"Device "Card0"Monitor "Monitor0"# Monitorは2つMonitor "Monitor1"SubSection "Display"Viewport 0 0Depth 24Virtual 2304 1024EndSubSectionEndSection
まぁざっとこんな感じ。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