การ Compile Kernel บน Centos OS อย่างง่าย Support ทั้ง Centos4.x และ 5.x และสามารถประยุคใช้กับ Redhat Fedora ใด้เช่นกัน ตามมาดูเลยครับ ไม่ยากเลย

1 . Download The Kernel Sources

Download Sources จาก mirror ต่างๆ ตัวอย่างเช่นที่ http://www.kernel.org

เลือก Kernel ตัวล่าสุด ( ตอนที่เขียน 2.6.23.9 ) เลือกดาวโหลดแบบ Full มาเลยนะครับ

โดยใช้คำสั่ง

#cd /usr/src
#wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.23.9.tar.bz2

รอจนเสร็จ

2. ทำการแตก File ออกมา โดย

#tar xjf linux-2.6.23.9.tar.bz2
#ln -s linux-2.6.23.9 linux
#cd /usr/src/linux

3. Configure The Kernel โดยคำสั่งง่ายๆ

#make clean && make mrproper
#cp /boot/config-`uname -r` ./.config

ขั้นตอนที่ผ่านมาคือการเก็บ .config ของ Kernel เก่าไว้

#make menuconfig

เพื่อสร้าง Menu Config Kernal ขึ้นมา

เมื่อพบหน้าจอ Config แล้ว ให้ Load ตัว config ที่เก็บไว้ขึ้นมา แล้ว Save ทับไป

ก่อน Save สามารถแก้ไข Kernel ได้เอง ( ไม่แนะนำให้มั่ว อาจจะเจอปัญหา Kernel Panic )

เมื่อเสร็จแล้วก็ จัดการ Compile ได้เลย

#make all
#make modules_install
#make install

ขั้นตอนที่ผ่านมาคือการ Compile Module ต่างๆ และ Install เข้าสู้ Boot Loader

ขั้นตอนสุดท้ายแล้ว ก็คือ การเปลี่ยนต่ำแหน่ง Boot Kernel

#vi /boot/grub/menu.lst

สังเกตุดูจะมี Kernal ที่เราสร้างขึ้นมา

# grub.conf generated by anaconda
#
# Note that you do not have to rerun grub after making changes to this file
# NOTICE: You have a /boot partition. This means that
# all kernel and initrd paths are relative to /boot/, eg.
# root (hd0,0)
# kernel /vmlinuz-version ro root=/dev/hda3
# initrd /initrd-version.img
#boot=/dev/hda
default=0
timeout=5
splashimage=(hd0,0)/grub/splash.xpm.gz
hiddenmenu
title CentOS (2.6.23.8)
root (hd0,0)
kernel /vmlinuz-2.6.23.9 ro root=LABEL=/
initrd /initrd-2.6.23.9.img
title CentOS (2.6.9-55.0.9.ELsmp)
root (hd0,0)
kernel /vmlinuz-2.6.9-55.0.9.ELsmp ro root=LABEL=/
initrd /initrd-2.6.9-55.0.9.ELsmp.img
title CentOS (2.6.9-55.0.9.EL)
root (hd0,0)
kernel /vmlinuz-2.6.9-55.0.9.EL ro root=LABEL=/
initrd /initrd-2.6.9-55.0.9.EL.img
title CentOS-4 i386 (2.6.9-55.ELsmp)
root (hd0,0)
kernel /vmlinuz-2.6.9-55.ELsmp ro root=LABEL=/
initrd /initrd-2.6.9-55.ELsmp.img
title CentOS-4 i386-up (2.6.9-55.EL)
root (hd0,0)
kernel /vmlinuz-2.6.9-55.EL ro root=LABEL=/
initrd /initrd-2.6.9-55.EL.img

 

ตรง default=1 ให้เราแก้เป็น Number ของเราเช่น 0 ดังตัวอย่าง ( มันจะเรียงไป 0 1 2 3 ... )

จากนั้นก็ Reboot ได้เลยครับ โชคดีจงอยู่กับท่านครับ

 

ถ้า Boot ผ่าน มา ก็สามารถเชค Version ได้เลยจาก

#uname -a จะพบ Kernel ของเราเองครับ ^^