Linux系統需要事先安裝GCC編譯工具、ID連接器和make編譯器,這裏不討論這個了,網上有很多這樣的文章
# wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.38.2.tar.bz2
# tar xjvf linux-2.6.38.2.tar.bz2 -C /usr/src/
# cd /usr/src/linux-2.6.38.2
# make menuconfig (這裏如果是在虛擬終端下執行的話,虛擬終端的大小要適當的調整,否則運行以後出現錯誤)
這裏主要注意的地方是CONFIG_SYSFS_DEPRECATED_V2這個選項,一定要啓用的,具體在General setup中,解釋說是enable deprecated sysfs features to support old userspace tools
其他的比如支持windows的NTFS的選項可以自己去選擇,最後選擇完了以後,在退出的時候選擇保存。
#make (這個時間比較長,好幾個小時)
#make modules (編譯模塊)
#make modules_install (安裝模塊)
#cp arch/i386/boot/bzImage /boot/vmlinuz-2.6.38.2
#cp System.map /boot/System.map-2.6.38.2
#mkinitrd /boot/initrd-2.6.38.2.img 2.6.38.2
好像mkinitrd有個BUG,make出來的initrd有重複的行,要去掉
#cp initrd-2.6.38.2.img /tmp/
#cd /tmp
#mkdir newinitrd
#cd newinitrd
#zcat ../initrd-2.6.38.2.img |cpio -id
#vim init
刪掉其中重複的四行中的兩行
echo "Loading dm-region-hash.ko module"
insmod /lib/dm-region-hash.ko
echo "Loading dm-region-hash.ko module"
insmod /lib/dm-region-hash.ko
# find . | cpio -c -o | gzip -9 >../initrd-2.6.38.2.img.new (重新打包)
#cp ../initrd-2.6.38.2.img.new /boot/initrd-2.6.38.2.img
#編輯grub的配置文件
title Linux New Kernel (2.6.38.2)
root (hd0,0)
kernel /vmlinuz-2.6.38.2 ro root=/dev/vg_1/lv_root
initrd /initrd-2.6.38.2.img
(這個是我的,你的可能不一樣的)
#sync;sync
#reboot
選擇新的內核…… OK,Good Luck.