ネットブックのLubuntuをアップグレードして、なかなか良い感じだったため、今度はノートパソコンのHP Pavilionをアップグレードしてみました。
ところが画面の表示でトラブルが発生し、解決するのに苦労しました。
Lubuntu12.10はいい感じ
先日はネットブックのAspire oneのLubuntu12.04をオンラインで12.10にアップグレードしました。
とりあえず大きな問題もなく、Mozcの改善や通知アプリが動作するようになった事から使い勝手が良くなりました。このため、HP製のノートパソコン Pavilion dm3のLubuntu12.04もLubuntu 12.10にアップグレードすることしました。
アップグレードはスムーズに進んだが画面が変!?
Pavilionもオンラインによるアップグレードを行います。Lubuntu12.10のインストール自体はスムーズに進み、再起動してログインすると、なんかディクトップの表示が変。文字がやたら大きく、縦横比もおかしくて横長になっています(スクリーンショットを撮るのを忘れてました)。
解像度など設定を確認するため「Catalyst Control Center」を起動させようとすると、下記のエラーが表示されました。どうやらドライバーがうまくインストールされていないようです。なお、このマシンはUbuntu(旧版)およびLubuntu12.04でAMDのプロプライエタリ版グラフィックドライバを使ってきましたが、このようなエラーは初めてです。
Catalyst Control Center Linux エディションの初期化に問題がありました。次のことが原因である可能性があります。
AMD グラフィック ドライバーがインストールされていないか、AMD ドライバーが正常に機能していません。
ご使用の AMD ハードウェアに適切な AMD ドライバーをインストールするか、aticonfig を用いて構成してください。
何が起こっているか確認する
とりあえず、ドライバが入っているかsynapticパッケージマネージャで確認すると下記のようなパッケージがインストール済みでした。ちなみにLubuntuにはUbuntuにある「追加のドライバー」というのが無くて、apt-getやパッケージマネージャで導入する必要があります。また、AMDのドライバはLubuntu12.04をインストールした時に自動でインストールされ、その際はちゃんと動作していました。今回の12.10でも自動でインストールされたものです。
- fglrx
- fglrx-amdcccle
よく見ると、アップデート版らしき発ケージもあったので上記をアンインストールして代わりにこれらに入れ替えてみます。
- fglrx-updates
- fglrx-amdcccle-updates
再起動してみると、何も変わっていません。また、Catalyst Control Centerを起動させようとしても前回同様のエラーが発生します。うーん、困った。
このパソコンのハードウェア仕様は次のようになっています。
- ATI Mobility Radeon HD 3200
- 13.3インチワイドHD 液晶ディスプレイ (1366×768/最大1,677万色)
ディスクトップ全域のスクリーンショットを撮り、画像サイズを確認してみるとなぜか1024×768になっています。横方向のピクセル数がディスプレイのピクセル数より小さいため、横方向に引き伸ばされて表示されているようです。だから文字も横長に表示されていたのですね。
今回の現象を整理すると、次のようになります。
- AMDのグラフィクスドライバはインストールされているものの動作していない。
- 画面解像度の設定が本来1366×768ピクセルに設定されるべきだか、1024×768ピクセルに設定されている。
ググっても同様の現象は見つからなかったため、自力で調査するしかありません。
設定を調査する
Xの動作を確認するため、/var/log/xorg.0.logを確認してみると、なぜか解像度の項目に1366×768が入っていません。また、正しい解像度設定ができずにAMDのドライバー(fglrx)はアンロードされていました。代わりに「int10」というドライバがロードされ、それが使用されているようです。このような状況のため、Catalyst Control Centerを起動させようとすると前述のエラーなったのでしょう。
また、解像度の確認や設定を行う「xrandr」というコマンドがあるそうなので、実行してみると1024×768と800×600の二つのモードしか表示されません。ガンマ値のサイズの取得に失敗したというメッセージも出ていますが、解像度の件とは関係無さそうです。
$ xrandr
xrandr: Failed to get size of gamma for output default
Screen 0: minimum 800 x 600, current 1024 x 768, maximum 1024 x 768
default connected 1024×768+0+0 0mm x 0mm
1024×768 0.0*
800×600 61.0
下記のようなページを見つけたので、まずはXに対して強制的に1366×768ピクセルのモードを追加するよう試みました。
https://wiki.ubuntulinux.jp/UbuntuTips/Hardware/HowToChangeMonitorResolution
/etc/X11/xorg.confに解像度情報を追加すれば表示できるとあるので変更してみました。xorg.0.logを確認すると追加した解像度もチェックされるようになりしたが、チェックに失敗しているようです。もちろん、画面表示は変わらずでした。
また、xrandrコマンドによって一時的な解像度モードの追加についての説明もあったので試してみました。しかし、その過程で垂直同期や水平同期などの設定値を計算する「cvt」を実行すると、1366×768ピクセルが 1368×768ピクセルとして算出されてしまいます。物は試しでその値で解像度モードを追加し、切り替えてみましたが、追加したモードに切り替えることはできませんでした。
ドライバを最新にしてみる
設定関連は手詰まりになったので、別のアプローチとしてドライバ関連に目を向けます。
ログからドライバーの組み込み自体が失敗している事は判明しているので、最新ドライバに入れ替えてみます。
ドライバはAMDの下記サイトからダウンロードできます。
http://support.amd.com/us/gpudownload/linux/Pages/radeon_linux.aspx
最新版のバージョンは12.10でした。ダウンロードしたファイルを解凍すると、シェルスクリプトが一つ入っているだけです。
まず、現在のプロプライエタリ版グラフィックドライバはパッケージマネージャ等を使って削除しておきます。そして端末から管理者権限でシェルスクリプトを実行します。
しばらく待つとこのチップはサポートされていないという衝撃のメッセージが表示されて終了してしまいました。
何かの間違いかと思ってもう一度実行しても結果は同じ。今まで動作していたのは何なのでしょう。
ひょうたんから駒?
ここに書いた作業内容はかなり省略しているので、実際には調査とトライですでに3時間以上かかっています。諦めてこのまま使うか、Lubntu12.04に戻すか考えながら、先ほど行ったxrandrコマンドによる設定をクリアするつもりでリブートしました。
リブート中にグラフィックドライバを削除したままになっているとを思い出して、ブラックアウトかVGAサイズで起動すると思いきや、ちゃんと高解像度の状態でログイン画面が表示されました。そして、ログインするとあら不思議。アップグレードする前のようにディスクトップが表示されました。文字も横長ではありません。念の為、スクリーンショットを撮って画像サイズを確認すると 1368×768ピクセルになっていることを確認しました。
まるで狐につままれた気分です。結果から考えるとAMDのドライバを削除するだけで正常に表示できたと思われます。xrandrコマンドを実行すると次のようになりました。沢山の解像度モードが表示されています。あのアルファがどうのという変なメッセージも出ていません。
$ xrandr
Screen 0: minimum 320 x 200, current 1366 x 768, maximum 8192 x 8192
LVDS connected 1366×768+0+0 (normal left inverted right x axis y axis) 293mm x 165mm
1366×768 60.0*+
1280×720 59.9
1152×768 59.8
1024×768 59.9
800×600 59.9
848×480 59.7
720×480 59.7
640×480 59.4
VGA-0 disconnected (normal left inverted right x axis y axis)
HDMI-0 disconnected (normal left inverted right x axis y axis)
念ためxorg.0.logを確認すると、最初は「fglrx」ドライバを読み込もうとしますが今は削除してあるのでこれは失敗し、代わりに「ati」および「radeon」ドライバが組み込まれていました。これらはAMDチップ向けオープンソース版ドグラフィックライバだと思われます。
メニューのシステムツールにある「System information and benchmark」でシステムの詳細な状態が確認できます。こちらでもドライバは「radeon」と表示されていました。このツールはいろんな項目が見れるので便利なツールです。
なお、このツールを起動すると空白のダイアログが表示されました。これは一部の環境で発生する既知の問題らしいです。
オープンソースドライバは性能的にAMD製より劣るのかも知れませんが、正常に表示されていのでこのまま使うことにしました。
まとめ
長々と書きましたが、Radeon HD 3200を搭載したパソコンでAMDのプロプライエタリ版グラフィックドライバを使っている時に横長画面になったら、AMD製のグラフィックドライバをアンインストールすれば治るかも知れません。