今天忽然想玩玩PS游戲,沒安裝顯卡驅(qū)動(dòng),玩不了,昨天編譯N次內(nèi)核
留下了編譯后的內(nèi)核源碼,順便把NVIDIA-Linux-x86-1.0-6629-pkg1.run
安裝上吧,正好看到論壇有人問如何安裝這個(gè)驅(qū)動(dòng)。記下來,也許會(huì)對
newbie有點(diǎn)幫助 ^_^
ChangeLog:
加入在X-window下安裝nvidia驅(qū)動(dòng),方便不熟悉字符操作的newbie :)
找到了安裝NVIDIA驅(qū)動(dòng),正確編譯內(nèi)核方法,減少了內(nèi)核編譯的時(shí)間。
Let`s GO !
安裝NVIDIA-6629需要以下幾個(gè)步驟:
1. 進(jìn)入字符界面,NVIDIA驅(qū)動(dòng)在字符界面下安裝。(也可以在X下安裝,參考補(bǔ)充說明)
2. 安裝內(nèi)核源碼包
3. 運(yùn)行NVIDIA-Linux-x86-1.0-6629-pkg1.run 編譯nvidia驅(qū)動(dòng)
4. 修改X的配置文件,使用nvidia驅(qū)動(dòng)
5. 如果nvidia驅(qū)動(dòng)不能自動(dòng)加載,需要修改系統(tǒng)啟動(dòng)腳本,使其啟動(dòng)時(shí)加載 下面逐步的講述如何進(jìn)行:
1. NVIDIA驅(qū)動(dòng)在字符界面安裝:
修改 /etc/inittab中的"
id:5:initdefault:" 字段, 將5改成3
重新啟動(dòng),就會(huì)進(jìn)入字符界面。輸入startx啟動(dòng)X
不同的發(fā)行版啟動(dòng)級(jí)別可能不同,通常會(huì)在inittab中
標(biāo)識(shí)各個(gè)運(yùn)行級(jí)別代表的意義:
# Default runlevel. The runlevels used by Mandrakelinux are:
# 0 - halt (Do NOT set initdefault to this)
# 1 - Single user mode
# 2 - Multiuser, without NFS (The same as 3, if you do not have networking)
# 3 - Full multiuser mode
# 4 - unused
# 5 - X11
# 6 - reboot (Do NOT set initdefault to this) 2. 安裝內(nèi)核源碼包:
可以從http://www.kernel.org下載源碼包或安裝自身發(fā)行版所帶的kernel-source
注意:必須與當(dāng)前使用內(nèi)核版本完全相同。
如果從www.kernel.org下載的源碼包,使用下列命令安裝:
cd /usr/src 進(jìn)入/usr/src目錄中,將源碼包放置在這里。
tar jxvf linux-2.6.10.tar.bz2 解壓源碼包,會(huì)生成linux-2.6.10目錄
ln -s /usr/src/linux-2.6.10 /usr/src/linux 編譯內(nèi)核建議做個(gè)軟鏈接。
并且要確保 /lib/modules/2.6.10/下的build,source目錄
正確指向/usr/src/linux-2.6.10的: [root@NEWLFS modules]#ls -l /lib/modules/2.6.10
lrwxrwxrwx 1 root root 21 2005-02-08 20:28
build -> /usr/src/linux-2.6.10/ drwxr-xr-x 9 root root 216 2005-02-08 20:28 kernel/
-rw-r--r-- 1 root root 3408 2005-02-09 13:26 modules.alias
-rw-r--r-- 1 root root 69 2005-02-09 13:26 modules.ccwmap
-rw-r--r-- 1 root root 7503 2005-02-09 13:26 modules.dep
-rw-r--r-- 1 root root 73 2005-02-09 13:26 modules.ieee1394map
-rw-r--r-- 1 root root 205 2005-02-09 13:26 modules.inputmap
-rw-r--r-- 1 root root 81 2005-02-09 13:26 modules.isapnpmap
-rw-r--r-- 1 root root 4649 2005-02-09 13:26 modules.pcimap
-rw-r--r-- 1 root root 13519 2005-02-09 13:26 modules.symbols
-rw-r--r-- 1 root root 189 2005-02-09 13:26 modules.usbmap
lrwxrwxrwx 1 root root 21 2005-02-08 20:28
source -> /usr/src/linux-2.6.10/ 做完這些,我去安裝 NVIDIA驅(qū)動(dòng),結(jié)果編譯時(shí)出錯(cuò)。 將內(nèi)核源碼編譯一下,不安裝,就可以正常編譯了,這個(gè)問題在linux faq那欄里有寫。 2.4.x內(nèi)核不知是否如此,如果編譯NVIDIA過程中出現(xiàn)錯(cuò)誤,就先編譯一下內(nèi)核
方法很簡單:
更方便簡潔的方法參看補(bǔ)充說明二
從/boot目錄下復(fù)制config-2.6.10到/usr/src/linux下
命名為
.config 對于2.6.x內(nèi)核使用下列命令編譯:
cd /usr/src/linux 進(jìn)入源碼目錄
make 編譯內(nèi)核及模塊
注意:不要去make install 只要編譯就可以了。 2.4.x使用下列命令編譯內(nèi)核,同樣,只編譯不安裝。
cd /usr/src/linux make dep 建立依賴關(guān)系(不知道是否有必要,做下沒壞處)
make bzImage 編譯內(nèi)核
make modules 編譯模塊
通常發(fā)行版中/boot中應(yīng)該有當(dāng)前內(nèi)核的配置文件,如上面的config-2.6.10
如果沒有的話,可以通過下列命令創(chuàng)建出.config
[root@NEWLFS linux]#
cd /usr/src/linux
[root@NEWLFS linux]#
make menuconfig 字符界面配置內(nèi)核
[root@NEWLFS linux]#
make xconfig 圖形界面配置內(nèi)核
這兩種方法任選其一,喜歡的話,可以自己配置一下。
或者直接使用默認(rèn)值,保存退出即可。這樣編譯時(shí)間會(huì)長一些。
make menuconfig: 假如是在圖形界面中的終端運(yùn)行,要保證
該終端窗口為全屏,才不會(huì)出錯(cuò)。 編譯完成后,就可以安裝nvidia驅(qū)動(dòng)了。
3. 運(yùn)行NVIDIA-Linux-x86-1.0-6629-pkg1.run 編譯nvidia驅(qū)動(dòng) :
重啟系統(tǒng),進(jìn)入字符界面:
然后進(jìn)入NVIDIA-Linux-x86-1.0-6629-pkg1.run所在的目錄, 例如我的NVIDIA-Linux-x86-1.0-6629-pkg1.run放在了/root/software下
則使用下列命令安裝:
cd /root/software 進(jìn)入NV.... run所在的目錄
chmod u+x NVIDIA-Linux-x86-1.0-6629-pkg1.run 給予x(可執(zhí)行權(quán)限)
./NVIDIA-Linux-x86-1.0-6629-pkg1.run 運(yùn)行NV.....run
如果你的NVIDIA-Linux-x86-1.0-6629-pkg1.run存放在其他設(shè)備中,比如優(yōu)盤里。
那么你需要先使用
mount命令掛載上你的優(yōu)盤,然后進(jìn)入優(yōu)盤存放NV... run的目錄
執(zhí)行安裝。
首先出現(xiàn)的是NV的許可協(xié)議,選擇accept繼續(xù)。
提示"
NO precompiled kernel interface was found to match your kernel ....."
詢問是否從NV的網(wǎng)站下載,
選擇No 提示"同上文,
this means that the installer will need to compile a new kernel...."
選擇OK,就開始編譯驅(qū)動(dòng)了,整個(gè)編譯過程的信息記錄在
/var/log/nvidia-installer.log 編譯好的NV驅(qū)動(dòng)在
/usr/X11R6/lib/modules/drivers/下
名稱為:
nvidia_drv.o 4. 修改X的配置文件,使用nvidia驅(qū)動(dòng)
使用XFree86 X-window 修改/
etc/X11/XF86Config 使用Xorg X-window 則修改
/etc/X11/xorg.conf 似乎比較新的發(fā)行版(2.6.x內(nèi)核) 都使用xorg 而舊一些的發(fā)行版則使用XFree86
反正/etc/X11/下有哪個(gè)就是那個(gè)啦。
使用文本編輯器,打開,找到下面這段:
Section "Device"
Identifier "Card0"
Driver "nv" ---> "nvidia" -----這里要修改
VendorName "nVidia Corporation"
BoardName "NV17 [GeForce4 MX 440]"
BusID "PCI:1:0:0"
EndSection
將"nv" 改為"nvidia" 也許你的默認(rèn)驅(qū)動(dòng)不是nv,不管是什么,都改成nvidia
并且記下默認(rèn)驅(qū)動(dòng)的名字,以便無法使用nvidia還可以恢復(fù)。:) 再找到下面這段:
Section "Module"
Load "extmod"
Load "glx" -------->如果不存在則自己添加
#Load "dri" ------->如果存在則注釋掉 不要說不會(huì)注釋哦 :)
#Load "GLcore" ---->如果存在則注釋掉
Load "dbe"
Load "record"
Load "xtrap"
Load "type1"
Load "freetype"
EndSection
修改好,保存退出。
查看nvidia驅(qū)動(dòng)模塊是否加載了:
[root@NEWLFS drivers]#lsmod |grep nvidia
nvidia 3463164 0
[root@NEWLFS drivers]# 如果有類似上面輸出,則表示nvidia已經(jīng)成功加載
如果沒有任何輸出,表示沒有加載,需要自己手動(dòng)加載
使用modprobe加載:
[root@NEWLFS drivers]#modprobe nvidia [root@NEWLFS drivers]# 將nvidia驅(qū)動(dòng)加載,當(dāng)然在/usr/X11R6/lib/modules/driver/下
是存在nvidia_drv.o的。成功加載不會(huì)有輸出,如上所示。
加載后就可以輸入startx 啟動(dòng)X了。 如果看到NVIDIA的徽標(biāo)就表示安裝成功啦。 ^_^
如果不成功,X不能啟動(dòng),可以修改/etc/X11/XF86Config
將nvidia 改回默認(rèn)驅(qū)動(dòng),恢復(fù)原始狀態(tài) :( 5. 如果nvidia驅(qū)動(dòng)不能自動(dòng)加載,需要修改系統(tǒng)啟動(dòng)腳本,使其啟動(dòng)時(shí)加載
我在
Mandrake,LFS中安裝這個(gè)驅(qū)動(dòng)都是這樣,系統(tǒng)啟動(dòng)不會(huì)自動(dòng)加載。
每次都需要先運(yùn)行
modprobe nvidia才可以。
將這條命令寫入系統(tǒng)啟動(dòng)腳本中,就不用每次都輸入啦。
在Mandrake中,我寫到了
/etc/rc.d/rc.local 因?yàn)檫@是系統(tǒng)啟動(dòng)中最后執(zhí)行的腳本,做一些系統(tǒng)周邊工作,寫到這里也比較符合規(guī)范 :)
[root@NEWLFS rc.d]#echo "/sbin/modprobe nvidia" >>rc.local
我通過echo命令將 /sbin/modprobe nvidia 追加到了rc.local中。
使用文本編輯器直接寫在最后就可以啦。modprobe命令最好使用絕對路徑,使用which命令查看
[root@NEWLFS rc.d]#which modprobe
/sbin/modprobe
[root@NEWLFS rc.d]#
如果你的發(fā)行版沒有rc.local,也可以寫入/etc/rc.d/rc.sysinit中
系統(tǒng)初始化的第一個(gè)腳本?;蛘咂渌到y(tǒng)服務(wù)中,如network,syslog...
只要在X啟動(dòng)前就可以啦。
補(bǔ)充說明:
補(bǔ)充一:
在圖形界面下安裝NVIDIA驅(qū)動(dòng):
首先要說的是,這不是個(gè)好辦法,不是NVIDIA推薦的方式。
因?yàn)樵赬下安裝上的NVIDIA驅(qū)動(dòng)無法用nvidia-installer控制
所以想卸載nvidia驅(qū)動(dòng)時(shí),比較麻煩.
盡量在字符下安裝,如果實(shí)在對字符操作不熟悉,就在X下裝吧 :)
3. 運(yùn)行NVIDIA-Linux-x86-1.0-6629-pkg1.run 編譯nvidia驅(qū)動(dòng) :
進(jìn)入NVIDIA-Linux-x86-1.0-6629-pkg1.run所在的目錄
比如我放在了/root/software下
[root@NEWLFS ~]#cd /root/software/
/root ------------> /root/software
[root@NEWLFS software]#chmod u+x NVIDIA-Linux-x86-1.0-6629-pkg1.run
加上可執(zhí)行權(quán)限
[root@NEWLFS software]#./NVIDIA-Linux-x86-1.0-6629-pkg1.run --extract-only
Creating directory NVIDIA-Linux-x86-1.0-6629-pkg1
Verifying archive integrity... OK
Uncompressing NVIDIA Accelerated Graphics Driver for Linux-x86 1.0-6629..............................................
[root@NEWLFS software]#
這里加上了 --extract-only 表示將NVIDIA-Linux-x86-1.0-6629-pkg1.run解壓
然后就會(huì)在/root/software多出個(gè)NVIDIA-Linux-x86-1.0-6629-pkg1/目錄
[root@NEWLFS software]#cd NVIDIA-Linux-x86-1.0-6629-pkg1
/root/software ------------> /root/software/NVIDIA-Linux-x86-1.0-6629-pkg1
[root@NEWLFS NVIDIA-Linux-x86-1.0-6629-pkg1]#
進(jìn)入該目錄
[root@NEWLFS NVIDIA-Linux-x86-1.0-6629-pkg1]#ls
LICENSE Makefile nvidia-installer* pkg-history.txt usr/
[root@NEWLFS NVIDIA-Linux-x86-1.0-6629-pkg1]#
里面有上面幾個(gè)文件
然后開始手動(dòng)編譯,輸入make install :
[root@NEWLFS NVIDIA-Linux-x86-1.0-6629-pkg1]#make install
.............編譯過程略
Installing documentation in /usr/share/doc/NVIDIA_GLX-1.0
mkdir -p /usr/share/doc/NVIDIA_GLX-1.0/include
cp -r usr/include/* /usr/share/doc/NVIDIA_GLX-1.0/include
cp -r usr/share/doc/* /usr/share/doc/NVIDIA_GLX-1.0
/sbin/ldconfig
[root@NEWLFS NVIDIA-Linux-x86-1.0-6629-pkg1]#
如果最后輸出類似上面,則表示編譯成功了。 :)
可以通過echo $?這個(gè)命令判斷是否編譯成功:
[root@NEWLFS NVIDIA-Linux-x86-1.0-6629-pkg1]#echo $?
0
[root@NEWLFS NVIDIA-Linux-x86-1.0-6629-pkg1]#
echo $? 表示返回上條命令執(zhí)行情況,如果成功則返回0,否則返回非0
如果在make install 后 又運(yùn)行了其他命令,如ls 再echo $? 返回值
就是ls命令執(zhí)行狀態(tài)了。
編譯完成后,就可以按照上面寫的繼續(xù)啦 ^_^
補(bǔ)充二:
今天用手動(dòng)make install方式重新安裝NVIDIA驅(qū)動(dòng),經(jīng)過幾次的嘗試
終于知道它究竟都需要內(nèi)核源碼的什么東東 :)
2. 安裝內(nèi)核源碼包:
從/boot目錄下復(fù)制config-2.6.10到/usr/src/linux下
命名為.config
cd /usr/src/linux 進(jìn)入源碼目錄
[root@NEWLFS linux]#make scripts/
SPLIT include/linux/autoconf.h -> include/config/*
CC scripts/mod/empty.o
HOSTCC scripts/mod/mk_elfconfig
MKELF scripts/mod/elfconfig.h
HOSTCC scripts/mod/file2alias.o
HOSTCC scripts/mod/modpost.o
HOSTCC scripts/mod/sumversion.o
HOSTLD scripts/mod/modpost
HOSTCC scripts/kallsyms
HOSTCC scripts/pnmtologo
HOSTCC scripts/conmakehash
CHK include/linux/version.h
UPD include/linux/version.h
CC arch/i386/kernel/asm-offsets.s
CHK include/asm-i386/asm_offsets.h
UPD include/asm-i386/asm_offsets.h
[root@NEWLFS linux]#
這樣就可以建立好NVIDIA所需要的東東。
不用編譯整個(gè)內(nèi)核啦,省下許多編譯時(shí)間。 :)
可以檢查以下幾個(gè)文件是否存在,判斷是否需要編譯內(nèi)核:
/usr/src/linux/include/linux/version.h
/usr/src/linux/include/linux/autoconf.h
/usr/src/linux/scripts/mod/modpost
/usr/src/linux/include/asm -----> asm-i386/ (intel的CPU)
如果上面幾個(gè)文件都存在,那就不用編譯內(nèi)核啦,直接去安裝NVIDIA就可以了
Good Luck ^_^