FreeStyleWiki

nouveau

このエントリーをはてなブックマークに追加

[Linux]

Nouveau

読み方は「ヌーヴォー」、ワインのあれと同じです。Nvidia製グラフィックカードのためのオープンソースのドライバ。

詳細はWikipediaなどで確認してください、以下は対応している機種一覧とそのコードネーム

Codenames

http://nouveau.freedesktop.org/wiki/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-utils kernel-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_headers

fakeroot 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'

では起動していきましょう…