星期二, 5月 17, 2005

Compile kernel

基本上使用RedHat從RedHat 6.x到現在的FC3
印象中好像FC1開始就沒編譯kernel,應該是現在硬體支援度越來越高的關係
想當初編譯kernel可說是家常便飯,三天兩頭就要重新編譯kernel
這次的主要任務是要把Default iocharset for FAT 改成utf8
當然也可以加入,如支援NTFS(NTFS file system support)...等等

之前在一台準系統平常使用上網和打報告都能正常使用,甚至安裝win都能使用
但是在編譯kernel時,每次編譯到一半就關機
後來才發現是CPU過熱,主機板的安全防護措施
原來平常使用時,CPU根本沒有發揮到極限
最後用好一點的散熱膏才解決問題!!!
因此以下動作可能造成當機的危險,請勿輕易嘗試...

首先到官方網站下載 kernel-2.6.11-1.14_FC3.src.rpm
# rpm -ivh kernel-2.6.11-1.14_FC3.src.rpm
以下分成兩種方式

方法一
# cd /usr/src/redhat/SPECS/
# rpmbuild -bp --target=i686 kernel-2.6.spec
# cd /usr/src/redhat/BUILD/kernel-2.6.11/linux-2.6.11/
# gedit Makefile(修改EXTRAVERSION = -linuxnote_FC3)
# make mrproper
# cp -p configs/kernel-2.6.11-i686.config .config
# make oldconfig
# make xconfig(要安裝qt-devel)

# make dep (kernel 2.6之後不用)
# make clean
# make bzImage
# make modules

# cp -p arch/i386/boot/bzImage /boot/vmlinuz-2.6.11-linuxnote_FC3
# make modules_install
# cp -p System.map /boot/System.map-2.6.11-linuxnote_FC3
# new-kernel-pkg --mkinitrd --depmod --install 2.6.11-linuxnote_FC3

方法二
建立專屬的rpm
# gedit /usr/src/redhat/SPECS/kernel-2.6.spec
修改這一行
%define release %(R="$Revision: 1.14 $"; RR="${R##: }"; echo ${RR%%?})_linuxnote_FC3%{rhbsys}

# cd /usr/src/redhat/SOURCES
# cp kernel-2.6.11-i686-smp.config kernel-2.6.11-i686-smp.config.bak
# gedit kernel-2.6.11-i686-smp.config
將ascii改成utf8
CONFIG_FAT_DEFAULT_IOCHARSET="utf8"
# cd /usr/src/redhat/SPECS
# rpmbuild -vv -ba --target=i686 kernel-2.6.spec --clean
# cd /usr/src/redhat/RPMS/i686/
# rpm -ivh kernel-smp-2.6.11-1.14_linuxnote_FC3.root.i686.rpm (請勿使用Uvh,切記!!!)
最後重新開機看看新的kernel能不能正常運作...

基本上方法一,是我n年前的筆記,不過除了make dep不能用之外,其他應該都還適用
而至於方法二,smp是支援多顆cpu的版本,如果只有單一cpu的機器,請自行更改...

UPDATE 2008-7-18
看到自己3年前寫的東西,有種奇妙的感覺,哈哈~~
可以參考以下連結
http://wiki.debian.org.hk/w/Compile_Linux_kernel

沒有留言: