由于要编译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