最近成功地將 173.14.39 版驅動程式安裝在 Fedora 19 (kernel 3.12.11-201),想說應該可以用原廠的驅動程式了。想不到 Fedora 又更新核心到 3.13.5-101 版,剛裝沒多久的驅動程式又再重新編譯一次了。不過,這次沒有那麼成功,一直卡在一個 ACPI 的函式。到網路上搜尋許久,都沒有 173.14.39 版的修正資料。猜想這又是一個 Linux 核心改寫的問題,就往這方向去找。結果,就間接地找到修正的方法,不然怎麼會有這次的發文。修改的地方很簡單,只有一個位置,完整步驟(節錄部份前文步驟,方便讀者操作)的說明如下:
一、下載「驅動程式」、解壓縮
當然要從 NVIDIA 官方網站下載驅動程式才安全,在『Manual Driver Search』那一欄,以筆者的 FX5200 為例,選項為 GeForce→GeForce FX 5 Series→Linux 64-bit→Chinese (Traditional)。因為要修改編譯「核心模組」的腳本,及修改一個 C 程式檔,所以原有驅動程式的安裝不可以讓它自動作業,要分段執行。
第一步先解壓縮,
[SiB@Celeron-D ~]$ sh NVIDIA-Linux-x86_64-173.14.39-pkg2.run -x解開後,產生一個名為 NVIDIA-Linux-x86_64-173.14.39-pkg2 的目錄,之後的文章中將這個目錄稱為『原始碼目錄』。
二、下載「修補檔」參考、修改編譯腳本及程式
修改的檔案整理如下:目錄 | 檔案名 | 修改處的列號 |
---|---|---|
原始碼目錄/usr/src/nv | nvacpi.c | 259+3 |
檔案『原始碼目錄/usr/src/nv/nvacpi.c』的修改
第 359 列,原文if (pNvAcpiObject->notify_handler_installed)修改為
{
NV_ACPI_OS_WAIT_EVENTS_COMPLETE();
// remove event notifier
status = acpi_remove_notify_handler(device->handle, ACPI_DEVICE_NOTIFY, nv_acpi_event);
if (pNvAcpiObject->notify_handler_installed)完成以上修改後,存檔備用。
{
#if LINUX_VERSION_CODE < KERNEL_VERSION(3, 13, 0)
/* beginning with 3.13, acpi_remove_notify_handler() waits for events to finish */
NV_ACPI_OS_WAIT_EVENTS_COMPLETE();
#endif
// remove event notifier
status = acpi_remove_notify_handler(device->handle, ACPI_DEVICE_NOTIFY, nv_acpi_event);
三、執行編譯、安裝
接下來準備下編譯命令了,要先將工作目錄切換到『原始碼目錄』,再下命令[root@Celeron-D NVIDIA-Linux-x86_64-173.14.36-pkg2]# ./nvidia-installer所執行的這個 ./nvidia-installer 程式,就是 NVIDIA 原來的安裝步驟(解壓縮、編譯、安裝)的後兩個步驟,過程就不贅述。
幾個相關的發文列在下面,有需要的讀者請自行參考:
- 安裝 Fedora 的某特定版本之套件
- 安裝 Fedora 「編譯『核心模組』」所需套件
- NVIDIA 在 Fedora 的安裝與自動升降頻設定
- 解決「FX 5200 讓 Fedora 17 的登入變得超級慢」的問題
- 在 Fedora 18 安裝 NVIDIA FX 5200 驅動程式
四、重開機測試前的補安裝及設定
安裝完成後,在重開機前還有兩個步驟要做,待會重開機才會正確。 抑制 Fedora 原裝驅動程式
這裏有筆者發現有好幾個做法,把它們都列出來,讓讀者自己選用:- 在檔案『/etc/modprobe.d/blacklist.conf』末,加上『blacklist nouveau』這行敘述。
- 在檔案『/boot/grub2/grub.conf』中,linux 開始那列命令最後,加上
- nomodeset
- modprobe.blacklist=nouveau
- rdblacklist=nouveau
五、重新開機
兩個畫面快照分享給讀者註:雖然是成功安裝了原廠的驅動程式,可惜還是不能滿足 GNOME 3 對於的硬體的需求,只能使用『MATE 桌面環境』。
後記:
- 有空將系統升級成 Fedora 20 再試試看,所使用的 Linux 核心相同,應該是可以適用。
已測試版本:
- Fedora 19: kernel 3.13.5-101, 3.13.5-103, 3.13.6-100, 3.13.7-100
- NVIDIA FX 5200: 173.14.39 版驅動程式
參考資料:
- RPM Fusion, "nvidia-173xx-kmod - NVIDIA 173xx display driver kernel module," Jan. 12, 2014 [Mar. 3, 2014].
- askununtu.com, "How to install drivers for NVIDIA GeForce FX 5200 on Precise," Sep. 21, 2012 [Fed. 27, 2014].
沒有留言:
張貼留言
感謝你耐心看完本文,歡迎留下任何指正、建議,筆者會儘快回應。(English is also welcome.)