linux在前不久剛發布了最新的3.0核心,在linux的學習中,瞭解核心的編譯是一個必不可少的功課。前幾天,學習了linux核心的編譯流程,在此總結下,大家來一起學習。
以最新的3.0核心為例,我下載的是linux3.0.1 :http://www.kernel.org
前提條件:1.確定你的linux有裝Development Tools ,Development Libraris,他們是實現編譯的前提工具,如果沒有請使用yum groupinstall安裝
2.下載核心源碼檔案並拷貝進虛擬機器裡
核心編譯的原則:1.編譯時間需要一個新版本,漏洞少一點
2.儘可能選擇和自己硬體對應的驅動模組,相容性好
3.伺服器一般不用過新的核心,因為它沒有發現一些bug,有可能不穩定
--------------------------------------------------------------------------------------------------------------------------
第一步:將您的核心檔案複製到/usr/src/目錄下,解壓縮核心源碼檔案,以為的電腦為例
[root@server56 src]# lsbusybox-1.18.5 linux linux-3.0.1.tar.bz2[root@server56 src]# tar -xf linux-3.0.1.tar.bz2 # 解壓縮過程比較長,耐心等待[root@server56 src]# lsbusybox-1.18.5 linux linux-3.0.1 # 這就是源待碼檔案目錄
第二步:進入原始碼目錄,拷貝/boot/config-2.6.18-164.el5 到原始碼目錄並改名為.config
[root@server56 src]# cd linux-3.0.1 [root@server56 linux-3.0.1]# cp /boot/config-2.6.18-164.el5 ./.config
## 這裡需要做一個說明:由於我們是初次編譯核心,而核心的選項多達上千條,所有我們以redhat官方提供的核心版本設定檔為藍本,在它的基礎上配置,保證核心的穩定性,而redhat核心的設定檔就是/boot/config-`uname-r` uname-r指的是當前系統的版本號碼,我的是2.6.18-164.el5,編譯時間,系統會將你的配置儲存在.config檔案中
第三步:輸入make menuconfig 進去編譯配置介面 (其實有很多中方式,這裡只介紹一種常用的)
[root@server56 linux-3.0.1]# make menuconfig
可以看到,這裡面有很多核心選項。裡面的選項對應的翻譯可以查看這個連結:http://lamp.linux.gov.cn/Linux/kernel_options.html
*號表示編譯進核心, M表示編譯成模組,按空格鍵選擇 ,斷行符號鍵進入選擇分支,我們已經使用了.config檔案,所以可以直接編譯,當然你可以選擇自己想要的功能。
作者:金步國,國內有名的linuxer,翻譯過很多linux書籍
選擇接受後按按下面的ESC,彈出的介面選yes儲存
第四步:使用make命令編譯核心 #!需要注意的是,這個過程相當漫長,大概需要幾十分鐘到一個多小時的時間,而且最好不要在終端內進行,任何中斷連線都會造成編譯失敗,建議這一步在虛擬機器控制台內進行
[root@server56 linux-3.0.1]# make
第五步:編譯結束後,安裝模組
[root@server56 linux-3.0.1]# makemake modules_install
第六步:安裝核心,這一步會將核心資訊寫入到你的grub裡,(可以手動編輯grub.conf檔案去掉)你可以用現有的虛擬機器體驗新版本核心(前提不出錯,核心出錯會在啟動時顯示kernel panic!核心恐慌,可能是選擇的模組沒有對應的依賴關係,只能重新編譯)
[root@server56 linux-3.0.1]# make install
在完成編譯後,核心檔案會存放在/boot目錄下
[root@server56 boot]# lsSystem.map initrd-2.6.18-164.el5.img vmlinuz-2.6.18-164.el5System.map-2.6.18-164.el5 initrd-2.6.28.10.img vmlinuz-2.6.28.10