如果你不愿意冒險(xiǎn),可以跳過(guò)這個(gè)部分。不過(guò)根據(jù)我實(shí)際使用的經(jīng)驗(yàn),2.4.x版本的內(nèi)核性能比2.2.x的性能至少提高40%,還是很值得一試的,F(xiàn)在最新的發(fā)行包幾乎都帶有新的2.4內(nèi)核,但是版本號(hào)想對(duì)保守。這里,我的建議是在決定升級(jí)任何部分的時(shí)候,一定要首先看一下所謂的“currect version release note”信息,里面告訴你本次版本升級(jí)都有些什么改動(dòng)。如果改動(dòng)的內(nèi)容不涉及你當(dāng)前的環(huán)境或需求,只是增加了一些邪門(mén)設(shè)備的驅(qū)動(dòng),你大可不必急著升級(jí)。補(bǔ)充一句話:Linux的內(nèi)核版本號(hào)的中間一位是奇數(shù)的是非穩(wěn)定版本,比如2.3,是偶數(shù)的才是穩(wěn)定版本。
升級(jí)內(nèi)核的步驟如下:
(1)首先在網(wǎng)上找到你打算升級(jí)的內(nèi)核文件,一般名字是:linux-2.x.xx.tar.gz,把這個(gè)文件復(fù)制到/usr/src。(不知道在哪里找?看看://www.kernel.org ,最好找到.tar.gz格式的,比如這里://www.kernel.org/pub/linux/kernel/v2.x/)。下面的升級(jí)舉例是從2.2.18升級(jí)到2.5.7(這是最新的內(nèi)核了,你使用其它的版本別忘了改變版本號(hào))
(2)解壓縮:tar zxvf linux-2.5.7.tar.gz后生成一個(gè)目錄:linux-2.5.7。
(3)進(jìn)入/usr/src,用ls –l 命令可以看到src里面有一個(gè)連接,類似于:linux -> linux-2.2.18/ (連接指向你當(dāng)前用的內(nèi)核版本)。首先刪除這個(gè)連接(rm linux),用ln -s linux-2.5.7 linux 命令重建連接。我想你一定不會(huì)連這里的版本號(hào)都照抄吧?
(4)進(jìn)入linux-2.5.7 目錄,如果不是第一次編譯這個(gè)內(nèi)核,最好用命令:make mrproper 刪掉上次編譯產(chǎn)生的.o文件等,當(dāng)然以前保存的配置也丟了。
(5)用命令:make menuconfig命令調(diào)整內(nèi)核配置以適應(yīng)你目前的環(huán)境,記住,不懂的配置不要亂動(dòng)。首要任務(wù)是調(diào)整各種硬件的環(huán)境,比如SCSI卡:SCSI support/SCSI low-level drivers,不知道現(xiàn)在的SCSI卡型號(hào)?在/proc/scsi中可以找到。還有網(wǎng)卡,在Network Device Support 里面。不知道現(xiàn)在的網(wǎng)卡型號(hào)?在這個(gè)文件里面寫(xiě)著呢:/proc/net/PRO_LAN_Adapters/eth0.info或/proc/pci文件中也可以找到 。在menuconfig中用空格鍵改變選項(xiàng)狀態(tài),前面的<*>表示該功能編譯在內(nèi)核中,主要是運(yùn)行速度快。< >表示不需要該功能。表示把該功能編譯成模塊,通常為了減小尺寸,和更換方便而把某些驅(qū)動(dòng)編譯成模塊。
(6)下面的事情比較程序化,照著做:make dep (檢查文件的完整性,過(guò)程很復(fù)雜)
(7)make bzImage 注意大小寫(xiě)(真正開(kāi)始編譯了耶!我覺(jué)著這個(gè)最過(guò)癮了,屏幕“嘩啦嘩啦”的,這時(shí)候你會(huì)感覺(jué)到,多少不知名的程序員在這個(gè)復(fù)雜的系統(tǒng)中貢獻(xiàn)了自己的一份力量)
(8)make modules (編譯那些被標(biāo)記為的功能模塊或驅(qū)動(dòng)程序)
(9)make modules_install(把編譯好的模塊復(fù)制到指定地點(diǎn),一般是:/lib/modules/ 。注意:不同版本號(hào)的模塊是完全分開(kāi)在不同目錄中的,因?yàn)閙odules跟內(nèi)核是緊密相關(guān)的,混用容易導(dǎo)致系統(tǒng)崩潰)
(10)cd /usr/src/linux-2.5.7/arch/i386/boot ,用命令:cp /usr/src/linux2.5.7/arch/i386/boot/bzImage /boot/vmlinuz-2.5.7 把文件bzImage文件改名成vmlinuz-2.5.7復(fù)制到/boot/
(11)cp /usr/src/linux-2.5.7/System.map /boot/System.map-2.5.7
(12)進(jìn)入/boot目錄,rm System.map
(13)在/boot目錄中運(yùn)行l(wèi)n System.map-2.5.7 System.map 10-13兩個(gè)步驟每次重新編譯都要做。
(14)我開(kāi)始提醒過(guò)的,但愿你安裝了lilo (否則你就高唱:“神啊,救救我吧!”),編輯文件:/etc/lilo.conf ,做下面的編輯:
boot=/dev/sda
map=/boot/map
install=/boot/boot.b
prompt
timeout=50
lba32
default=linux-2.5.7
image=/boot/vmlinuz
label=linux
initrd=/boot/initrd
read-only
root=/dev/sda5
image=/boot/vmlinuz-2.5.7
label=linux-2.5.7
initrd=/boot/initrd
read-only
root=/dev/sda5
黑體字部分是后加的和修改的。萬(wàn)一你沒(méi)有安裝lilo,你只能修改/boot下面的連接指向你新的System.map和vmlinuz , 而不用修改lilo了。這樣也能啟動(dòng),但是一旦出現(xiàn)問(wèn)題,你的機(jī)器就啟動(dòng)不了了。
(15)執(zhí)行命令:lilo (用來(lái)更新lilo數(shù)據(jù)),注意輸出的結(jié)果:帶星號(hào)的是缺省的。
(16)祈禱,然后reboot 系統(tǒng)重新啟動(dòng)后,用uname –a 可看到新的內(nèi)核起作用了。如果出現(xiàn)任何問(wèn)題不能引導(dǎo)了,你需要在lilo的引導(dǎo)界面選擇原來(lái)的內(nèi)核啟動(dòng),進(jìn)入系統(tǒng)后重新改變內(nèi)核參數(shù),調(diào)整硬件或其他配置。然后重復(fù)前面所有過(guò)程。