[Linux]
Nouveau
- 読み方は「ヌーヴォー」、ワインのあれと同じです。Nvidia製グラフィックカードのためのオープンソースのドライバ。
詳細はWikipediaなどで確認してください、以下は対応している機種一覧とそのコードネーム
Codenames
Installing Nouveau
- 開発者サイトのやり方にしたがってインストールしてみましょう
各プラットフォームでのインストールマニュアル
http://nouveau.freedesktop.org/wiki/InstallNouveau/
私の環境はDebian/sidです。Debian向けのインストール方法が書かれているので見てみましょう
http://nouveau.freedesktop.org/wiki/DebianInstall/
Debianでのインストール
紹介部分に以下のようにあります
Nouveau is the X11 driver which should -- at a later stage -- offer 3D acceleration.
Currently 2D support is quite useful and we are working on 3D acceleration and deobfuscating
the source we inherited from the X11 nv driver.
NouveauはX11のためのドライバであり、それは次の段階として3Dのアクセラレーションを提供するべきです
現状は2Dのサポートが有効で、我々は3Dアクセラレーションの提供のために働いており、
X11のnvドライバから引き継いだソースを明るみに出している最中です。
なるほど、では実際に手を動かしてみましょう
gitから最新のカーネルを使用し、Debian GNU/Linuxの不安定版でNouveauをインストールする(オープニング)
いきなりキツそうなんですがやめていいですか…?
関連ツールをインストール(A:手動でやる場合)
まずlibSDL 1.2が必要みたいです、低レイヤなGUIの描画用でしょうか
apt-get install libsdl1.2-dev
次に依存関係にあるものとビルド用のツールをインストール(xorg/drm/mesaとかはNouveauの依存関係ですね)
apt-get install xorg-dev libdrm-dev git git-core libtool mesa-common-dev automake autoconf
この段階で結構X11関連のヘッダファイル等が揃うみたいですね。
関連ツールをインストール(B:依存関係をまとめたdebファイルを使用する場合)
Nouveauの開発チームがdebファイルを作っているので、Aの手段を取らなくても以下のような手順でインストールすることも可能のようです
debファイルへのリンク:http://nouveau.freedesktop.org/wiki/DebianInstall/nouveau-build-deps_1.0_all.deb
インストール方法
dpkg -i nouveau-build-deps_1.0_all.deb # おそらく依存関係について文句を言われる
apt-get -f install # パッケージを使用してインストールすべきでしょう
カーネルビルドの準備
初心者にはキツすぎるんですがなんかカーネルビルドするみたいです、ファッ!?
ここはこう読み替えましょうかapt-get build-dep linux-image-2.6-amd64 # カーネルをビルドするために必要なすべてのパッケージを取得する
今はこれでもいいのかな?apt-get build-dep linux-image-`uname -r`
apt-get build-dep linux
これやると、対象のlinuxカーネルのソースのURLをsources.listに書けと怒られる。原因は、sources.listにsrc-debのラインがないこと。
以下のようにsrc-debのラインを増やしてやる
# cat /etc/apt/sources.list
# 安定のjaist
deb http://ftp.jaist.ac.jp/debian sid main contrib non-free
deb-src http://ftp.jaist.ac.jp/debian sid main contrib non-free
最後にいろいろおまけでインストール(xdev-utilsはパッケージにないみたいですね、xutils-devに名称変更されています…)
apt-get install xutils-dev
xdev-utilskernel-package checkinstall llvm-dev
gitから最新のカーネルを使用し、Debian GNU/Linuxの不安定版でNouveauをインストールする(完結編)
もうすでに息も絶え絶えなんですが、ここで注記が入ります
A loose compilation of commands for the advanced user.
Latest version is available at http://www.alice-dsl.net/jkl345/Installations.html and look for Installation-Nouveau.txt.
There are also precompiled Debian GNU/linux kernel packages available for the AMD64 architecture.
The download and compilation takes quite a long time.
This is the kind of recommended way to install Nouveau as of 12th september 2009.
It's kind of a quick hack, but not so invasive to package management.
卓越したユーザによるざっくりとしたコンパイル手順があります
最新のバージョンは http://www.alice-dsl.net/jkl345/Installations.html で利用可能です。Installation-Nouveau.txtを確認してください。
AMD64のアーキテクチャであればDebian GNU/Linuxのコンパイル済みカーネルパッケージが利用可能です
ダウンロードとコンパイルにはとても長い時間がかかります。
また、これは2009年9月12日時点でのNouveauのインストール手順のたぐいであります。
それは即興のハックにあたるもので、そんなにパッケージ管理機能を侵食しないはずです
スクリプト作者は、それがそのままビルドの自動スクリプトとして使われることはあってはならないとコメントしています。なるほど。
カーネルビルド開始
ここでは元になったスクリプト(http://www.alice-dsl.net/jkl345/Nouveau/Installation-Nouveau.txt)を元にビルドを進めます
まず一般ユーザになってビルドする場所を確保
sudo su - source
pwd
mkdir -p nouveau/Kernel
cd nouveau/Kernel
Nouveauのカーネルツリーを見に行って最新のカーネルドライバを取得する
#
# Nouveau kernel tree (DRM modules) holds the latest nouveau kernel driver.
#
git clone --depth=1 git://anongit.freedesktop.org/git/nouveau/linux-2.6
cd linux-2.6
cp -i /boot/config-`uname -r` ./.config
make oldconfig # and answer the questions, say Yes to NOUVEAU driver of course
ここで結構長いことy/nを聞かれます、.configファイルに書かれたNOUVEAUの設定を確認
4264 # CONFIG_DRM_RADEON_UMS is not set
4265 CONFIG_DRM_NOUVEAU=y
4266 CONFIG_NOUVEAU_DEBUG=5
4267 CONFIG_NOUVEAU_DEBUG_DEFAULT=3
4268 CONFIG_DRM_NOUVEAU_BACKLIGHT=y
make-kpkgはちょっとだけ手順を修正、ここはかなりの時間がかかります
fakeroot make-kpkg --us --uc --initrd --append_to_version=-nouveau.git --revision=nouveau.1 kernel_image kernel_headersfakeroot make-kpkg --us --uc --initrd --append_to_version=-nouveau.git-`date +%Y%m%d` --revision=1 kernel_image kernel_headers
cd ..
うまくいっていればこんな感じ
[email protected]:~/git/nouveau/Kernel$ ll
合計 37328
drwxr-xr-x 26 hiroyuki hiroyuki 4096 7月 13 01:31 linux-2.6
-rw-r--r-- 1 hiroyuki hiroyuki 6820492 7月 13 01:32 linux-headers-3.12.0-nouveau.git-20140713+_1_amd64.deb
-rw-r--r-- 1 hiroyuki hiroyuki 31391962 7月 13 01:31 linux-image-3.12.0-nouveau.git-20140713+_1_amd64.deb
sudo dpkg -i linux-*.deb
対象のカーネルに対するinitrd.imgがまだない場合は手順通り以下を実行
sudo update-initramfs -c -k `uname -r`
上のコマンドを実行して、このエラーメッセージが出る場合
Cannot create version ***-amd64: already exists
単純にinitrd.imgを更新する
update-initramfs -u
DRMのビルド
Nouveauの動作に必要なDRMというモジュールをビルドします
#
# DRM git (DRM userspace libraries) holds libdrm and libdrm_nouveau.
#
sudo aptitude install libdrm-dev # ライブラリーを上書きするためにパッケージをインストール
sudo aptitude hold libdrm-dev # Debianのパッケージシステムに更新されないように固定します(apt-getにはない機能なのでaptitudeで実行)
sudo aptitude hold libdrm-nouveau1 libdrm2
git clone --depth=1 git://anongit.freedesktop.org/git/mesa/drm
cd drm
./autogen.sh
./configure --prefix=/usr --enable-nouveau-experimental-api
make
sudo checkinstall --pkgname nouveau-drm --pkgversion=git-`date +%Y%m%d` --pkgrelease=1 -D --install=no make install
いろいろ聞かれるので、バージョン情報を"1.0.0"などに適当に修正して右のコメントを入れます: "Nouveau DRM user space from git for Nouveau kernel"
dpkgでのインストール時はおそらく--force-overwriteが必須でしょう
cd ..
sudo dpkg --force-overwrite -i nouveau-drm*.deb
DDXのビルド
Nouveauの動作に必要なDDXというモジュールをビルドします
#
# DDX git (2D driver) holds the accelerated Nouveau Xorg driver.
#
sudo aptitude install xserver-xorg-video-nouveau # ライブラリーを上書きするためにパッケージをインストール
sudo aptitude hold xserver-xorg-video-nouveau # Debianのパッケージシステムに更新されないように固定します(apt-getにはない機能なのでaptitudeで実行)
git clone --depth=1 git://anongit.freedesktop.org/git/nouveau/xf86-video-nouveau
cd xf86-video-nouveau
./autogen.sh
make
sudo cp src/.libs/nouveau_drv.so /usr/lib/xorg/modules/drivers # 豪快にDebianのxserver-xorg-video-nouveauで管理されているファイルを上書きする
cd ..
Gallium3Dのビルド
Nouveauと連携するGallium3Dのビルドを行います
#
# Gallium3D's nouveau_dri.so
#
git clone --depth=1 git://anongit.freedesktop.org/git/mesa/mesa
cd mesa/
./autogen.sh
./configure --enable-debug --enable-glx-tls --disable-asm --with-dri-drivers= --enable-gallium-nouveau --disable-gallium-intel --disable-gallium-radeon --with-state-trackers=glx,dri --with-demos=xdemos,demos,trivial,tests
make
以下のコマンドを実際のビルド場所に置き換えて実行してみる
alias gallium='LD_LIBRARY_PATH="/home/source/nouveau/Kernel/mesa/lib" LIBGL_DRIVERS_PATH="/home/source/nouveau/Kernel/mesa/lib/gallium"'
alias gallium='LD_LIBRARY_PATH="/home/source/nouveau/Kernel/mesa/lib" LIBGL_DRIVERS_PATH="/home/source/nouveau/Kernel/mesa/lib/gallium" LIBGL_DEBUG=verbose'
では起動していきましょう…