2009年1月4日 星期日

nvidia, KDE4 and openSUSE 11.1

使用 nvidia 顯示卡和 kde 4 會有些效能上的問題
您可以參考 http://userbase.kde.org/GPU-Performance
目前(尤其是) NVIDIA 顯示卡驅動程式和 kwin (KDE4 的視窗管理員)
以及 plasma ( KDE4 的桌面 shell) 都不太能配合
通常您可以使用 compiz 做視窗管理員來避免使用 kwin
plasma 的部份您就逃不掉了
(在此順便一提,請使用 X11:/XGL 的套件庫,升級 compiz, emerald 等到最新套件
就不會有 emerald 視窗裝飾消失的情況發生,
勿使用 X11:/Compiz 套件庫)
上面的連結中提供了一些增進圖形效能的臨時辦法
除了升級到 beta 版的驅動程式外,其他建議似乎效果不顯著
如果您像我一樣有個桌面上的桌面資料夾
寄件者 openSUSE 11.1

請試試看從這桌面資料夾來啟動程式
顯示忙碌的游標跳動大概要等1秒才出現
在這桌料夾拖曳圖示看看,完全會慢半拍
我會關掉這個資料夾,然後在桌面上按右鍵
選擇"桌面設定",將"桌面活化"類型改為"資料夾檢視"
寄件者 openSUSE 11.1

就會變成以前的樣子
寄件者 openSUSE 11.1

(但效能改進有限)
(若要改回原來的樣子,在桌面活化類型選"桌面Desktop without toolbox",確定。
在桌面上按右鍵"新增元件",將"資料夾檢視"拖曳到桌面,
設定該資料夾(扳手圖示)位置為桌面)

根據 http://userbase.kde.org/GPU-Performance 文章的提示
nvidia 不斷的在改進這方面的問題,因此
雖然一般都不建議使用 beta 版本,
我還是決定來試試看...

下載 nvidia 驅動程式
穩定版 for Unix: http://www.nvidia.com.tw/object/unix_tw.html
32 位元的 Linux 作業系統請選 Linux IA32
64 位元的 Linux 作業系統請選 Linux AMD64/EM64T 版本
在 openSUSE 中單鍵安裝或
http://download.nvidia.com/opensuse/{Version} 套件庫安裝的就是這穩定的版本
請參考 http://en.opensuse.org/Nvidia 使用單鍵安裝或加入 NVIDIA 社群套件庫來安裝
(只要在社群套件庫中勾選 NVIDIA 套件庫,11.1 會在您使用 YaST 新增移除套件時,
自動幫您裝上 NVIDIA 的驅動程式)

Beta 版本的 nvidia 驅動程式可由 http://www.nvidia.com.tw/Download/Find.aspx?lang=tw 取得
我是直接由 ftp://download.nvidia.com/XFree86/Linux-x86/180.18/ 取得 180.18 的版本(這是 32 位元版本)
注意:使用 beta 版的驅動程式可能會付出系統不穩定的代價
pkg# 後面的號碼是代表預先編譯的環境(如果我們確定是要自行編譯,應該是沒差的,
您可以選擇檔案較小的)
安裝步驟參考 http://en.opensuse.org/Nvidia#The_hard_way (已經告訴您有點難了喔)
先安裝好 kernel-source gcc make 等套件
# zypper in kernel-source gcc make

看原本裝了哪些 nvidia 驅動程式(您使用的核心和驅動程式可能會不同)
沒錯的話將之刪除
# rpm -qa | grep nvidia
x11-video-nvidiaG02-177.82-1.1
nvidia-gfxG02-kmp-pae-177.82_2.6.27.7_9.1-1.1
# rpm -e `rpm -qa | grep nvidia`
WARNING: /lib/modules/2.6.27.7-9-pae/kernel/sound/i2c/other/snd-tea575x-tuner.ko needs unknown symbol video_exclusive_open
WARNING: /lib/modules/2.6.27.7-9-pae/kernel/sound/i2c/other/snd-tea575x-tuner.ko needs unknown symbol video_exclusive_release
22861 blocks
------------------------------------------------------------------------
Switching the use of "nvidia" driver of NVIDIA to "nv" driver of X.Org
------------------------------------------------------------------------

Patching /etc/X11/xorg.conf ... done

為了避免 NVIDIA 自動安裝,我們要停用 NVIDIA 套件庫
# zypper lr
# | 別名 | 名稱 | 已啟用 | 重新整理
---+-------------------------------+-------------------------------+-----------+---------
1 | Libdvdcss repository | Libdvdcss repository | 是 | 否
2 | Packman Repository | Packman Repository | 是 | 否
3 | X11:XGL | X11:XGL | 是 | 否
4 | openSUSE 11.1-0 | openSUSE 11.1-0 | 否 | 否
5 | repo | NVIDIA Repository | 是 | 否
6 | repo-debug | openSUSE-11.1-Debug | 否 | 否
7 | repo-non-oss | openSUSE-11.1-Non-Oss | 是 | 否
8 | repo-oss | openSUSE-11.1-Oss | 是 | 否
9 | repo-source | openSUSE-11.1-Source | 否 | 否
10 | repo-update | openSUSE-11.1-Update | 是 | 是
11 | swyear | swyear | 是 | 否

Nvidia 套件庫在第5個
# zypper mr -d 5
套件庫 'repo' 已成功停用。

接下來我們要關閉 X,在文字模式下安裝
按 Ctrl-Alt+F1(F1~F6均可)
用 root 登入
# cd {您的NVIDIA-Linux-*.run所在位置}
# init 3 (跑完後按個 Enter才會出現提示符號#)
# sh NVIDIA-Linux-*.run (可用 Tab 自動補滿)

接下來會請您接受授權合約(請用左右鍵將光棒移到 Accept 按 Enter)
No precompiled kernel interface was found to match your kernel; would you like the
installer to attempt to download a kernel interface for your kernel from the NVIDIA ftp site
(ftp://download.nvidia.com)?

因為沒有預先編譯好的核心介面,問您要不要下載?(通常是下載不到的...)回答:Yes 試試看吧
No matching precompiled kernel interface was found in the NVIDIA ftp site; this means
that the installer will need to compile a kernel interface for your kernel.

我就說吧...請回答 OK,讓安裝程式自行編譯核心介面
然後安裝程式會開始編譯核心模組,檢查衝突的檔案,安裝核心模組
Would you like to run the nvidia-xconfig utility to automatically update your configuration
file so that the NVIDIA X driver will be used when you restart X? Any pre-existing X configuration
file will be backed up.

問您要不要自動更新您的 X 設定檔,當然要囉
Your X configuration file has been successfully updated. Installation of NVIDIA Acceleration
Graphics Driver for Linux-x86 (version: 180.18) is now complete.

完成了
openSUSE 使用者要記得下面的命令
# sax2 -r -m 0=nvidia

指定使用 nvidia 驅動程式並調整螢幕大小及解析度
別忘了測試
完成之後
# init 5

會閃現 NVIDIA Beta driver 的 logo,再次進入 X。

根據上面桌面資料夾中啟動程式與拖曳圖示看來,情況真的有改善
魔獸世界也照常玩,但是休眠到記憶體(s2ram)失效了
可以睡著,但是醒不來,會變成重開機(然後修復硬碟...)
您可以換回原本的驅動程式,或者 s2ram 您可以不用的話...
在系統設定->進階->電源管理->編輯設定檔
將出現"暫停並儲存到記憶體"的地方都改掉,例如改成"鎖定螢幕"
寄件者 openSUSE 11.1

尤其筆記型電腦預設蓋子蓋上就會休眠到記憶體
順便一提,剛裝好時螢幕亮度不對,也是在這裡調整。

若要換回原本 NVIDIA 套件庫中的驅動程式:
Ctrl-Alt+F1
以 root 登入
# init 3
# nvidia-installer --uninstall

若您下載的 NVIDIA-Linux-*.run 還在,您也可以
# cd {NVIDIA-Linux-*.run 所在目錄}
# sh NVIDIA-Linux-*.run --uninstall

完成後,重新啟用 NVIDIA 套件庫,安裝驅動程式
# zypper mr -e 5
# yast sw_single

第二個指令會直接呼叫文字介面的 YaST 的軟體管理
11.1 中您只要按 Tab 到 Accept 按 Enter 就可以了
他就會將原有的驅動程式裝上了,最後
# init 5
# shutdown -r now

重新啟動電腦

我決定用 beta 一陣子,這樣我在 YaST 的軟體管理中點選套件時
不至於慢半拍,有不能忍受的缺點時再換回來吧

2009/01/05 更新:
http://techbase.kde.org/User:Lemma/KDE4-NVIDIA 有很多成功的案例
也包含 openSUSE
先測試
$ nvidia-settings -a InitialPixmapPlacement=2 -a GlyphCache=1

大部份 N 卡 8,9 系列的(運氣好的話),都有機會在效能上得到很大的提升
我就是運氣好的那個:)
konsole 的殘像,桌面資料夾的遲緩,YaST 軟體管理的問題都有很大的改善
正如其他人所說的
所感受到的改善是 huge (我現在的感覺也是如此)
您也可以試試看
將下面這個檔案 fix-nv.sh 放在 ~/.kde4/Autostart/
#!/bin/bash
nvidia-settings -a InitialPixmapPlacement=2 -a GlyphCache=1 &

記得賦與此檔案執行權限
$ chmod +x fix-nv.sh

我又回到正式版的 nvidia 驅動程式了

5 則留言:

Jing 提到...

哎呀~沒想到即使使用compiz也沒辦法避掉KDE4圖形渲染的問題!真是糟糕!
這幾天我直接衝上KDE 4.2 Beta去玩玩,目前看來4.2值得期待,27號就要面世了。希望屆時nvidia問題已有簡單方便的解法...

swyear 提到...

我應該也會升級 4.2

See now 提到...

為了在 reiserfs 下面做反刪除.
在 opensuse 11.1 下面
sudo zypper in libreiserfs-progs
結果出現 The following packages are going to be REMOVED:
reiserfs yast2-repair
這樣做以後會不會掛不上根分區呢(我的根分區是 reiserfs 的)
也不知道有什麼其他方法可以反刪除.
yast2-repair 是什麼東西呢?可以用來恢複數據麼?
從哪裡可以看到你的信箱呢?

See now 提到...

突然想起文件系統的使用支持是由內核提供的,所以就裝上了 libreiserfs-progs ,大不了創建不了分區.但是安裝之後得到了.
/usr/sbin/cpfs.reiserfs
/usr/sbin/mkfs.reiserfs
/usr/sbin/resizefs.reiserfs
/usr/sbin/tunefs.reiserfs
並沒有我想要的 fsck.reiserfs 或者 reiserfsck.其他的發行版的 libreiserfs-progs 似乎是包含 fsck.reiserfs 的啊.

swyear 提到...

See now:
抱歉看不懂您在問什麼,我沒有這方面的經驗,可能要等路過的高手來回答了。