外部モニタへの出力にトライ

以下の内容はちょっと古いので、最新のドライバを使うのであれば「Ubuntu 8.04 DesktopをInspiron 1501にインストールする 」の中の「fglrxドライバのインストール」の方が参考になるかも知れない(Fedoraではないが)。(2008/04/29)

Castellarin氏のホームページを参考にATIのドライバを組み込むことはできたし、OpenGLATI Radeon Xpress 1150の機能を使っているところまでは出来たので、後は本来の目的である外部モニタへの出力にトライする。本体液晶と外部モニタのDual Head(クローン)を実現したい。

先ずはaticonfigコマンドを使って/etc/X11/xorg.confを生成してみる。(私はLinuxX Windowには詳しくないが、色々なホームページを検索していて、どうも/etx/X11/xorg.confというファイルがXの設定を決定しているように思えた。)
aticonfigは「-h」オプションで詳細を見れるが、要するにATIのチップに合ったどうも/etx/X11/xorg.confを生成してくれるコマンドのようである。基本的には次のような使い方をするらしい:

  • aticonfig --initial
  • aticonfig --initial=dual-head

上段はディスプレが1台つの環境、下が2台の環境のようである。早速「=dual-head」オプションをつけて実行して、「init 3」「init 5」でX Windowを起動し直す。(リブートしても良いが、ウィンドの再立上げにシステムをリブートしていては時間がかかるので。)その時のxorg.confは以下のとおりである。それらしいので期待できる。

Section "ServerLayout"
        Identifier     "Default Layout"
        Screen      0  "aticonfig-Screen[0]" 0 0
        Screen         "aticonfig-Screen[1]" RightOf "aticonfig-Screen[0]"
        InputDevice    "Keyboard0" "CoreKeyboard"
        InputDevice    "Synaptics" "CorePointer"
EndSection

「おぉ」。外部モニタにもGNOMEの画面が出た。ただ、ちょっと想定と違っている。ノートの液晶と外部モニタで別のデスクトップになってしまっている。どうも(xorg.confの定義の通り)液晶のデスクトップの右側に外部モニタのデスクトップが出てきている。マウスのポインタを本体の液晶の右へ移動すると、外部のモニタの左側から現れる。

もう少し、って感じだ。Fedora Core 6を再インストールする前に試行錯誤していた時に、xorg.confにそれらしいパラメータが付いていたことがあったので、ちょっとそれを付けてみる:

Section "ServerLayout"
        Identifier     "Default Layout"
        Screen      0  "aticonfig-Screen[0]" 0 0
        Screen         "aticonfig-Screen[1]" RightOf "aticonfig-Screen[0]"
        InputDevice    "Keyboard0" "CoreKeyboard"
        InputDevice    "Synaptics" "CorePointer"
        Option          "Xinerama" "off"
        Option          "Clone" "on"
EndSection

「Option」の行をviで追加して、init 3、init 5。しかし状況は変わらない。このオプションは意味がないのか、それとも他にも定義しないと有効にならないのか?
そこで、FRESH RPMSから取ってきたati-x11-drvパッケージの中身を「rpm -ql ati-x11-drv」で知らべて、ドキュメントを探す。そしたら /usr/share/doc/ati-x11-drv-8.36.5/ の下にHTMLでドキュメントがインストールされているようなのでブラウザで眺めて見ると、「Driver Behavior and Configuration」というところにDevice section のオプションとして "DesktopSetup" "c"というのがあった。c は Cloneのcで期待できそうだ。viエディタで追加して見た。

Section "Device"
        Identifier  "aticonfig-Device[1]"
        Driver      "fglrx"
        BusID       "PCI:1:5:0"
        Screen      1
        DesktopSetup    "c"
EndSection

さて init 3、init 5。今度はXサーバ自身が立ち上がらない。コンソール状態にしてxorg.confを戻して再度 init 5。
どうしたものか。画面は2つ使えるがクローンではなく別々のデスクトップである。

ちょっと考えて「何でviを使って手動でxorg.confを変更しているのだろう? aticonfigで生成すればいいじゃん」と思い、aticonfigのオプションをもう一度眺めて見る。(aticonfigのhelpは結構詳細に書いてある。)
「--desktop-setup=clone」というオプションがあるじゃないか。早速実行してみる。生成されたxorg.confのDeviceセクションは次のようになっていた。

Section "Device"
        Identifier  "aticonfig-Device[0]"
        Driver      "fglrx"
        Option      "DesktopSetup" "clone"
        BusID       "PCI:1:5:0"
EndSection

先程、手動で修正したものと比べると「DesktopSetup」の使い方が間違っていた。また、オプションをつけるのはDevice[1]ではなく、Device[0]の方だった。

さてと、Xを再起動。「じゃじゃ〜ん」おめでとう! 外部モニタに綺麗にノートの液晶と同じ画面が出てきている。これで当初の目的は達成できそうだ。早速ログイン。おゃ、ちょっと変である。

Inspiron 1501の画面サイズは1280x800なのに対して外部モニタの解像度は1280x1024である。外部モニタの解像度に合わせて、両方のデスクトップの大きさが決っている。なので、ノートの液晶には1280x1024の一部が表示され、マウスを動かすとデスクトップ自身がスクロールする。画面の解像度は変えられるか?「システム」メニューから「設定」⇒「画面の解像度」の設定ツールで変えてみる。1280x800を選択するとノート本体の液晶はピッタリ、デスクトップがフル画面で表示された。外部モニタの方は? 1280x800になったので画面が間延びしてしまっている。周りに黒い部分が出てもいいから間延びして欲しくないなぁ、と思いaticonfigのパラメータを色々と設定しているが、未だに上手くいっていない。が、まぁ、これは微々たる問題なので、その内やろう。

最終的なaticonfigの引数は以下のとおり:

aticonfig --lcd-mode=center --desktop-setup=clone --resolution=0,1280x800 --resolution=1,1280x1024 --mode2=1280x1024,1280x800 --hsync2=64-64 --vrefresh2=60-60

それで生成されたxorg.confは以下の通り。

# Xorg configuration created by pyxf86config

Section "ServerLayout"
        Identifier     "Default Layout"
        Screen      0  "aticonfig-Screen[0]" 0 0
        InputDevice    "Keyboard0" "CoreKeyboard"
        InputDevice    "Synaptics" "CorePointer"
        Option      "Xinerama" "off"
        Option      "Clone" "on"
EndSection

Section "Files"
EndSection

Section "Module"
EndSection

Section "ServerFlags"
        Option      "AIGLX" "off"
EndSection

Section "InputDevice"
        Identifier  "Keyboard0"
        Driver      "kbd"
        Option      "XkbModel" "jp106"
        Option      "XkbLayout" "jp"
EndSection

Section "InputDevice"
        Identifier  "Synaptics"
        Driver      "synaptics"
        Option      "Device" "/dev/input/mice"
        Option      "Protocol" "auto-dev"
        Option      "Emulate3Buttons" "yes"
EndSection

Section "Monitor"
        Identifier   "aticonfig-Monitor[0]"
        Option      "VendorName" "ATI Proprietary Driver"
        Option      "ModelName" "Generic Autodetecting Monitor"
        Option      "DPMS" "true"
EndSection

Section "Monitor"
        Identifier   "aticonfig-Monitor[1]"
        Option      "VendorName" "ATI Proprietary Driver"
        Option      "ModelName" "Generic Autodetecting Monitor"
        Option      "DPMS" "true"
EndSection

Section "Device"
        Identifier  "aticonfig-Device[0]"
        Driver      "fglrx"
        Option      "DesktopSetup" "clone"
        Option      "Mode2" "1280x1024,1280x800"
        Option      "Centermode" "on"
        Option      "HSync2" "64-64"
        Option      "VRefresh2" "60-60"
        BusID       "PCI:1:5:0"
EndSection

Section "Device"
        Identifier  "aticonfig-Device[1]"
        Driver      "fglrx"
        BusID       "PCI:1:5:0"
        Screen      1
EndSection

Section "Screen"
        Identifier "aticonfig-Screen[0]"
        Device     "aticonfig-Device[0]"
        Monitor    "aticonfig-Monitor[0]"
        DefaultDepth     24
        SubSection "Display"
                Viewport   0 0
                Depth     24
                Modes    "1280x800"
        EndSubSection
EndSection

Section "Screen"
        Identifier "aticonfig-Screen[1]"
        Device     "aticonfig-Device[1]"
        Monitor    "aticonfig-Monitor[1]"
        DefaultDepth     24
        SubSection "Display"
                Viewport   0 0
                Depth     24
                Modes    "1280x1024"
        EndSubSection
EndSection

Section "Extensions"
        Option      "Composite" "Disable"
EndSection

なんとかここまで来たが、あと一つ大きな問題が残っている。Run level 3からinit 5でXウィンドウと再起動する時は何の問題もないのだが、システムを再起動(reboot)するとノートの液晶の方はXウィンドウのログインの画面が正常に出ない。外部モニタにはログイン画面が出るのだが。外部モニタだけを使って作業をするのであれば問題はないが、そう言うわけにも行かない。また、チップの設定が悪いとも考えられるので、その状態で放置しておくのも好ましいとは言えないだろう。

ちなみにブートの途中のデーモンの起動のところでXウィンドウが一旦動くが、この時はちゃんと表示される。で、一旦、コンソール状態で「login:」プロンプトが出た後にXのセッションが始まるが、その画面が出ない。どの様に出ないかというと、全体的には白い画面で横に細かい黒い線が規則的に並んで、ちらついて見える。マウスを動かしたり、キーボードを入力して(本来表示されているであろう)画面を変えても画面に変化はない。

色々とやってみたが、効果が無い。Castellarin氏の方法で大体概要はつかめたので、再度FC6を再インストールして、他のドライバを使ってもう一度トライしてみる。

なお、一旦、Windows XPを立ち上げてATIの設定ツール(画面の設定の「詳細設定」から起動できた)でディスプレの設定を変えたら(外部モニタをクローンタイプにする設定変えたら)、何とLinuxの起動時も有効で、今まで出てなかったBIOSの画面やブートの途中の画面も外部モニタに出るようになった。ATIの設定ツールはビデオコントローラのFRASHに設定でも書き込んでいるのだろうか。しかし、この方法で両方に出るようになったと言っても、外部モニタ側の解像度が低いので結局、LinuxATIドライバで設定しなおさないと使えない。

色々、調べて見たがクローンマルチ画面にした時にメート本体の画面が表示されないことについては何の情報も見当たらなかった。ちなみにxorg.confは作れたので、もう一度FC6を再インストールしてFedoraForum, Dell Inspiron 1501: FC6 won't install に出ていた方法:

This is what worked for me for 3D:
go to http://ati.amd.com/support/driver.html
download ati-driver-installer-8.31.5-x86.x86_64.run

from a root shell:
sh ati-driver-installer-8.31.5-x86.x86_64.run
aticonfig --initial
init 3
(log in as root)
rpm -Uvh http://rpm.livna.org/livna-release-6.rpm
yum install xorg-x11-drv-fglrx-libs-32bit.x86_64
setsebool -P allow_execmod=1
ati-fglrx-config-display enable

add to /etc/X11/xorg.conf:
Section "Extensions"
Option "Composite" "Disable"
EndSection

init 5

でドライバをインストール、aticonfigでxorg.confを生成するのではなく、以前に作ったものをコピーしても動作した。
ただ、この方法だと、余りクールとは言えないATIのルーツがインストールされてしまうので注意したい。(ATIの管理ツールをインストールしない様に指定もできる。Windows XPで配られているATIの管理ツールに比べるとオモチャとしか言い様が無い。)なお、Freshrpmsを利用する方法より、こちらの方法でドライバをインストールしたほうが3Dの性能はちょっと良かったような気がする。(今回は3Dの性能向上が目的ではないので、あまり真面目に計っていないが。)

更に今、FC6を再インストールして、FedoraForum, Getting ATi cards to work in Fedora Coreの方法(=ATI社からドライバをインストールしない方法)でも出来るのではないかを確認している。

確認したところ、この方法でもOKだった。多分、この方法が余計なものが少なくて良いかも知れない。但し、ATIのドライバではないようなので性能はイマイチだった。デュアルヘッドを使ってglxgearsで約90FPS程度である。ATIのドライバを使うと大体150FPSは出ていたような気がする。また、この方法でもブート直後にノートの画面が使えないのは同じでだった。(3つの方法でインストールしたドライバ同じでなければ、チップの問題かも。Windows XPのドライバはそれを会費しているのか。)

ブート直後にノートの画面にログイン画面が現れないことについては根本的に解決していないが、次の方法で何とかしのぐ方法を見つけた。

  1. 外部モニタがあればそれ見ながら、無ければめくら打ちでログインする。
  2. 予めノートを閉じた場合に「ブラランク画面する」にしておき、ノートを一旦閉じる。そして開く。

これでGNOMEのデスクトップが表示される。余りスマートとは言えないが、ドライバのアップデートが出てくるまではこれで何とかなる。

コラム?
私はここ10年メインのコンピュータはノートPCを使っている。会社と自宅で同じ環境で仕事が出来るし、私の場合、仕事場が複数あったので、自然とそうなった。HDDのモバイルケースの方が持ち運びに良い、という意見も貰ったが、データだけ持ち運べは仕事が出来るわけでもなく、会社のPCと自宅のPCで同じ環境を揃えるのも大変だ。システムを持ち運ぶとなるとノートになってしまう。ということから私のノートPCの選択の基準は、

  1. 軽い
  2. 小型
  3. 外部モニタが接続できる
  4. ソコソコ速い

が条件である。1と2は相関関係があるが、基本的にはB5サイズで1kg程度のものになる。10年前でこの条件を満たすのはDynabookSSしかなかった。殆どのノートはA4サイズが主流で重さも1.5〜2kgはしていた。IBMは小型だが重いし、当時のLet'sノートは今ほど洗練されていなかった。それから(別に決めている訳ではないが)DynabookSSを使い続けていて今使っているのは3台目である。最も今のDynabooks 1610は2年前に「2世代落ちの新古品」で10万円で買えたので、お金があればLet'sノートの新品を買っていたかも知れない。

ということで私のメインのPCはノートだが、ノート本体の液晶やキーボードを使うことは殆どない。(外出先のホットスポットで使う時位である。)普段は自宅でも会社でも外部モニタとキーボードを接続して使う。

今回のInspiron 1501はLinux環境を持つ開発用で普段持ち運ぶわけではないが、仕事都合でどうしても自宅と会社で持ち運ぶ必要も出てくるだろうからノートにした。普段持ち運ばないので、軽さと小ささは今回は無視した。その代わりに安くて、性能がソコソコであることを基準として探した。会社の資産にしたくないので基本的には10万円以下で(送料・消費税込みで)、パフォーマンスもありそうということになると、DELLのInspiron 1501になってしまった。(Inspiron 1500でも良かったのだが、同じCPUクラス、メモリ、HDDなどにするとどうしても10万円を超えてしまう。)他のプライベートブランドとかも見たが、メモリが256MBとか、CPUがちょっと古いとかイマイチだった。やはり、大量生産で出入り業者から格安で部品を仕入れているDELLが安かった....。