整理了一下Linux核心編譯的方法,原始核心版本為Linux-2.4.20.8,新核心版本為Linux-2.4.22,其它核心版本編譯方法類似。
一 準備工作
首先當然是獲得核心了,可以到[url]http://www.kernel.org/[/url]下載下傳。
獲得核心壓縮包後(假設為linux-2.4.22.tar.gz),先将其複制到/usr/src目錄下,然後轉到/usr/src目錄并進行解壓操作,指令如下(假設目前目錄為核心包所在目錄)
cp linux-2.4.22.tar.gz /usr/src
cd /usr/src
tar -zxvf linux-2.4.22.tar.gz
二 生成編譯所需要的配置檔案
首先進入解壓後的核心檔案,指令如下
cd /usr/src/linux-2.4.22
然後輸入make menuconfig,可以調出核心配置界面,在該界面上可以以圖形的方式生成編譯核心所需要的配置檔案,非常友善!
下圖是它的主界面
一般選擇預設值即可,即按Esc鍵退出,選擇yes儲存設定,如下圖所示:

到此,所有準備工作完畢,下面進入實際編譯階段了。
三 開始編譯
主要包括以下幾步操作。
1.輸入make dep,這行指令的意思是讓系統對核心代碼進行預處理。
2.輸入make bzlmage後開始編譯,可能需要比較長的時間完成該過程,視具體機器性能而定。
3.輸入make modules開始編譯子產品
4.輸入make modules_install開始安裝子產品
5.輸入make install将編譯好的核心進行安裝。
一般來說,以上過程不會遇到什麼異常情況
四.編譯完成
編譯完成後的核心是這個檔案
/usr/src/linux-2.4.22/arch/i386/boot/bzlmage
如下所示:
五.修改啟動程式配置以及新核心的啟動
編譯完成後可以進入引導程式(boot loader)的配置檔案看看,對于不同的引導程式(LILO和GRUB),其配置檔案所在路徑不同。
對于LILO,路徑為:/etc/lilo.conf
對于GRUB,路徑為:/boot/grub/menu.lst
本系統為GRUB引導,是以進入/boot/grub/menu.lst,指令如下
cd /boot/grub
vi menu.lst
檔案内容如下圖所示:
可見,boot loader已經可以加載兩種版本的核心了,在該檔案中可以很容易修改一些資訊,如預設加載的核心版本,引導程式停留時間,修改核心在引導界面的名稱等等。
重新啟動機器,可以看到,此時在引導界面可以有兩種版本的核心進行選擇了,如下圖所示。
我們選擇linux-2.4.22,也就是剛剛編譯好的核心,正常進入後可以通過/proc/version檔案以确定目前啟動的核心版本确實為2.4.22,指令如下
cd /proc
vi version
version檔案内容如下:
可見,核心編譯成功!
注:
初次練習時,可以在虛拟機上進行,如VMware (推薦)或者virtual PC, 以免造成系統崩潰。
出自 51CTO.COM部落格