2010年11月1日 星期一

CentOS 5.5 編譯核心

CentOS 5.5 的 kernel 版本是 2.6.18, 新版本是 2.6.35.7, 好久沒編譯核心了, 來大展身手一番 (事實證明還差得遠)

編譯好後重開機, 結果不意外 panic, 成堆錯誤訊息, 第一個就搞不懂了

insmod: error inserting '/lib/dm-region-hash.ko': -1 File exists 

這甚麼(尛)? 谷歌一下還真的有解, 方法是解開 initrd-2.6.35.7.img 這個檔

zcat initrd-2.6.35.7.img | cpio -i

然後修改 init

echo “Loading dm-region-hash.ko module”
insmod /lib/dm-region-hash.ko

上面兩行會重複(搞甚麼?竟然會重複?), 把重複的刪掉, 再把檔案壓回去: 先把所有解出來的東西包成一個檔案

find . | cpio -c -o > ../initrd

再壓縮這個檔案

gzip -9 < initrd > initrd-2.6.35.7.img

重開機, 真的沒有原先的錯誤了, 但還有下一個 (尛)?

could not find filesystem '/dev/root'


有人說是沒抓到硬碟, 有人說是 label 有問題, 試過都不行, 最後解法是修改 .config的一個參數


CONFIG_SYSFS_DEPRECATED_V2=Y


就可以了, 看來這個參數是對舊的檔案系統的支援, 原本 CentOS 用的是檔案系統要淘汰的