發(fā)現(xiàn)還是很多人問關(guān)于內(nèi)核編譯的問題,所以一時(shí)性起發(fā)個(gè)帖子總結(jié)一下。
2.6.0 的編譯方法已經(jīng)簡(jiǎn)潔了很多,下面的辦法假設(shè)你的現(xiàn)有系統(tǒng)上已經(jīng)具備了所有操作所需要的東西(絕大多數(shù)系統(tǒng)默認(rèn)都已經(jīng)提供)
1.下載
在 http://www.kernel.org/pub/linux/kernel/v2.6/ 下載 linux-2.6.0.tar.bz2
選擇 bz2 的原因就是壓縮比高,節(jié)約點(diǎn)時(shí)間 。
2.解壓
代碼:
# cd /usr/src
# tar xvjpf [$NEW-KERNEL-PATH]/linux-2.6.0.tar.bz2
$NEW-KERNEL-PATH 就是你剛才將新內(nèi)核下載到的路徑,以下操作都在 /usr/src 目錄下完成
3.配置
代碼:
# make mrproper
# make menuconfig
make mrproper 是清理代碼樹的動(dòng)作,保證源代碼是干凈的
make menuconfig 如果失敗,很可能是 ncurses 庫(kù)沒有裝,可以用 make xconfig 或者 make config 來替代
4.編譯
代碼:
# make
如果不放心,也可以用舊的命令:make bzImage && make modules 。
5.安裝
代碼:
# make install
如果不放心,也可以用 cp [$bzImage-PATH]/bzImage /boot/vmlinuz-2.6.0 && cp System.map /boot/System.map-2.6.0 來替代
另外, make modules_install 也一樣還可以用。
不過,建議在沒有 make clean 之前,如果增加了新的模塊,可以直接 make menuconfig && make moduels && make modules_install,不需要全部重新來過
6.檢驗(yàn)
代碼:
# ls /boot
如果看到了 vmlinuz-2.6.0 和 System.map-2.6.0 ,那么恭喜你,成功了!
如果你是用 make install 安裝的,還會(huì)看到個(gè) config-2.6.0 文件
7.清理
代碼:
make clean
如果你以后還要利用這次編譯的成果,也可以省略這一步,如果你想直接刪除源代碼目錄,也可以省略這一步。
8.修改 grub
在 grub 的配置文件中進(jìn)行修改,增加新內(nèi)核的支持。建議保留舊內(nèi)核的項(xiàng)目,避免編譯失敗后痛哭流涕 。
通常 grub 配置文件在下面三個(gè)地方(根據(jù)發(fā)行版的不同):
/etc/grub.conf
/boot/grub/menu.lst
/boot/grub/grub.conf
根據(jù)你的實(shí)際情況來修改。
修改參照下面:
代碼:
title Kernel 2.6.0
root (hd0,0)
kernel /vmlinuz-2.6.0 ro root=/dev/hda1
將 (hd0,0) 和 /dev/hda1 換成你的實(shí)際信息,如果重新啟動(dòng)后出現(xiàn) kernel panic 錯(cuò)誤或者顯示應(yīng)該修改 init 信息,則基本都是 kernel 語(yǔ)句錯(cuò)誤。
8.其他
如果你的 kernel 支持內(nèi)存鏡像,就用 mkinitrd 命令制作一個(gè)鏡像文件,然后拷貝到 /boot 路徑下。通常在 redhat 的 /boot 下有一個(gè) initrd-2.6.0.img 就是這么做的,呵呵。不過這個(gè)步驟似乎并非必要,而且很多發(fā)行版默認(rèn)不提供
mkinitrd 命令。就算你真的非要這么做,也要記得在 make menu 的時(shí)候記得選擇內(nèi)核鏡像 ram image,并且不能安裝為模塊,否則 initrd 就不會(huì)運(yùn)作。