Next Previous Contents

8. 故障排除

8.1 我要如何得到故障信息的具體含義?

一般來說,這些都在 /var/lov/XFree86.*.log 日誌當中. "(WW)"代表警訊 "(EE)"代表錯誤

8.2 不能執行 startx, 日誌當中有這樣的訊息:"(EE) NVIDIA(0): Failed to initialize the NVdriver kernel module!"

這是核心模組的問題, 請先用 lsmod 查看模組的載入情況, 如果沒有AGP驅動模組請用 modprobe 載入, 如果在載入的時候出現問題, 可能你所載入的模組並不是為你的核心編譯的. 在編譯的驅動程式的時候可以指定你的核心: 'make install SYSINCLUDE=/path/to/kernel/headers' 模組的名稱為 "NVdriver"

8.3 我能啟動X, 但是 OpenGL的應用無效

這可能和函式庫有關, 請執行 "ldconfig" ,另外請檢視 XF86Config設定檔, 確信裡面有加載glx的描述.

8.4 OpenGL 軟體出現如下警訊是什麼問題?


 Error: Could not open /dev/nvidiactl because the permissions
        are too restrictive.  Please see the FREQUENTLY ASKED QUESTIONS
        section of /usr/share/doc/NVIDIA_GLX-1.0/README for steps
        to correct.

看起來像是PAM安全模組的問題(它變更了設備的訪問權限), 如果要解決它,請關閉PAM. 如果你的 /etc/security/ 目錄裡有 console.perms 設定檔 請將以 < dri > 開頭的字句整行移除. 如果你的系統裡有 /etc/logindevperms 請移除與 /dev/nvidiactl 有關的字句. 然後執行 chmod 0666 /dev/nvidia* ; chown root /dev/nvidia*

8.5 OpenGL 程式掛掉並且有如下警訊:


WARNING: Your system is running with a buggy dynamic loader.
        This may cause crashes in certain applications.  If you
        experience crashes you can try setting the environment
        variable __GL_SINGLE_THREADED.  For more information please
        consult the FREQUENTLY ASKED QUESTIONS section in the file
        /usr/share/doc/NVIDIA_GLX-1.0/README.

這是老版本的動態加載器造成的. 請設定環境變量 __GL_SINGLE_THREADED 為任意值. 如果你使用bash shell ,請你這樣執行:


 export __GL_SINGLE_THREADED

如果你使用 csh 和相關的shell 請這樣執行:


setenv __GL_SINGLE_THREADED

8.6 在我執行 雷神III 切換顯示模式時, 它掛掉了.

照上面的方法設定 __GL_SINGLE_THREADED

8.7 當我執行 startx 時, X 掛掉了, 並在 XFree86 日誌中留有如下記錄:


(II) LoadModule: "nvidia"
        (II) Loading /usr/X11R6/lib/modules/drivers/nvidia_drv.o
        No symbols found in this module
        (EE) Failed to load /usr/X11R6/lib/modules/drivers/nvidia_drv.o
        (II) UnloadModule: "nvidia"
        (EE) Failed to load module "nvidia" (loader failed, 256)
        ...
        (EE) No drivers available.

nvidia_drv.o 需要一個符號連結, 有些rpm版本在安裝時沒有建立這種連結, 推薦你用 NVIDIA_GLX 的 tar 安裝包進行安裝.

8.8 我的系統可以運行, 但不穩定, 這是怎麼回事?

這與AGP模式有關, 可以通過 Option "NvAgp" "0至3的值" 來設定. "0"表示關閉加速; "1" 表示使用NVAGP; "2" 表示使用AGPGART; "3" 表示使用 AGPART, 如果失效, 就自動使用NVAGP模式. 注意: 要使用 AGPGART 模式, 你必需將它編譯進核心,或者是編譯成模組. 如果系統核心當中有 AGPGART, NVAGP 模式將不起任何作用. 所以推薦你將 AGPGART 編譯成模組. 另外要注意的是, 變更驅動程式後要重新啟動你的機器才能生效.

以下的芯片集支援 NVAGP 模式, 其它的芯片集請使用 AGPGART 模式.


Intel 440LX
  o Intel 440BX
  o Intel 440GX
  o Intel 815 ("Solano")   
  o Intel 820 ("Camino")   
  o Intel 830
  o Intel 840 ("Carmel")   
  o Intel 845 ("Brookdale")
  o Intel 845G
  o Intel 850 ("Tehama")
  o Intel 860 ("Colusa")
  o AMD 751 ("Irongate")
  o AMD 761 ("IGD4")   
  o AMD 762 ("IGD4 MP")
  o VIA 8371   
  o VIA 82C694X
  o VIA KT133
  o VIA KT266
  o RCC 6585HE
  o Micron SAMDDR ("Samurai") 
  o Micron SCIDDR ("Scimitar")
  o nForce AGP
  o ALi 1621
  o ALi 1631
  o ALi 1647
  o ALi 1651
  o ALi 1671
  o SiS 630
  o SiS 633
  o SiS 635
  o SiS 645
  o SiS 730
  o SiS 733
  o SiS 735
  o SiS 745

一些 Linux 核心在AMD架構的CPU上運行時可能會出現與AGP有關的Bug. 它們是:


 AMD Athlon XP
 AMD Athlong 4
 AMD Athlon MP and Models 6 
 AMD Duron

你可以在開機的時候避開它們的Bug: 在 GRUB 中輸入 mem=nopentium 或在 lilo.conf 設定檔中加入 : append = "mem=nopentium"

設定 BIOS 中AGP的範圍在 0xEA 和 0xEE 之間.

請升級你的 BIOS.

設定 AGP的速率檔位:


insmod NVdriver NVreg_ReqAGPRate=2   # 只使用第2檔
insmod NVdriver NVreg_ReqAGPRate=1   # 只使用第1檔

也可以在 /etc/modules.conf 設定檔中進行描述:


alias char-major-195 NVdriver
options NVdriver NVreg_ReqAGPRate=2  
options NVdriver NVreg_ReqAGPRate=1 

8.9 為什麼我的 OpenGL 軟體慢得要死?

可能它還在使用老的函式庫.

8.10 在編譯核心驅動程式時出現警訊:


You appear to be compiling the NVdriver kernel module with
        a compiler different from the one that was used to compile
        the running kernel. This may be perfectly fine, but there
        are cases where this can lead to unexpected behaviour and
        system crashes.

        If you know what you are doing and want to override this
        check, you can do so by setting IGNORE_CC_MISMATCH.

        In any other case, set the CC environment variable to the
        name of the compiler that was used to compile the kernel.

系統上的核心不是用當前的GCC編譯的, 請重新編譯核心, 並在重新啟動時載入新核心.

8.11 X 掛掉了, 並出現警訊"Failed to allocate LUT context DMA"

解決方法同上一個問題一樣.


Next Previous Contents