Ubuntu 7.1內(nèi)核編譯詳解與無線網(wǎng)卡安裝
有很多原因編譯Ubuntu7.1內(nèi)核,不過最重要的原因就是硬件支持。
本文引用地址:http://butianyuan.cn/article/201609/304544.htmIBM ThinkPad T61筆記本的硬件比較新,雖然裝了一次就成功了,但是用起來還是不是很順。
比如:無線網(wǎng)卡不能配置固定IP,聲卡有點(diǎn)問題,顯卡裝起來費(fèi)勁。
無線網(wǎng)卡是有點(diǎn)受不了的,所以還是決定升級一把內(nèi)核,主要是打個(gè)補(bǔ)丁,用新一點(diǎn)的驅(qū)動。
事先做好準(zhǔn)備:
1.保存好lspci, lsmod的配置和內(nèi)核模塊,弄清楚所有的硬件用的是什么模塊。在Ubuntu下,基本上分三種模塊:內(nèi)核模塊、Ubuntu特殊模塊(新的無線網(wǎng)卡之類)和受限驅(qū)動。如果自己要編譯內(nèi)核,建議把受限驅(qū)動去掉,然后使用廠商推薦的方法。例如:nvidia就要去下載
Ubuntu特殊模塊是存在于包:linux-Ubuntu-modules-2.6.22-14-generic 中。如果自己 編譯內(nèi)核,也要替換這個(gè)(比如:無線網(wǎng)卡iwl4965)。
2.下載廠家推薦驅(qū)動,如果沒有就可以止步了(除非你自己能搞定驅(qū)動),最好是源碼的,或者是不依賴于內(nèi)核,或者是可以根據(jù)內(nèi)核變動而重新編譯的,反正要匹配內(nèi)核。
無線網(wǎng)卡intel 4965:
聲卡:
一般來說CPU、主板、內(nèi)存、硬盤都是內(nèi)核帶的(有些特殊硬盤是需要廠商提供驅(qū)動的),聲卡alsa都能搞定(也有少量支持不好的),顯卡就難說了(新顯卡一般都需要廠家提供,要按照廠家的安裝方法來安裝),有線網(wǎng)卡一般來說都能支持,但是無線網(wǎng)卡的支持程度還是不夠的,即使是最新的intel驅(qū)動也有不少問題,特別是速度不行。
還有一些特殊的硬件,指紋驅(qū)動:
快捷鍵和acpi電源支持,這個(gè)一般包括在內(nèi)核里,當(dāng)然也有可能不支持,那要看廠家是否支持或者是有開源支持。thinkpad_acpi已經(jīng)包括在內(nèi)核中了,只要不把它去掉就行。
HDAPS和電源附加支持:, 專門有開源項(xiàng)目支持,其中tp_smapi就是支持這個(gè)的。
modem,似乎沒有支持,估計(jì)要等了。不過一直都沒用過。
觸摸板和trackpoint小紅帽:都支持,當(dāng)鼠標(biāo)用,不過特殊功能沒有 了,需要的話要特別去安裝。還是去這里找:
3.下載源碼,確定好版本,具體操作參見:
如果是使用Ubuntu 7.1的內(nèi)核,就安裝linux-source包。版本應(yīng)該是2.6.22-14,裝好在/usr/src下有個(gè)壓縮包,就是源碼。
我選了kernel 2.6.23.12,這是最后的穩(wěn)定版,先用著(其實(shí)對快捷鍵的支持似乎不如2.6.22)。
安裝好所有編譯所需包(參見上面),下載了kernel源碼和無線網(wǎng)卡、顯卡、聲卡驅(qū)動后,開始折騰,漫長的......
正式開始編譯安裝:
1.實(shí)際上編譯只是花時(shí)間,事先的補(bǔ)丁要搞好。有些模塊是需要先補(bǔ)丁,再編譯內(nèi)核,有些是編譯好內(nèi)核后再安裝驅(qū)動,次序不要搞錯(cuò),要事先知道清楚。
nvidia是需要編譯安裝好內(nèi)核后再安裝驅(qū)動,就放到最后。聲卡,指紋,virtualbox也是一樣。
無線網(wǎng)卡最麻煩,要先打補(bǔ)丁,為了mac80211。
intel的驅(qū)動有三大部分,一個(gè)是mac80211,一個(gè)是iwlwifi驅(qū)動,其中包括4965,3945兩種,還有一個(gè)是firmware,拷貝就行了。
mac80211是要對內(nèi)核打補(bǔ)丁的,那是因?yàn)閮?nèi)核已經(jīng)包括了mac80211,而intel是要替換掉的。參見mac80211的INSTALL文檔,它的補(bǔ)丁是缺省打給/lib/modules/`uname -r`/source的,所以需要把源碼目錄給鏈接過去。源碼目錄其實(shí)可以放在任何目錄,一般放在/usr/src。
iwlwifi可以等內(nèi)核安裝好再安裝,因?yàn)樗枰褂么蜻^補(bǔ)丁的內(nèi)核,所以要安裝好新內(nèi)核再編譯安裝。
2.解壓和編譯內(nèi)核,除非特殊需要,一般都不用再打補(bǔ)丁,直接解壓后編譯。注意需要用root用戶:sudo -s -H。
解壓后的目錄一般是/usr/src/linux-2.6.23.12,進(jìn)入這個(gè)目錄,然后把當(dāng)前系統(tǒng)的內(nèi)核配置拷貝過來:
Java代碼
cp /boot/config-2.nfig
cp /boot/config-2.nfig
這應(yīng)該是Ubuntu 7.1的內(nèi)核配置文件,如果是其他系統(tǒng)可能有不同。
在源碼目錄下打開配置菜單:make menuconfig
選擇load載nfig,然后進(jìn)行詳細(xì)配置。一般來說當(dāng)前系統(tǒng)運(yùn)行正常則不需要特別配置,如果有驅(qū)動要求有特殊配置的,一定要仔細(xì)檢查一下,按照驅(qū)動安裝文檔進(jìn)行。比如:mac80211需要打開無線支持。
退出的時(shí)候選擇保存。
編譯:
Java代碼
make-kpkg clean
fakeroot make-kpkg --initrd --append-to-version=-custom kernel_image kernel_headers
make-kpkg clean
fakeroot make-kpkg --initrd --append-to-version=-custom kernel_image kernel_headers
其中那個(gè) -custom 是跟在版本號后面的字符串,可以任意,我就加了一個(gè) -t61,主要是為了區(qū)別其他內(nèi)核,別重名了。
在做這事之前,一定要想好有什么可以打發(fā)的閑事,如果機(jī)器沒有很好,那么編譯的時(shí)候幾乎cpu占滿了(當(dāng)然我還是照常用,T61還是很強(qiáng)的)。
如果一切正常就會編譯完成,如果出了錯(cuò),那么要檢查是否已經(jīng)安裝了所有的編譯所需,補(bǔ)丁有沒有打錯(cuò),或者是把錯(cuò)誤信息發(fā)到別的地方詢問。
3.安裝內(nèi)核。
這步太簡單了,編譯好后會生成兩個(gè) deb包,在上一層目錄里。
安裝,幾乎在編譯內(nèi)核里都要用root權(quán)限
Java代碼
dpkg -i linux-image-2.6.23.12-t61_2.6.23.12-t61-10.00.Custom_i386.deb
dpkg -i linux-image-2.6.23.12-t61_2.6.23.12-t61-10.00.Custom_i386.deb
一陣狂閃后,全部都會自動裝好,包括grub會多一個(gè)菜單項(xiàng),就是新裝的內(nèi)核,原來的內(nèi)核還在,不用擔(dān)心。不過grub要注意,最好是去掉vga=xxx這一項(xiàng),這樣控制臺就會正常識別。
4.重起應(yīng)用新的內(nèi)核。
一般來說缺省那項(xiàng)grub菜單就是新內(nèi)核,如果正常進(jìn)入后就要安裝硬件驅(qū)動了。如果X不能進(jìn),則把nf里改為vesa驅(qū)動,百試百靈。
5.安裝硬件驅(qū)動。
無線網(wǎng)卡最復(fù)雜。先是安裝iwlwifi,按照INSTALL文檔,make , make install一般就行了。
如果有問題,要檢查幾個(gè)地方:
/lib/modules/`uname -r`/build和source目錄是否指向源碼目錄了,并且是打了mac80211補(bǔ)丁的源碼目錄。
mac80211模塊是否在/lib/modules/`uname -r`/kernel/net目錄下。
評論