歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> CentOS編譯內核

CentOS編譯內核

日期:2017/2/28 16:30:48   编辑:Linux教程

yum install ncurses-devel (這個包在make menuconfig時要用到,本人測試過)

2、到www.kernel.org下載內核linux-2.6.22.6.tar.gz
將新內核copy到/usr/src

# tar -jxvf linux-2.6.27.tar.bz2
# cd linux-2.6.27
# make mrproper
# make menuconfig (這裡就是設置編譯成模塊或是否編譯進內核或不選)
# make clean
# make bzImage
# make modules
# make modules_install 後可以執行make install 自動化完成
# mkinitrd /boot/initrd_2.6.27.img 2.6.27

執行mkinitrd命令時,提示”No module dm-mem-cache found for kernel 2.6.27, aborting.”時,表明該版本的mkinitrd有bug。
解決方法,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.27.img 2.6.27 –without-dmraid
執行完mkinitrd後,就要在啟動菜單中增加編譯好的內核信息,以便啟動時可以選擇內核版本。
# cp arch/x86/boot/bzImage /boot/vmlinuz-2.6.27
# cp System.map /boot/System.map-2.6.27
打開/etc/grub.conf文件,增加以下內容到文件結尾。

title CentOS (2.6.27)
root (hd0,0)
kernel /vmlinuz-2.6.27 ro root=LABEL=/
initrd /initrd-2.6.27.img

保存,重啟,進行grub的啟動菜單中,選擇”CentOS(2.6.27)”,即可使用編譯好的內核。


第二種方法 如果你覺得make modules_install後面的步驟太麻煩的話,就直接用下面的命令讓系統幫你做好了
# make install

下面是運行時的提示信息:
sh /usr/src/linux-2.6.27/arch/x86/boot/install.sh 2.6.27 arch/x86/boot/bzImage System.map “/boot”
WARNING: No module dm-mem-cache found for kernel 2.6.27, continuing anyway
WARNING: No module dm-message found for kernel 2.6.27, continuing anyway
WARNING: No module dm-raid45 found for kernel 2.6.27, continuing anyway

這些只是提示,對系統沒有什麼影響,經本人查閱相關的資料。

可能是內核和mkinitrd的BUG,大家可以參考一下這篇文章

https://bugzilla.redhat.com/show_bug.cgi?id=488991

通過給內核打dm-raid45這個補丁,可以解決掉”WARNING: No module dm-raid45 found for kernel 2.6.29.4, continuing anyway”這個提示
http://people.redhat.com/~heinzm/sw/dm/dm-raid45/

至於其他的兩個沒有仍然找不到解決的辦法

更簡單的yum -y upgrade kernel kernel-devel

Copyright © Linux教程網 All Rights Reserved