第一部分,准備
要使用新的內核首先當然要取得新內核的源碼,內核的官方網站是http://www.kernel.org 在上面可以得到最新的內核。2.6的更新是相當快的,你可以在命令行下使用finger @kernel.org命令來快速得到當前最新的內核列表。在這篇文章中我將以2.6.0為准。
下載了內核源碼之後,我們要使用tar jxvf Linux-2.6.0.tar.bz2來提取源碼,如果你下載的是以tgz結尾的壓縮包就使用zxvf參數來解壓。我強烈建議你不要使用 /usr/src/linux這個目錄來存放源碼,因為使用這個目錄你需要手工在/usr/include目錄下作一些符號鏈接,這實在不是一個好主意。所以我建議你為源碼單獨建一個目錄,這裡我們的目錄是/src/linux-2.6.0。
要編譯與正常運行新的內核你需要升級一些軟件包,這些信息在源碼目錄下的Documentation/Changes文件中,請根據你的實際情況選擇升級。這其中我強調一下你應該升級Module-Init-Tools,不要被你當前系統中depmod -V輸出的版本號迷惑(在RH9中它的輸出是2.4.22,感覺好象要比Changes中所要求的要高,實際上它們使用不同的版本規則)。新的 Module-Init-Tools在下面的網址中取得:http: //www.kernel.org/pub/linux/kernel/people/rusty/modules/
我使用的是0.9.14。如果你下載的是源碼使用如下步驟進行編譯
./configure --prefix=/
make moveold
#這一步會將你以前的insmod, modprobe, rmmod和 lsmod
#重命名為insmod.old, modprobe.old, rmmod.old lsmod.old
make
make install
然後使用 ./generate-modprobe.conf /etc/modprobe.conf (將原來的/etc/modules.conf轉換到/etc/modprobe.conf )
如果你使用devfs系統你還需要復制modprobe.devfs 到/etc目錄下。
當你升級完相關軟件包之後,准備工作就算完成了,下面我們將進入到編譯階段。
第二部分 編譯
2.6的build系統與2.4有很大的不同,實際上是更加簡單與方便了。第一步我們要進入源碼目錄
cd /src/linux-2.6.0
make mrproper
make menUConfig (基於文本選單的配置界面)
在閃過幾行字之後就出現了如圖的界面
在界面的上部是配置工作的使用說明,使用箭頭鍵在各選項間移動,使用enter進入下一層菜單,每個選項上的高亮字母是鍵盤快捷方式,使用它可以快速的到達你想設置的菜單項上。在括號中按y將這個項目編譯進內核中,按M編譯為模塊,按N為不選擇。按?將打印這個選項的幫助信息,按esc將返回到上層菜單。 GUI工具的基本概念也與之類似我們就不詳細討論了。在後面我將主要使用menuconfig來設置各個選項,選項的次序以它為准,其它工具中各選項也基本與之對應。切記把聲卡的模塊編譯進內核不然無法發聲!!
編譯和安裝內核
#make
#make install
編譯和安裝模塊
#make modules(編譯選擇的模塊)
#make modules_install(將編譯後的模塊轉移到系統標准位置)
完成後reboot就會發現啟動選項就會多出一個2.6內核的選項。
介紹一下新內核中的圖形界面配置工具
新內核中有兩個GUI配置工具,過去的make xconfig現在是一個使用QT庫作為界面方案的配置工具了,所以你要使用它必需先安裝QT庫。一般的發行版光盤中都包含了這個軟件包。
另一個是make gconfig這是一個使用GTK庫作為界面方案的工具,同樣你要使用它就要先安裝GTK庫。這兩個工具與原來的GUI工具在界面上有很大的變化,更加符合一般圖形界面程序的使用習慣。
而傳統的控制台配置工具menuconfig則沒什麼太大的變化基本上保持了原來的樣子,不喜歡花裡糊哨的GUI工具的兄弟還是用這個吧:)
在2.6中還添加了幾個以調試為目的的make選項,它們是allyesconfig、allnoconfig、allmodconfig分別表示將所有選項加載為y、將所有選項加載為n、將所有選項加載為m。它們是為內核開發人員與測試人員准備的,與我們的關系不大。
make menuconfig (部分)選項說明
第一項 Code maturity level options (代碼成熟度選項)
按enter進入後選項如下
[*] Prompt for development and/or incomplete code/drivers
默認情況下是選擇的,這將會在設置界面中顯示還在開發或者還沒有完成的代碼與驅動.你應該選擇它,因為有許多設備可能必需選擇這個選項才能進行配置,實際上它是安全的。
[*] Select only drivers eXPected to compile cleanly
選擇這個選項你將不會看到一些已知的存在問題的驅動程序選項,默認的情況下也是選擇的。如果你有設備沒有找到驅動選項,你可以將這一項去掉,或許就可以找到相關驅動了,不過它可能是有BUG的。
[*] Select only drivers that don't need compile-time external firmware
如果你不需要在內核對一些外部設備的固件作map支持就選擇它,這也是默認選項。
第二項 General setup
其中的選項如下
[*] Support for paging of anonymous memory
這個選項將使你的內核支持虛擬內存,也就是讓你的計算機好象擁有比實際內存更多 多的內存空間用來執行很大的程序。默認是選擇的。
[*] System V IPC
為進程提供通信機制,這將使系統中各進程間有交換信息與保持同步的能力。有些程序只有在選Y的情況下才能運行,所以不用考慮,這裡一定要選。
[ ] BSD Process Accounting
這裡選擇Y將會讓內核為用戶層的進程建立一個帳目(進程通過一個特殊的系統調用來通知內核),當程序退出時內核會將進程的相關信息記錄到帳目文件中,主要包括進程的創建時間、 創建者,內存占用等信息。如果你需要就Y吧:)
[*] Sysctl support
這將提供一個接口讓你可以動態的更改一些核心參數與變量,而不需要重新啟動系統。打開這個選項將會增加內核的體積至少8KB。如果你的內核僅用制作安裝與恢復系統系統盤那麼可以不選,以減少對內存的占用。
[ ] Kernel .config support
這將會把內核的配置信息與相關的文檔說明編譯進內核中,以後可以使用一些工具來提取它用來重新構建內核,一般不用選它。
[ ] Remove kernel features (for embedded systems) --->
這個選項將會把一些特性從內核中移除,以減少內核體積。對於桌面用戶來講,這可不是一個好主意,所以不要選它。至於其中的內容我會在以後的補遺中介紹。
第三項 Loadable module support (可加載模塊選項)
其選項如下:
[*] Enable loadable module support
這個選項可以讓你的內核支持模塊,模塊是什麼呢?模塊是一小段代碼,編譯後可在系統內核運行時動態的加入內核,從而為內核增加一些特性或是對某種硬件進行支持。一般一些不常用到的驅動或特性可以編譯為模塊以減少內核的體積。在運行時可以使用modprobe命令來加載它到內核中去(在不需要時還可以移除它)。
一些特性是否編譯為模塊的原則是,不常使用的,特別是在系統啟動時不需要的驅動可以將其編譯為模塊,如果是一些在系統啟動時就要用到的驅動比如說文件系統,系統總線的支持就不要編為模塊了,否在無法啟動系統。(當然還有一些變通的方法,我以後會提到)
[ ] Module unloading
這個選項可以讓你卸載不再使用的模塊,如果不選的話你將不能卸載任何模塊(有些模塊一旦加載就不能卸載,不管是否選擇了這個選項)。不選擇這個選項會讓你的內核體積減小一點
[ ] Module versioning support (EXPERIMENTAL)
這個選項將讓你可以使用其它版本內核中編譯的模塊,不過並不可靠,所以一般我們不選擇它
[*] Automatic kernel module loading
一般情況下,如果我們的內核在某些任務中要使用一些被編譯為模塊的驅動或特性時,我們要先使用modprobe命令來加載它,內核才能使用。不過,如果你選擇了這個選項,在內核需要一些模塊時它可以自動調用modprobe命令來加載需要的模塊,這是個很棒的特性,當然要選Y喽:)
第四項 Processor type and features
Subarchitecture Type (PC-compatible)
這是一個比較新的特性,主要的目的是使Linux可以支持多種PC標准,一般我們使用的PC機是遵循所謂IBM兼容結構(pc/at)。這個選項可以讓你選擇一些其它架構。我們一般選擇PC-compatible就可以了。
Processor family (Pentium-4/Celeron(P4-based)/Xeon)
這個不用我講了吧,你是什麼CPU就選什麼吧:)
[ ] Generic x86 support
這個選項提供了對X86系列CPU最大的兼容性,用來支持一些很少見的x86體系的CPU,它可能會降低一些系統性能。所以如果你的CPU能夠在上面的列表中找到就不要選這個吧。
[ ] HPET Timer Support
這也是一個新的特性,HPET是intel制定的新的用以代替傳統的8254(PIT)中斷定時器與RTC的定時器,全稱叫作高精度事件定時器。如果你有一台較新的機器就選它吧,一般它是一個安全的選項,即使你的硬件不支持HPET也不會造成問題,因為它會自動用8254替換。
[*] Symmetric multi-processing support
這個也不用多講了吧,如果你使用多處理器系統就選吧,如果你和我一樣使用一個單CPU系統還是把它請出去吧。
( Maximum number of CPUs (2-255)
這裡用來配置讓Linux最多支持幾路CPU,根據你的需要選擇。
[*] Preemptible Kernel
這可是個新特性,幾乎所有介紹2.6的文章都會提到,這就是可搶先式內核。也就是說被一些優先級很高的程序可以先與一些低優先級的程序執行,即使這些程序是在核心態下執行(這實際上仍然不是真正的搶先式內核)。從而減少內核潛伏期,提高系統的響應。當然在一些特殊的點的內核是不可搶先的,比如內核中的調度程序自身在執行時就是不可被搶先的。這個特性可以提高桌面系統、實時系統的性能,所以還是選上吧。
[*] Machine Check Exception
如果你的系統出現一些問題比如CPU過熱,內核將會在屏幕上打印相關信息來提醒你。這個功能是需要硬件支持的。你可以查看/proc/cpuinfo 看看是否有mce標志,有的話就選吧。如果你十分十分的不幸,選了它之後出現問題,可以在啟動時加nomce參數來關閉它。
[*] Check for non-fatal errors on AMD Athlon/Duron / Intel Pentium 4
打開這個選項將會檢查你機器上可能存在的問題,如果有一個非致命錯誤出現將會自動的修復並且記錄,這可以幫助你查出程序出現問題的原因,是一個不錯的選項,當然它只能用在AMD Athlon/Duron / Intel Pentium 4這類CPU上。如果你正好在用它們中的一個你就選吧。
[*] check for P4 thermal throttling interrupt.
如果打開這個選項,在P4的CPU溫度過高(也就是P4的溫控裝置起作用)時會在屏幕上顯示出相關的信息,根據你的情況選擇吧。
< > Toshiba Laptop support
這個選項是針對Toshiba筆記本的,可以用來訪問Toshiba的系統管理模式,也就是可以直接設置BIOS。不過要注意它只在Toshiba自己的 BIOS中起作用。假如你有一台Toshiba筆記本,可惜它的BIOS是Phoenix的,那這個選項仍然是梁山軍師----無用:)
< > Dell laptop support
這個同上面的選項基本相同,自己看著辦吧:)
< > /dev/cpu/microcode - Intel IA32 CPU microcode support
這個選項將讓你可以更新Intel IA32系列處理器的微代碼,當然你還必須在文件系統選項中選擇devfs才能正常的使用它。如果你把它譯為模塊你還需要在modprobe.conf中加上這一行alias char-major-10-184 microcode
內核本身並不帶有微代碼的二進制文件,你可以到這個網址去得到新的信息
< > /dev/cpu/*/msr - Model-specific register support
這個選項桌面用戶一般用不到,它主要用在Intel的嵌入式CPU中的,這個寄存器的作用也依賴與不同的CPU類型而有所不同,一般可以用來改變一些CPU原有物理結構的用途,但不同的CPU用途差別也很大。
< > /dev/cpu/*/cpuid - CPU information support
這會在/dev/cpu中建立一系列的設備文件,用以讓過程去訪問指定的CPU。一般不用選。
< > BIOS Enhanced Disk Drive calls determine boot disk (EXPERIMENTAL)
這將可以打開實模式下BIOS中的增強磁盤設備服務,以決定從哪個磁盤上啟動。這一般是安全的,不過大多數BIOS提供商都沒有實現這個特性。
High Memory Support (off)
如果你有大容量的內存(超過4G)你要選它,以使內核可以使用這部分內存。偶是沒這命啦這部分永遠為OFF,如果你有你就ON吧。
[ ] Math emulation
在你的CPU上如果沒有數學協處理器的話,打開這個選項可以讓內核模擬一個,以提升浮點計算能力,不過慢的可以。如果你使用的不是古董CPU的話(486SX以前的)這一項你永遠都不需要。
[*] MTRR (Memory Type Range Register)support
在Intel p6家族的處理器中(Ppro、 PII和更新的)有一個內存類型范圍寄存器,可用來控制處理器訪問的內存范圍。打開它一般可以提升顯卡的顯示性能,所以我們當然要在這說Y喽:)
第五項 Power management options (ACPI, APM)(高級電源管理)
[*] Power Management support
如果你想讓你的Linux支持高級電源管理(也就是平常我們說的軟關機、系統休眠等)需要選擇它。
[ ] Software Suspend (EXPERIMENTAL)
選擇這個選項你可以掛起你的計算機(有點象XP中的休眠),打開這項功能後,你可以使用swsusp或者shutdown -z 來掛起你的計算機。這樣系統會將你當前正在進行的工作(也就是當前內存中的內容)作成一個鏡象保存到你的交換分區中,在你下一次啟動時使用啟動參數 “resume=/dev/你的交換分區”,內核就會將上一次的工作內核從鏡象文件中恢復到內存,這可以大大提高系統的啟動速度。當你不想恢復上次的工作時向內核傳遞參數“noresume"。不過系統啟動後你的交換分區將不可以使用,你可以使用mkswap命令來重新格式化你的交換分區。這個功能不需要高級電源管理的支持。很不錯的功能,我一直有用,大家也來試試吧:)
[ ] Suspend-to-Disk Support
這個選項與上面的功能基本相同,不過更靈活一些,可以通過下面的子選項來指定一個專用的交換分區來保存內存鏡象。
() Default resume partition
與上面的選項配合,來指定保存鏡象的分區。
ACPI (Advanced Configuration and Power Interface) Support --->
從這裡進入ACPI電源管理的配置界面,要注意ACPI與APM不能同時使用,如果你同時配置了這兩者,那麼在系統啟動時如果發現一個可工作的ACPI設備那麼APM將被關閉,ACPI會被加載:
[*] ACPI Support
這個選項應該不用我多說了,要想讓你的系統使用ACPI來管理你的電源就要選上它,另外要想讓它起作用,你還要在系統中安裝acpid守護程序。
[*] Sleep States (EXPERIMENTAL)
選擇這個選項可以使你的系統具有掛起的功能,也就是說你可以暫時中斷你的工作,讓你的系統處與一種低電能消耗的狀態(sleep state),你此時的系統狀態會保存在內存或者磁盤上(取決於掛起的深度),當你需要時再恢復到正常的工作狀態。但由於各種系統之間的差別,目前這項功能並不完善。只有很少的設備可以完美的支持這個特性,所以不建議一般用戶使用它。
< > AC Adapter
這是用來支持移動系統中的交流適配器的,以指示當前系統是不是在使用交流電,對於台式機不需要這個選項。
< > Battery
這個選項用於通過/proc/acpi/battery來向用戶提供移動系統中的電池狀態信息。同上面那個選項一樣對台式機沒有作用。
<*> Button
這個選項用於注冊基於電源按鈕的事件,比如power, sleep等,當你按下按鈕時事件將發生,一個守護程序將讀取/proc/acpi/event,並執行用戶在這些事件上定義的動作比如讓系統關機。
<*> Fan
這個選項提供對系統風扇的控制支持,可以通過用戶層的程序來對系統風扇進行控制(比如打開,關閉,讀取當前風扇的運行狀態等,不過只有極少數的硬件支持它)。
<*> Processor
打開這個選項將讓你的系統具有處理IDIE狀態的能力,也就是說可以讓你的處理器在空閒時節省電能。個人認為這個選項是一定要選的。
<*> Thermal Zone
當你的系統溫度過高時,ACPI可以利用這個選項來控制你的系統,及時調整系統的工作狀態以保護你的CPU,非常棒的一個特性一定要選呀,要不然也就不用使用ACPI了。(當然這需要硬件的支持)
< > ASUS/Medion Laptop Extras
這主要是為ASUS生產的筆記本電腦准備的,以提供對這些系統上那些額外的按鈕們的支持,用戶可以通過它們來打開或者關閉LCD的背光,調整亮度、定制LED的閃爍指示等功能。用戶可以通過/proc/acpi/asus來改變這些設置。
< > Toshiba Laptop Extras
這個選項是對Toshiba筆記本提供特別支持的,它的作用同上面的選項基本相同,如果你有一台這樣的本本的話就選它吧。
[ ] Debug Statements
如果選擇它當ACPI出現錯誤時會打印出詳細的信息,這將會增加內核的體積大約50k,如果沒有必要還是不要選它吧。
[ ] Relaxed AML
選擇它的話ACPI翻譯器將會放松對AML的錯誤檢查,一些筆記本電腦可能需要它才能正常的使用ACPI(一些糟糕的桌面機可能也需要它,如果你的系統使用ACPI時出現問題不妨選上它試試)
PM (Advanced Power Management) BIOS Support --->
CPU Frequency scaling --->
<*> Fan
這個選項提供對系統風扇的控制支持,可以通過用戶層的程序來對系統風扇進行控制(比如打開,關閉,讀取當前風扇的運行狀態等,不過只有極少數的硬件支持它)。
<*> Processor
打開這個選項將讓你的系統具有處理IDIE狀態的能力,也就是說可以讓你的處理器在空閒時節省電能。個人認為這個選項是一定要選的。
<*> Thermal Zone
當你的系統溫度過高時,ACPI可以利用這個選項來控制你的系統,及時調整系統的工作狀態以保護你的CPU,非常棒的一個特性一定要選呀,要不然也就不用使用ACPI了。(當然這需要硬件的支持)
< > ASUS/Medion Laptop Extras
這主要是為ASUS生產的筆記本電腦准備的,以提供對這些系統上那些額外的按鈕們的支持,用戶可以通過它們來打開或者關閉LCD的背光,調整亮度、定制LED的閃爍指示等功能。用戶可以通過/proc/acpi/asus來改變這些設置。
< > Toshiba Laptop Extras
這個選項是對Toshiba筆記本提供特別支持的,它的作用同上面的選項基本相同,如果你有一台這樣的本本的話就選它吧。
[ ] Debug Statements
如果選擇它當ACPI出現錯誤時會打印出詳細的信息,這將會增加內核的體積大約50k,如果沒有必要還是不要選它吧。
[ ] Relaxed AML
選擇它的話ACPI翻譯器將會放松對AML的錯誤檢查,一些筆記本電腦可能需要它才能正常的使用ACPI(一些糟糕的桌面機可能也需要它,如果你的系統使用ACPI時出現問題不妨選上它試試)
PM (Advanced Power Management) BIOS Support --->
CPU Frequency scaling --->
< > Toshiba Laptop Extras
這個選項是對Toshiba筆記本提供特別支持的,它的作用同上面的選項基本相同,如果你有一台這樣的本本的話就選它吧。
[ ] Debug Statements
如果選擇它當ACPI出現錯誤時會打印出詳細的信息,這將會增加內核的體積大約50k,如果沒有必要還是不要選它吧。
[ ] Relaxed AML
選擇它的話ACPI翻譯器將會放松對AML的錯誤檢查,一些筆記本電腦可能需要它才能正常的使用ACPI(一些糟糕的桌面機可能也需要它,如果你的系統使用ACPI時出現問題不妨選上它試試)
PM (Advanced Power Management) BIOS Support --->
CPU Frequency scaling --->