Gentoo Linux nVidia 指南
1.
簡介
nVidia 自己發表了他們的 Linux 驅動程式,提供很好的效能及 3D 加速。驅動程式分成
兩部份:nvidia-kernel 及 nvidia-glx。
nvidia-kernel 是處理與顯示卡間低階通訊的核心驅動程式。他只是一個叫作
nvidia 的核心模組,他安裝時依賴你的核心,並且在你用 nvidia 驅動程式時要
載入他。
核心驅動程式以外,你也需要安裝 X11 GLX 層的程式 (nvidia-glx)。這是讓 X
繪製圖形用的,他內部用 nvidia-kernel 核心驅動程式和硬體溝通。
2.
設定您的顯示卡
核心設定
如同上面提到的,nVidia 核心驅動程式依賴你的核心進行安裝。他編譯成模組,所以你的
核心要支援模組載入。如果你使用 genkernel 設定核心,那一切都沒問題。如果
沒有的話,再三確認核心有支援這個功能:
原始碼 2.1: 啟動模組載入支援 |
Loadable module support --->
[*] Enable loadable module support
|
你也需要啟動核心中的 Memory Type Range Register:
原始碼 2.2: 啟動 MTRR |
Processor and Features --->
[*] MTRR (Memory Type Range Register) support
|
nVidia 的模組以及函式庫分別放在兩個套件中:nvidia-glx 及 nvidia-ke
rnel。前者為 X11 GLX 函式庫,而後者為核心模組。您兩個都需要,所以應該
趁現在安裝他們。
nvidia-kernel ebuild 會依據 /usr/src/linux 符號連結決定核心的版本
。請確定這個符號連結有指向你使用的核心,並且已經正確設定好了。請參閱 安裝手冊 取得設定核心的詳細資訊。
如果你使用 gentoo-sources-2.6.11-r6,你的 /usr/src 目錄看起來像這樣:
原始碼 2.3: 檢查 /usr/src/linux 符號連結 |
# cd /usr/src
# ls -l
lrwxrwxrwx 1 root root 22 Apr 23 18:33 linux -> linux-2.6.11-gentoo-r6
drwxr-xr-x 4 root root 120 Apr 8 18:56 linux-2.4.26-gentoo-r4
drwxr-xr-x 18 root root 664 Dec 31 16:09 linux-2.6.10
drwxr-xr-x 18 root root 632 Mar 3 12:27 linux-2.6.11
drwxr-xr-x 19 root root 4096 Mar 16 22:00 linux-2.6.11-gentoo-r6
|
在上面的輸出中,你會看到 linux 符號連結指向 linux-2.6.11-gentoo-r6
核心。
如果符號連結沒有指向正確的核心,你需要像這樣更新連結:
原始碼 2.4: 建立/更新 /usr/src/linux 符號連結 |
# cd /usr/src
# ln -snf linux-2.6.11-gentoo-r6 linux
|
非必要:確認對舊型顯示卡的支援
注意:
不幸的是,有一些舊型顯示卡不被新版的 nvidia-glx and nvidia-kernel
支援。nVidia 提供 支援顯示卡列表。請在安
裝前檢查這張表。
|
底下是不支援的舊型顯示卡。
原始碼 2.5: Unsupported cards |
TNT2
TNT2 Pro
TNT2 Ultra
TNT2 Model 64 (M64)
TNT2 Model 64 (M64) Pro
Vanta
Vanta LT
GeForce 256
GeForce DDR
GeForce2 GTS
GeForce2 Pro
GeForce2 Ti
GeForce2 Ultra
GeForce2 MX Integrated graphics
Quadro
Quadro2 Pro
Quadro2 EX
|
如果你是用上面任何一張,你需要封鎖新版的 nVidia 驅動程式,然後安裝舊的版本:
原始碼 2.6: 鎖新版的 nVidia 驅動程式 |
# echo ">media-video/nvidia-kernel-1.0.6629-r4" >> /etc/portage/package.mask
# echo ">media-video/nvidia-glx-1.0.6629-r7" >> /etc/portage/package.mask
|
安裝合適的驅動程式
因為 nvidia-glx 依賴 nvidia-kernel,安裝
nvidia-glx 就足夠了。
原始碼 2.7: 安裝 nVidia 驅動程式 |
# emerge nvidia-glx
|
重要:
當你每次 編譯新核心 或重新編譯目前的,你需
要執行 emerge nvidia-kernel 重新安裝 nVidia 模組。nvidia-glx 並不會受到
核心改變的影響,也不用在重新編譯/升級 X 時重新編譯。
|
當安裝程式結束以後,請執行 modprobe nvidia 以將核心模組載入記憶體。
原始碼 2.8: 載入核心模組 |
# modprobe nvidia
|
為了避免在每次開機都要載入模組,您大概想在每次開機的時候都自動將此模組載入,所
以請編輯 /etc/modules.autoload.d/kernel-2.6 (或
kernel-2.4,依你的核心版本決定),並在裡面加上 nvidia。別忘
了在儲存退出以後執行 modules-update!
原始碼 2.9: 執行 modules-update |
# modules-update
|
設定 X Server
當安裝了適當的驅動程式以後,您必須設定 X Server (XFree86 或 Xorg),讓它使用
nvidia 驅動程式,而不是預設的 nv 驅動程式。
使用您喜愛的文字編輯器 (例如 nano 或 vim) 開啟 /etc/X11/xorg.conf
(或是你仍使用舊的設定檔,用 /etc/X11/XF86Config),接著來到
Device 小節。在此小節中,更改有關 Driver 那行:
原始碼 2.10: 在 X Server 設定檔中將 nv 改成 nvidia |
Section "Device"
Identifier "nVidia Inc. GeForce2"
Driver "nvidia"
VideoRam 65536
EndSection
|
然後到 Module 小節然後確定載入 glx 模組以及 dri 沒有載入:
原始碼 2.11: 更新 Module 小節 |
Section "Module"
# Load "dri"
Load "glx"
EndSection
|
接著,在 Screen 小節中,確定 DefaultDepth 設定成 16 或 24。沒有的
話, nvidia-glx 不會啟動。
原始碼 2.12: 更新 Screen 小節 |
Section "Screen"
DefaultDepth 16
Subsection "Display"
EndSection
|
執行 opengl-update 讓 X Server 使用 nVidia GLX 函式庫。
原始碼 2.13: 執行 opengl-update |
# opengl-update nvidia
|
新增您的使用者到Video群組中
您必需增加使用者到Vedio群組中,這樣它才有權限存取nvidia裝置檔:
原始碼 2.14: 增加使用者到Vedio群組中 |
# gpasswd -a youruser video
|
如果您不使用udev這動作也許不是全不都要做,但是這並不會影響和
使您的系統變爛:p
測試您的顯示卡
要測試您的 nVidia 顯示卡,啟動 X 然後執行 glxinfo | grep direct 指令,它應該告訴您直接貼圖已經啟動:
原始碼 2.15: 檢查直接貼圖狀態 |
$ glxinfo | grep direct
direct rendering: Yes
|
要測試您的 FPS,請執行 glxgears。
啟動 nvidia 支援
一些工具,像是 mplayer 及 xine-lib,使用他們自己的 USE 設定,
"nvidia" 啟動 XvMCNVIDIA 的支援,在觀看高解析度電影時很有用。在
/etc/make.conf USE 變數中加入 "nvidia" 或在
/etc/portage/package.use 中的 media-video/mplayer 及
media-libs/xine-lib 加入。
然後,執行 emerge -uD --newuse world 重新編譯會受到這改變影響的程式。
使用 NVidia 設定工具
在 NVidia 發表 1.0.6106 板後他也提供一個設定工具。這工具讓你可以改變顯示卡設定
,而不需要重新啟動 X 伺服器。這可以透過 Portage 中的
media-video/nvidia-settings 安裝。
3.
解決問題
在有 4Gb 以上記憶體的電腦讓 2D 工作
如果你在 nVidia 2D 加速上遇到困難,可能是你不能啟動 MTRR 的 write-combining
range。要確認的話,檢查 /proc/mtrr 的內容:
原始碼 3.1: 檢查是否啟動 write-combining |
# cat /proc/mtrr
|
每一行都應該包含 "write-back" 或 "write-combining"。如果你看到有一行有
"uncachable" 你需要改變 BIOS 設定來修正。
重開機然後進入 BIOS,找到 MTRR 設定(通常在 "CPU Settings" 中)。把他的設定從
"continuous" 改成 "discrete",然後開機回到 Linux。你會發現不再有
"uncachable" 而且 2D 加速可以正常工作。
我碰到關於不支援 4K 堆疊大小的錯誤
版本1.0.6106 之前的 nvidia-kernel 只支援 8K 堆疊大小。比較新的核心 (2.6.6
及更新的) 已經支援 4K 堆疊大小。在核心設定中不要選擇 4K 堆疊大小。你可以在
Kernel Hacking 區域中找到這項設定。
當我要載入模組時他顯示 "no such device"
這通常是因為沒有符合的顯示卡。確定你有 nVidia 的顯示卡 (你可以用
lspci 再三確認)。
如果你確定你有 nVidia 的顯示卡,檢查 BIOS 看 Assign IRQ to VGA 有沒有設
定。
我收到 "no screens found" 而 log 記錄 "Failed to initialize the NVIDIA kernel
module!"
可能是因為你沒有 /dev/nvidia* 裝置檔。使用 NVmakedevices.sh
建立。
原始碼 3.2: 建立 nvidia 裝置結點 |
# /sbin/NVmakedevices.sh
|
4.
進階設定
文件
nVidia 驅動程式套件也包含廣泛的文件。這安裝到 /usr/share/doc 目錄中,你
可以用底下的指令瀏覽:
原始碼 4.1: 瀏覽 NVIDIA 文件 |
# less /usr/share/doc/nvidia-glx-*/README.txt.gz
|
核心模組參數
nvidia 核心模組接受許多的參數(選項),讓你調整驅動程式的行為。編輯
/etc/modules.d/nvidia 加入或改變這些參數。記得在修改後執行
modules-update。另外要記在心上的是要重新載入 nvidia 新的設定才會
生效。
原始碼 4.2: 調整 nvidia 參數 |
# nano -w /etc/modules.d/nvidia
# modules-update
# modprobe -r nvidia
# modprobe nvidia
|
進階 X 設定
GLX 層也有眾多的選項可以設定。這些設定控制 TV 輸出,多顯示器,顯示器頻率偵測等
等。同樣的,所有的選項在文件中有清楚的說明。
如果你想要設定某些選項,你需要在 X 設定檔(通常是 /etc/X11/xorg.conf)中相
對應的裝置區域加入。例如說,我想要關閉起始商標畫面:
原始碼 4.3: X 設定檔中的進階 nvidia 設定 |
Section "Device"
Identifier "nVidia Inc. GeForce2"
Driver "nvidia"
Option "NoLogo" "true"
VideoRam 65536
EndSection
|
這份文件是以
Creative Commons - 姓名標示-相同方式分享 授權條款發布
|