このブログを検索

2013/02/26

Fedora14へnvidiaドライバのインストール

NVidiaのドライバインストールする時に面倒くさかったのでメモ.

nvidiaデバイスの確認
# /sbin/lspci -n | grep 'nVidia'
0f:00.0 VGA compatible controller [0300]: nVidia Corporation Device [10de:06dd] (rev a3)
0f:00.1 Audio device [0403]: nVidia Corporation GF100 High Definition Audio Controller [10de:0be5] (rev a1)
nvidiaモジュールをインストールする為のリポジトリを追加.
# rpm -ivh http://download1.rpmfusion.org/free/fedora/releases/14/Everything/x86_64/os/rpmfusion-free-release-14-0.4.noarch.rpm
# rpm -ivh http://download1.rpmfusion.org/nonfree/fedora/releases/14/Everything/x86_64/os/rpmfusion-nonfree-release-14-0.4.noarch.rpm
モジュールのインストール(※kmodとakmodの違いは末尾に記述)
# yum -y  install kmod-nvidia
# yum -y install akmod-nvidia
ダブルインストールしてみたが、Fedora15にアップグレードした時にエラーを吐いてしまいGUIで起動しなくなってしまった.多分nvidiaモジュールのバージョンが違うからなんだろう.
こうならないように、akmodのみでインストールしておくべきだったのかもしれない.
後で確認しよう.
念のためキャッシュをHDDにフラッシュして再起動.
# sync(x4回くらいらしい)
# reboot
カーネルオプションの確認
# cat /proc/cmdline
rdblacklist=nouveau nouveau.modeset=0
上記オプションが追加されていた.
モジュールがロードされているか確認
# lsmod | grep 'nvidia'
nvidia              11694654  40
i2c_core               27212  1 nvidia
nouveauがロードされてたら、ロードしないように設定この項目が該当してしまった場合は、nouveauのアンインストールか、bootオプションでnouveauモジュールをロードしないようにする、もしくはinitrd の再構築をおこなう。
  • nouvueauアンインストールの場合(未検証)
yum remove xorg-x11-drv-nouvea
手動で /lib/modules/2.6.31.12-174.2.19.fc12.x86_64/kernel/drivers/videoの中のnvidiaのディレクトリごと削除し、改めてNVIDIAのドライバをインストールし直し
  • grub.confへのオプション追加の場合(kmod-nvidia, akomd-nvidiaインストール時点で追加されているはず)
rdblacklist=nouveau nouveau.modeset=0
どちらか片方のオプションでも回避できる気がする.
  • もしくは以下の方法(未検証)
# vim /etc/modprobe.conf
alias nouveau off
#vim /etc/modprobe.d/blacklist.conf
blacklist nouveau
  • 上記設定でもnouveauがロードされる場合はinitrdの再構築
# cd /boot
# mv initramfs-$(uname -r).img initramfs-$(uname -r)-nouveau.img
# dracut initramfs-$(uname -r).img $(uname -r)
--
# sync(x4回くらい)
# reboot
--
# wget  [ http://target.driver.version.url ]
# chmod 755 NVIDIA-Linux-x86_64-270.41.06.run
# ./NVIDIA-Linux-x86_64-270.41.06.run --kernel-source-path= --kernel-name=$(uname -r)
--
# yum -y install freeglut
# yum -y install freeglut-devel
--
# yum -y install kernel-devel

nvidiaモジュールが組み込まれた状態で初期RAMディスクの再構築をおこなう.
# cd /boot
# mv initramfs-$(uname -r).img initramfs-$(uname -r).img.OLD
# dracut initramfs-$(uname -r).img $(uname -r)

これでnvidiaが組み込まれたinitrdが作成できたってことなのだろうか?(自信ないです)
# lsinitrd /boot/initramfs-$(uname -r).img | grep nvidia
-rw-r--r--   1 root     root           18 Aug 20  2011 etc/ld.so.conf.d/nvidia-lib64.conf
これで、ドライバのインストールは終了.

以下は、調べていて気になったことのメモ.
■ kmod-nvidia、akmod-nvidiaモジュールの違い
kmodとは
カーネルドライバモジュールの略.
カーネルに適応したモジュール.事前にコンパイルされているので負荷もなくカーネルに適応できる.(カーネルアップデートした場合はモジュールの再適用が必要)
akmodとは
オートマティックカーネルドライバモジュールの略
カーネルのアップデートの速度が速いので、kmodで用意されたモジュールでは対応しきれない場合がある.akmodは現在のカーネルに適したモジュールを見つけた場合、自動的にコンパイルし、カーネルに適応してくれる.
[参考]
http://ask.fedoraproject.org/question/315/what-is-the-difference-between-an-akmod-and-kmod

■ nouveauとは
nouveauはredhatの有志がnvidiaチップをリバースエンジニアリングして作ったフリーのnvidiaドライバとの事.
[参考]
http://en.wikipedia.org/wiki/Nouveau_%28software%29
http://sourceforge.jp/magazine/07/09/06/0125203

■ syncコマンド
キャッシュ領域に残っているデータを強制的にHDDに書き込むコマンド.
再起動、シャットダウンが行なわれる前にはこの処理は行なわれるが、任意のタイミングで行ないたい時はsyncコマンドで制御する事が出来る(OSのバージョンが古い場合は明示的にsyncを行なってあげないと行けない場合もある).
パフォーマンステストなどキャッシュを空っぽにしたい時とか.
 ■ dracutコマンド
でも結局、dracutコマンド内でmkinitrdコマンドに置き換えてるらしい.
[参考]
・初期ラムディスクイメージの検証
http://docs.redhat.com/docs/ja-JP/Red_Hat_Enterprise_Linux/6/html/Deployment_Guide/sec-Verifying_the_Initial_RAM_Disk_Image.html
・RPM Fusion(自身のOSバージョンにあったモジュール拾いに便利)
http://rpmfusion.org/
・ブラックリストへのドライバー登録
http://docs.redhat.com/docs/ja-JP/Red_Hat_Enterprise_Linux/6/html/Installation_Guide/rescuemode_drivers-blacklisting.html
・initrdって何?
http://www.geocities.jp/sugachan1973/doc/funto72.html
http://ja.wikipedia.org/wiki/Initrd
・Fedora Nvidia install Guide
http://www.mjmwired.net/resources/mjm-fedora-nvidia.html