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