第一步:下載內(nèi)核
傳送門:地址.筆者下載的是3.2.84版本
第二步:解壓編譯內(nèi)核
由于我下的是.tar.xz文件,用tar命令不能直接解壓。
1.我的系統(tǒng)里不帶xz解壓軟件,先下載xz-5.0.3.tar.bz2文件并解壓安裝
tar -jvxf xz-5.0.3.tar.bz2
cd /opt/xz-5.0.3 #進(jìn)入解壓后的文件夾
./configure
make
make install
2.解壓內(nèi)核
xz -d linux-3.2.84.tar.xz
tar -xvf linux-3.2.84.tar
3.如果是第一次編譯內(nèi)核,并沒有上次殘留的文件可以跳過該步驟(最好仔細(xì)看下指令對應(yīng)的功能)
make mrproper
make clean 刪除大多數(shù)的編譯生成文件, 但是會保留內(nèi)核的配置文件.config, 還有足夠的編譯支持來建立擴(kuò)展模塊
make mrproper 刪除所有的編譯生成文件, 還有內(nèi)核配置文件, 再加上各種備份文件
make distclean mrproper刪除的文件, 加上編輯備份文件和一些補(bǔ)丁文件。
4.搭建編譯內(nèi)核所需要的環(huán)境
yum -y install gcc
yum install ncurses ncurses-devel
yum install openssl-devel
5.進(jìn)入內(nèi)核解壓文件夾配置內(nèi)核參數(shù)
由于我是個小白不會選,為了方便,直接用make localmodconfig命令,這個命令是以本來的.config文件為基礎(chǔ)去選,可以參考論文:嵌入式linux系統(tǒng)的裁剪優(yōu)化和測試技術(shù).然后我就一直回車直到結(jié)束。然后再輸入make menuconfig命令進(jìn)入圖形選擇菜單,將kenel hacking中的Sample..選項去掉(具體那一項我忘了,尷尬),退出保存。然后編輯.config文件中的“CONFIG_SYSFS_DEPRECATED”,默認(rèn)該選項為not set,被注釋掉的,將其改為y,即修改為“CONFIG_SYSFS_DEPRECATED=y”,之后可能還要修改,后面再說。
6.編譯新內(nèi)核
make bzImage make modules make modules_install
7.安裝內(nèi)核
8.編譯安裝可能出現(xiàn)的情況
應(yīng)該是沒什么問題, 不過也不排除會出現(xiàn)下面的情況:make:警告:檢測到時鐘錯誤。您的創(chuàng)建可能是不完整的。 解決辦法:find . -type f -exec touch {} \; 重新編譯下就好了。
9.處理下img中的東西(我說不清楚= =)
1)解壓initrd文件
# cp /boot/initrd-3.2.84.img /tmp
# cd /tmp/
# ls
initrd-2.6.30.4.img
# mkdir newinitrd
# cd newinitrd/
# zcat ../initrd-2.6.30.4.img | cpio -i
釋放之后看到如下內(nèi)容
# ls
bin dev etc init lib proc sbin sys sysroot
2)編輯init,刪掉其中重復(fù)的四行中的兩行 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 3)重新打包initrd
# find . | cpio -c -o > ../initrd
11538 blocks
# cd ..
# gzip -9 initrd > initrd.img
# ls
initrd-2.6.30.4.img initrd initrd.img
這里面的initrd.img就是重新打包后的文件。 4)把initrd.img復(fù)制到/boot下 命令:#cp initrd.img /boot 5)修改grub.config,在/etc文件夾下 把initrd-3.2.84.img改為initrd.img就可以了 6)reboot重啟 記得選擇自己的內(nèi)核!別錯過啦!
以上內(nèi)容就是小編為大家?guī)淼年P(guān)于CentOS 5.5下編譯安裝新內(nèi)核的方法了,希望可以幫助到大家!