由於要編譯X86平台上的linux模塊,原操作系統上面沒有配備內核源代碼,所以無法編譯內核,更不能進行內核模塊的實驗了。參考了很多的資料,決定對運行的linux的內核版本進行升級。最後升級成功。下面把方法總結如下:
一、環境
紅帽子企業版5,在linux下進入root用戶
#uname -r
2.6.18-53.el5
二、升級過程
1) 下載內核
升級之前到www.kernel.org看看有沒有最新的內核,目前為止最新的是2.6.30,下載地址是:http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.30.tar.bz2
2) 將linux-2.6.30.tar.bz2拷貝到/usr/src目錄下面,使用下面的命令解壓,得到文件夾linux-2.6.30
tar xjvf linux-2.6.30.tar.bz2
3) make mrproper
假如是第一次編譯,這一步驟可以省掉的。
4) 復制原有的config文件到linux-2.6.30目錄
#cd /usr/src/linux-2.6.30
# cp /boot/config-2.6.18-53.el5 .config
5) make menuconfig
選擇Load an Alternate Configuration File,導入.config文件,更加自己的需要添加功能或者進行精簡。
注:內核配置有兩種方法,一種是直接置入內核* ;另一種是編成模塊M ;兩種方法各有優點;直接編入內核的,比如設備的啟動,不再需要加載模塊的這一過程了;而編譯成模塊,則需要加載設備的內核支持的模塊;但直接把所有的東西都編入內核也不是可行的,內核體積會變大,系統負載也會過重。我們編內核時最好把極為重要的編入內核;其它的如果您不明白的,最好用默認。
6) 編譯內核
make bzImage
7) 編譯內核模塊
make modules
8) 安裝內核模塊
make modules_install
(PS:將編譯好的內核模塊從內核源代碼目錄copy至/lib/modules下)
9) 制作init ramdisk
mkinitrd initrd-2.6.30 2.6.30
(PS:2.6.30必須要在/lib/modules下可以找到)
10) cp arch/x86/boot/bzImage /boot/vmlinuz-2.6.30
(PS: vmlinuz-2.6.30這個名字是可以隨便取的)
11) cp initrd-2.6.30 /boot/
12) vi /etc/grub.conf
(PS:主要是復制源內核那部分的,然後進行修改,主要修改部分為title和kernel和initrd)
13) reboot