Centos 核心編輯 (Kernel 2.6.39.4)

由 Derek 發表於 一月 28, 2013 / 2 則評論

Kernel介紹

Kernel (核心),是整個系統中最底層也是最重要的一部份。不但負責硬體的驅動,更提供了各種系統所需的核心功能、包括防火牆機制、是否支援 LVM 或 Quota 等檔案系統等…都是靠核心所負責的。 Linux Kernel,以 C語言寫成,符合POSIX標準,採用GNU通用公共許可證釋出,是目前最受歡迎的自由電腦作業系統核心

 

更多詳細內容可參考 :

維基百科-Linux核心

鳥哥- Linux 核心編譯與管理

 

 

系統環境

Centos 5.8-x86_64-bin

Kernel  linux-2.6.39.4

 

 

安裝方式

安裝相關套件

在開始設定之前,請先安裝所需的套件

gcc gcc-c++  : 用於make 編譯時使用

ncurses-devel : 用於make menuconfig 時使用

 

 

下載所需要的 Kernel  2.6.x

Kernel 的版本有很多,請依照自己需要的下載

以下提供幾個常見的載點

官網載點

交大資工載點

義守大學載點

國家高速網路與計算中心載點

 

 

配置 Kernel

在 Kernel 的配置上,請依個人需求自行選擇。若是不知該如何選擇的話,可複製原本 Kernel 的設定檔加上參考鳥哥的核心功能細項選擇來做修改。

或是參考已設定好的「.config

如果在 Kernel 配置 make menuconfig 時有報錯的話請參考此篇文章解決

如果在 Kernel 配置完成後有出現警告 (warning) 訊息的話,請參考此篇文章有整理一些常見的警告。

 

 

編譯核心和核心模組

指令介紹

先來說明一下幾個常用的指令

make mrproper : 完全清除 Kernel 資料夾內編譯過和修改過的檔案,包括「.config」

Make clean : 只會刪除類似目標檔之類的編譯過程產生的中間檔案,而不會刪除設定檔

 

 

編譯核心和核心模組

執行此步驟會依據主機效能和所配置的Kernel項目,而有所差別。大約一小時左右

make all 指的是執行以下三個動作 make vmlinux、make modules、make bzImage

make vmlinux : 未經壓縮的核心

make modules : 僅核心模組

make bzImage : 經壓縮過的核心

 

編譯完成後 bzImage 會存放在以下路徑

 

 

安裝模組

在安裝好模組後,會在 /lib/modules/ 看到多出一個新的模組放置的資料夾

如果有需要重覆編譯安裝,為避免衝突可參考以下兩種方式。。

  1. 先將舊的模組資料夾改名字,然後在編譯安裝。
  2. make menuconfig 裡,選 General setup 內的 Local version來修改名稱

 

 

安裝核心

經由剛剛的設定後知道核心已經存放在  /usr/src/kernels/linux-2.6.39.4/arch/x86/boot/bzImage,不過如果真的要使用的話必須要放到 /boot 才行。

在此部份有兩種設定方式,請選一種設定就行了

方法一

1. 複製 bzImageconfig/boot

將核心bzImage移至 /boot 且將config也備份一份到 /boot 以備不實之需

 

2. 建立 Initial Ram Disk (initrd)

/boot/initrd-2.6.39.4.img : 為檔案建立後要存放的位置和名稱

2.6.39.4 : 指的是 ll /lib/modules/ 的模組資料夾

若在建立 initrd 時出現「No module ata_piix found for kernel 2.6.39.4, aborting.」 請改用以下方式建立

 

3. 編輯開機選單

請手動新增以下內容

修改前

 

修改後

在原先的 title CentOS (2.6.18-308.el5) 上面新增以下內容。並且修改 default=0,在開機選單的順序上為0、1、2…。所以原先設定為 default=1 的話就會啟動到舊的核心(2.6.18-308.el5)。因此請修改為0,讓系統能抓取最新的核心。

 

4. 重新開機查看是否為新核心

 

 

方法二

1. 使用此方式,會自動將 bzImageInitial Ram Disk (initrd) 建立完成且移到 /boot 內,還會自動將開機選單設定完成。

 

2. 查看開機選單

由於已經自動新增內容,所以不需要多做修改。

 

3. 重新開機查看是否為新核心

 

 

參考資料:

鳥哥- Linux 核心編譯與管理

 

 

  

關於作者

一個半路殺出來的傻小子,憑著一股傻勁努力的學習、嘗試、分享。希望能用自己微薄之力,替IT界和資訊界盡一點心力。單憑一己之力始終還是有限,歡迎和我有相同理念的夥伴一同加入一同努力。

評論

  1. Evan 說: 2013/08/05

    謝謝,很有幫助!

發表評論至 Derek

*