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