debian/unstable に linux 2.6.28 rc5 と nvidia 177.82 をインストールする方法。
linux 2.6.28 rc5 のソースコードを用意
The Linux Kernel Archives からカーネルとパッチをdownload.
以下の手順で,展開,パッチをあてる.
$ cd /usr/src $ sudo tar xjfz linux-2.6.27.tar.bz2 $ sudo mv linux-2.6.27 linux-2.6.28-rc5 $ cd linux-2.6.28-rc5 $ bzcat patch-2.6.28-rc5.bz2 | sudo patch -p1
linux kernel の debian package を作成
make-kpkg を使って、kernelのdebパッケージを作る
まず,設定ファイル(.config)を用意
make oldconfig を使って、現在使っているカーネルの設定ファイル(/boot/config-???)をベースに,新しい設定ファイル(.config)を作成すると楽.
$ sudo cp /boot/config-2.6.27-rc8 .config $ sudo make oldconfig
.config ができたら make-kpkg でパッケージをビルド
$ sudo make-kpkg --initrd --append_to_version .custom kernel_image
以上の手順で,/usr/src 以下に *.deb ができる.
nvidia-kernel module を作成
続いて nvidia のドライバをビルド,インストール.
apt-get install で入手できるパッケージは,ドライバのバージョンが少々古いので,自前でアップデートする.まず,apt-get source コマンドでパッケージのソースコードを入手
$ apt-get source nvidia-graphics-drivers $ cd nvidia-graphics-drivers
次に,NVIDIA の AI (人工知能) コンピューティングにおけるリーダーシップ から最新のドライバのソースコードをdownload。
両方のファイルをdownloadする。
続いて、nvidia-graphics-drivers/debian 以下のファイルを少し書き換える。先ずは debian/changelog.
$ vi debian/changelog
先頭に以下の5行を加える
nvidia-graphics-drivers (177.82-1) unstable; urgency=low * New upstream. -- anonymouse <nobody@localhost> Sat, 30 Aug 2008 17:59:56 -0700
177.82 ってのがdeb packageのバージョン番号となる。
次に、 debian/upstream_info
$ vi debian/upstream_info
こちらもバージョン番号を書き換える
RELEASE=177.82 NEXTVER=177.83
あとは, パッケージをビルドするだけ.
$ dpkg-makepackage -us -uc -rfakeroot
以上の作業で,以下のファイルが生成される.
nvidia-glx-dev_177.82-1_i386.deb nvidia-glx_177.82-1_i386.deb nvidia-kernel-source_177.82-1_i386.deb
nvidia ドライバのインストール
1) まず上記手順で作成した nvidia-kernel-source をインストール
$ sudo dpkg -i nvidia-kernel-source_177.82-1_i386.deb
/usr/src/nvidia-kernel.tar.bz2 というファイルがインストールされる。
2) nvidia-kernel-source.tar.bz2 を展開
$ cd /usr/src
$ sudo tar xvfj nvidia-kernel.tar.bz2
ファイルは、/usr/src/modules/ 以下に展開される
3) モジュール作成
$ cd /usr/src/linux-2.6.28-rc5 $ sudo make-kpkg --initrd --append_to_version .custom modules_image
通常はこのコマンドを実行するだけで、モジュールのパッケージが生成される。しかし、今回は以下のようなエラーが出る。 これは,nvidiaのドライバが最新の linux-2.6.28 に対応できていないため。
Module /usr/src/modules/nvidia-kernel failed.
Hit return to Continue
4) 手パッチ。上記のエラーを直すために、ソースコードを修正する。
手順は、http://www.trausch.us/2008/10/25/nvidia-17780-linux-2628/ で紹介されている方法に従う。
まずmodules/nvidia-kernel/nv/nvacpi.c の 161行目の以下の部分を
// assign driver data structure ptr to this device
acpi_driver_data(device) = pNvAcpiObject;
以下のように書き換える
// assign driver data structure ptr to this device void *addd = acpi_driver_data(device); addd = pNvAcpiObject;
次にヘッダファイルをコピー(豪快な方法だけど,今回は黙認)
$ cd /lib/modules/2.6.28-rc5.custom/source/include/asm-x86/ $ sudo cp -r ../../arch/x86/include/asm/*
5) 再度 make-kpkg modules_image を実行.
$ sudo make-kpkg --initrd --append_to_version .custom modules_image
一つ上に nvidia-kernel-????.deb が生成されれば、成功。
6) 出来上がったパッケージなどをインストール
まずはカーネルモジュール
$ sudo dpkg -i nvidia-kernel-2.6.28-rc5.custom_177.82-1+2.6.28-rc5.custom_i386.deb
つづいてライブラリ
$ sudo dpkg -i nvidia-glx_177.82-1_i386.deb nvidia-glx-dev_177.82-1_i386.deb
以上.