CentOS 編譯核心
(2011-08-15 22:50:51)
轉載▼
CentOS 編譯核心
下載linux-2.6.29.4.tar.bz2到/usr/src
# wgethttp://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.29.4.tar.bz2
# tar -jxvf linux-2.6.29.4.tar.bz2
# cd linux-2.6.29.4
# make mrproper
# make menuconfig
# make clean
# make bzImage
# make modules
# make modules_install
# mkinitrd /boot/initrd_2.6.29.4.img 2.6.29.4
執行mkinitrd命令時,提示“No module dm-mem-cache found for kernel2.6.29.4,aborting.”時,表明該版本的mkinitrd有bug。升級mkinitrd或參考這篇文章解決這個問題。
解決方案,1是當使用mkinitrd時,使用”–without-dmraid”這個參數。2是在使用mkinitrd之前,先建立一個noraid檔案。建立方法如下:
# echo "DMRAID=no" >/etc/sysconfig/mkinitrd/noraid
# chmod 755 /etc/sysconfig/mkinitrd/noraid
然後再運行mkinitrd命令。
這裡我採用了第一種辦法
# mkinitrd /boot/initrd-2.6.29.4.img 2.6.29.4--without-dmraid
執行完mkinitrd後,就要在啟動菜單中增加編譯好的核心資訊,以便啟動時可以選擇核心版本。
# cp /usr/src/linux-2.6.29.4/arch/i386/boot/bzImage/boot/vmlinuz-2.6.29.4
# cp /usr/src/linux-2.6.29.4/System.map/boot/System.map-2.6.29.4
開啟/etc/grub.conf檔案,增加以下內容到檔案結尾。
title CentOS (2.6.29.4)
root (hd0,0)
kernel /vmlinuz-2.6.29.4 ro root=/dev/VolGroup00/LogVol00 rhgbquiet
initrd /initrd-2.6.29.4.img
儲存,重啟,進行grub的啟動菜單中,選擇”CentOS(2.6.29.4)”,即可使用編譯好的核心。
如果你覺得make modules_install後面的步驟太麻煩的話,就直接用下面的命令讓系統幫你做好了
# make install
下面是運行時的提示資訊:
sh /usr/src/linux-2.6.29.4/arch/x86/boot/install.sh 2.6.29.4arch/x86/boot/bzImage System.map "/boot"
WARNING: No module dm-mem-cache found for kernel 2.6.29.4,continuing anyway
WARNING: No module dm-message found for kernel 2.6.29.4,continuing anyway
WARNING: No module dm-raid45 found for kernel 2.6.29.4,continuing anyway
/etc/grub.conf檔案裡面也會自動的寫入下面的資訊,不過請放心,他不會設定新的核心為預設的啟動的。
title CentOS (2.6.29.4)
root (hd0,0)
kernel /vmlinuz-2.6.29.4 ro root=/dev/VolGroup00/LogVol00 rhgbquiet
initrd /initrd-2.6.29.4.img