Debian (xorg 7.5) で GMA500(aka US15W, poulsbo)
背景
UMPCではおなじみの US15W (Poulsbo) チップセットなのですが、この
ビデオが困り者で、Debian GNU/Linux のドライバがなかなか出てくれません。
最近
Ubuntu 10.04 ように新しいドライバが出てたので
Debian (xorg 7.5) に持ってきてみました。
せっかくだから、俺はこっちの web サイトでやり方を説明するぜ。
VAIO type P (VGN-P91HS) で動きました。
少し前のバージョン(xorg 7.4)の話
もあるので安定版の方はこちらをどうぞ。
概要(ざっくりこんな手順)
- xorg を 7.5 にする。
- kernel モジュールを作れる環境にする。
- Ubuntu ようのパッケージとソースをいくつか持ってくる。
- カーネルモジュールをビルドする。
- いくつかの deb パッケージをインストールする。
- そのままインストールしにくいパッケージを extract して、必要なファイルをしかるべき場所に置く。
- xorg.conf を編集する。
詳細手順
用意するもの
Ubuntu 10.04 ようの以下のモジュール及びソース一式を
http://ppa.launchpad.net/lucazade/poulsbo-lucid-fix/
からダウンロードします。
-
psb-kernel-source_4.42.0-0ubuntu2~1004um3.2.tar.gz
-
xserver-xorg-video-psb_0.36.0-0ubuntu3~1004un2.3_i386.deb
-
libdrm-poulsbo1_2.3.0-1ubuntu0sarvatt4~1004um1ubuntu1_i386.deb
-
libva1_1.0.31.0-1+sds9.1ubuntu1_i386.deb
-
psb-firmware_0.30-0ubuntu1netbook1ubuntu1_i386.deb
-
xpsb-glx_0.18-0ubuntu1netbook2~1004um1ubuntu1_i386.deb
カーネルモジュールをビルドする
以下の説明は
linux-2.6.33.5 の場合です。これ以外のバージョンの場合は
多少エラーの内容が異なると思います。
-
カーネルモジュールがビルドできる環境(linux-headers-*パッケージが
インストールされている、もしくは自分でコンパイルしたカーネルで
動いている環境)にしします。
-
適当な作業ディレクトリに
psb-kernel-source_4.42.0-0ubuntu2~1004um3.2.tar.gz
を展開します。
-
その中で make psb.o を実行します。途中で
include/linux/irqreturn.h:16: note: previous declaration of 'irqreturn_t' was here
というエラーが出たら drm_os_linux.h を編集して
//typedef void irqreturn_t;
とコメントアウトしてください。そして再度 make psb.o。
-
さらに
~/psb3/psb-kernel-source-4.42.0/drm_memory.c:267: error: 'struct agp_memory' has no member named 'memory'
というエラーが出たら drm_memory.c の中の
agpmem->memory->memory
を
agpmem->memory->pages
に
変更します。また make psb.o。
drm_vm.c でも同じエラーが出るので修正(2箇所)。
また make psb.o。
- 今度は
drm_agpsupport.c
でエラーが出るので、
その先頭に
#define phys_to_gart(x) (x)
として再度 make psb.o。
-
さらに drm_edid.c でエラーが出るので、その中の
printk(KERN_ERR PREFIX "Invalid _DDC data\n");
をコメントアウトしてまたまた make psb.o 。これでようやく psb.ko と drm.ko が完成します。
- psb.ko はカーネルモジュール置き場(/lib/modules/バージョン/)の
適当な場所、例えば kernel/drivers/misc/ とかに、
drm.ko は同名のモジュールが kernel/drivers/gpu/ にあるのでそれを
上書きするように置きます。
- 最後に depmod -a してできあがり。
いくつかのパッケージをインストールする
以下の 4 つを dpkg -i でインストールしてください。
-
libdrm-poulsbo1_2.3.0-1ubuntu0sarvatt4~1004um1ubuntu1_i386.deb
-
libva1_1.0.31.0-1+sds9.1ubuntu1_i386.deb
-
psb-firmware_0.30-0ubuntu1netbook1ubuntu1_i386.deb
-
xpsb-glx_0.18-0ubuntu1netbook2~1004um1ubuntu1_i386.deb
xserver-xorg-video-psb のインストール
残る
xserver-xorg-video-psb_0.36.0-0ubuntu3~1004un2.3_i386.deb
については依存関係がうるさいので手動でインストールします。
適当な作業ディレクトリで
dpkg -x xserver-xorg-video-psb_0.36.0-0ubuntu3~1004un2.3_i386.deb .
などとします(最後のピリオドを忘れないよう)。
すると、etc/ と usr/ というディレクトリができるので、その中身を
ルートディレクトリの /etc/ /usr/ 以下に同じように移動させます。
これで完成。
xorg.conf の編集
こんなんで十分です。
Section "Device"
Identifier "Generic Video Card"
Driver "psb"
EndSection
終わりに
長いこと xorg 7.4 を7.5にアップデートできず気持ち悪かったのですがようやく
解決、めでたしめでたし…というわけにはいきませんでした。
とりあえず不具合としては
- 3Dがコケる
- ビデオ再生ができない
- 起動に失敗することがある?
というものが見られています。早く xorg 純正ドライバ出ないかな…。