Ubuntu 7.1內(nèi)核編譯詳解與無線網(wǎng)卡安裝
有很多原因編譯Ubuntu7.1內(nèi)核,不過最重要的原因就是硬件支持。
IBM ThinkPad T61筆記本的硬件比較新,雖然裝了一次就成功了,但是用起來還是不是很順。
比如:無線網(wǎng)卡不能配置固定IP,聲卡有點問題,顯卡裝起來費勁。
無線網(wǎng)卡是有點受不了的,所以還是決定升級一把內(nèi)核,主要是打個補丁,用新一點的驅(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)核,也要替換這個(比如:無線網(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電源支持,這個一般包括在內(nèi)核里,當(dāng)然也有可能不支持,那要看廠家是否支持或者是有開源支持。thinkpad_acpi已經(jīng)包括在內(nèi)核中了,只要不把它去掉就行。
HDAPS和電源附加支持:, 專門有開源項目支持,其中tp_smapi就是支持這個的。
modem,似乎沒有支持,估計要等了。不過一直都沒用過。
觸摸板和trackpoint小紅帽:都支持,當(dāng)鼠標(biāo)用,不過特殊功能沒有 了,需要的話要特別去安裝。還是去這里找:
3.下載源碼,確定好版本,具體操作參見:
如果是使用Ubuntu 7.1的內(nèi)核,就安裝linux-source包。版本應(yīng)該是2.6.22-14,裝好在/usr/src下有個壓縮包,就是源碼。
我選了kernel 2.6.23.12,這是最后的穩(wěn)定版,先用著(其實對快捷鍵的支持似乎不如2.6.22)。
安裝好所有編譯所需包(參見上面),下載了kernel源碼和無線網(wǎng)卡、顯卡、聲卡驅(qū)動后,開始折騰,漫長的......
正式開始編譯安裝:
1.實際上編譯只是花時間,事先的補丁要搞好。有些模塊是需要先補丁,再編譯內(nèi)核,有些是編譯好內(nèi)核后再安裝驅(qū)動,次序不要搞錯,要事先知道清楚。
nvidia是需要編譯安裝好內(nèi)核后再安裝驅(qū)動,就放到最后。聲卡,指紋,virtualbox也是一樣。
無線網(wǎng)卡最麻煩,要先打補丁,為了mac80211。
intel的驅(qū)動有三大部分,一個是mac80211,一個是iwlwifi驅(qū)動,其中包括4965,3945兩種,還有一個是firmware,拷貝就行了。
mac80211是要對內(nèi)核打補丁的,那是因為內(nèi)核已經(jīng)包括了mac80211,而intel是要替換掉的。參見mac80211的INSTALL文檔,它的補丁是缺省打給/lib/modules/`uname -r`/source的,所以需要把源碼目錄給鏈接過去。源碼目錄其實可以放在任何目錄,一般放在/usr/src。
iwlwifi可以等內(nèi)核安裝好再安裝,因為它需要使用打過補丁的內(nèi)核,所以要安裝好新內(nèi)核再編譯安裝。
2.解壓和編譯內(nèi)核,除非特殊需要,一般都不用再打補丁,直接解壓后編譯。注意需要用root用戶:sudo -s -H。
解壓后的目錄一般是/usr/src/linux-2.6.23.12,進入這個目錄,然后把當(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,然后進行詳細(xì)配置。一般來說當(dāng)前系統(tǒng)運行正常則不需要特別配置,如果有驅(qū)動要求有特殊配置的,一定要仔細(xì)檢查一下,按照驅(qū)動安裝文檔進行。比如:mac80211需要打開無線支持。
退出的時候選擇保存。
編譯:
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
其中那個 -custom 是跟在版本號后面的字符串,可以任意,我就加了一個 -t61,主要是為了區(qū)別其他內(nèi)核,別重名了。
在做這事之前,一定要想好有什么可以打發(fā)的閑事,如果機器沒有很好,那么編譯的時候幾乎cpu占滿了(當(dāng)然我還是照常用,T61還是很強的)。
如果一切正常就會編譯完成,如果出了錯,那么要檢查是否已經(jīng)安裝了所有的編譯所需,補丁有沒有打錯,或者是把錯誤信息發(fā)到別的地方詢問。
3.安裝內(nèi)核。
這步太簡單了,編譯好后會生成兩個 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會多一個菜單項,就是新裝的內(nèi)核,原來的內(nèi)核還在,不用擔(dān)心。不過grub要注意,最好是去掉vga=xxx這一項,這樣控制臺就會正常識別。
4.重起應(yīng)用新的內(nèi)核。
一般來說缺省那項grub菜單就是新內(nèi)核,如果正常進入后就要安裝硬件驅(qū)動了。如果X不能進,則把nf里改為vesa驅(qū)動,百試百靈。
5.安裝硬件驅(qū)動。
無線網(wǎng)卡最復(fù)雜。先是安裝iwlwifi,按照INSTALL文檔,make , make install一般就行了。
如果有問題,要檢查幾個地方:
/lib/modules/`uname -r`/build和source目錄是否指向源碼目錄了,并且是打了mac80211補丁的源碼目錄。
mac80211模塊是否在/lib/modules/`uname -r`/kernel/net目錄下。[!--empirenews.page--]
裝好后,檢查一下/lib/modules/`uname -r`/kernel/drivers/net/wireless/目錄,是否有 iwl3945.ko和iwl4965.ko,這兩個是真正的驅(qū)動。
還要把firmware拷貝過去。
手動安裝內(nèi)核是沒有firmware,所以要先創(chuàng)建
進入目錄 /lib/firmware
Java代碼
cp -R 2.6.22-14-generic/ 2.6.23.12-t61/
cp -R 2.6.22-14-generic/ 2.6.23.12-t61/
相當(dāng)于把原來缺省的firmware都拷貝過來。不過重點是 iwlwifi*
從無線網(wǎng)卡驅(qū)動網(wǎng)站上下載的firmware解開,把iwlwifi*.ucode拷貝過來覆蓋掉。
這樣mac80211-10.0.3 ,iwlwifi-1.2.23 , iwl4965-ucode-4.44.1.20 就安裝好了,版本號要對齊,否則極容易錯。
這里給一個高人的好辦法,但是我怎么也沒試成功過,不知道這個牛人怎么裝上的。(要用代理看)
弄好了無線,要搞聲卡,這個太方便了,只要下載drivers, utils, lib, oss,然后分別make make install(注意lib要比utils先裝),基本上都可以了。但是還要識別一下聲卡和驅(qū)動。裝好程序后,在drivers源碼目錄下./snddevices來創(chuàng)建聲卡設(shè)備,然后使用alsaconf來自動識別。如果識別了,那就搞定了,如果不行,那就放棄alsa吧,或者是有特殊的驅(qū)動再安裝。
顯卡也方便,退回控制臺(sudo /etc/init.d/gdm stop),然后轉(zhuǎn)到ctrl+alt+F1,登錄后安裝nvidia。
Java代碼
sudo sh ./NVIDIA-Linux-x86-169.07-pkg1.run
sudo sh ./NVIDIA-Linux-x86-169.07-pkg1.run
照著提示就行了,也要編譯一下,需要內(nèi)核header,當(dāng)然源碼也可以,只要保證 /lib/modules/`uname -r`/build指向正確就行了。
ati安裝也用廠商的,不要用Ubuntu缺省的驅(qū)動,因為內(nèi)核動過,有可能出問題。
當(dāng)然如果是vesa就沒關(guān)系了。其實感覺還是vesa好,nvidia這個驅(qū)動感覺挺慢的,不知道為什么。
如果重啟后沒事,那么恭喜你了,一場大戰(zhàn)結(jié)束了,雖然是慘勝,不過也是勝。
如果裝了virtual box,別忘了重新編譯
Java代碼
sudo /etc/init.d/vboxdrv setup
sudo /etc/init.d/vboxdrv setup
檢驗戰(zhàn)果:
無線網(wǎng)卡還算是穩(wěn)定了,可以設(shè)固定IP了,而且似乎速度快了一點,但是比windows還慢,這個實在是不能原諒,不過只能等了。
顯卡驅(qū)動還是那樣,要靠nvidia再努力了。
聲卡的靜音快捷鍵沒有OSD了,不過還能靜音,只是不能取消靜音了,只能用mixer來調(diào)了。不過我的聲卡長年靜音,都快忘了。
空格鍵上放大的快捷鍵失效了,實在是大喜事啊,多么恨這個鍵啊。鍵盤燈是bios控制的,沒問題。調(diào)LCD亮度只要裝了新的nivida驅(qū)動就能用。
休眠和待機是不用的,不是不想,而是問題多多,基本處于windows 98水平,次得很。
切換外置顯示器還沒試過,據(jù)說要配另一個screen的,不過老的sony上試過,很容易,這個要看驅(qū)動保佑了。
總結(jié):
要娛樂還是去xp,連vista都兼容性不好,linux工作是一流的,要在windows這種細(xì)調(diào)的可能性都沒有,不過實在是繁瑣了一點,沖著這超強的硬盤緩存,值了。