本文適用於CentOS 6.4, CentOS 6.5,親測可行,估計也適用於其他Linux發行版。 1. 準備工作 1.1 下載源碼包
Linux核心版本有兩種:穩定版和開發版 ,Linux核心版本號碼由3個數字組成:r.x.y r: 主要版本號 x: 次版本號碼,偶數表示穩定版本;奇數表示開發中版本。 y: 修訂版本號碼 , 表示修改的次數
去 http://www.kernel.org 首頁,可以看到有stable, longterm等版本,longterm是比stable更穩定的版本,會長時間更新,因此我選擇 3.10.28,
wget https://www.kernel.org/pub/linux/kernel/v3.x/linux-3.10.28.tar.xz
1.2 解壓
tar -xf linux-3.10.28.tar.xz
1.3 更新當前系統
sudo yum updatesudo yum upgrade
1.4 安裝編譯核心所需要的軟體包
sudo yum groupinstall "Development Tools" # 一口氣安裝編譯時間所需的一切工具sudo yum install ncurses-devel #必須這樣才能讓 make *config 這個指令正確地執行。sudo yum install qt-devel #如果你沒有 X 環境,這一條可以不用sudo yum install hmaccalc zlib-devel binutils-devel elfutils-libelf-devel #建立 CentOS-6 核心時需要它們
2 設定檔 2.1 查看當前系統核心
uname -r2.6.32-358.11.1.el6.x86_64
2.2 將當前系統的設定檔拷貝到目前的目錄
cp /boot/config-2.6.32-358.11.1.el6.x86_64 .config
2.3 使用舊核心配置,並自動接受每個新增選項的預設設定
sh -c 'yes "" | make oldconfig'
make oldconfig會讀取目前的目錄下的.config檔案,在.config檔案裡沒有找到的選項則提示使用者填寫,然後備份.config檔案為.config.old,並產生新的.config檔案,參考 http://stackoverflow.com/questions/4178526/what-does-make-oldconfig-do-exactly-linux-kernel-makefile 3 編譯
sudo make -j8 bzImage #產生核心檔案sudo make -j8 modules #編譯模組sudo make -j8 modules_install #編譯安裝模組
要嚴格按照這個順序進行編譯,不能合并成一句,sudo make -j8 bzImage modules modules_install。
-j後面的數字是線程數,用於加快編譯速度,一般的經驗是,有多少G記憶體,就填寫那個數字,例如有8G記憶體,則為-j8。 4 安裝
sudo make install
如果出現了 ERROR: modinfo: could not find module xxx,數量少的話,可以忽略。 5 修改Grub引導順序
安裝完成後,需要修改Grub引導順序,讓新安裝的核心作為預設核心。
編輯 grub.conf檔案,
sudo vim /etc/grub.conf
數一下剛剛新安裝的核心在哪個位置,從0開始,然後設定default為那個數字,一般新安裝的核心在第一個位置,所以設定default=0。 6 重啟
sudo reboot
重啟後,看一下當前核心版本號碼,
uname -r3.10.28
成功啦。。 7 如果失敗,則重新迴圈
如果失敗,重新開始的話,要清理上次編譯的現場
make mrproper #清理上次編譯的現場
然後轉到第2步,重新開始。 參考資料 How to upgrade the kernel on CentOS CentOS 6.4 升級到 3.x Kernel CentOS Linux 升級核心步驟和方法