最近看LDDP3时,需要搭建搭建基于Linux-2.6.10内核的编译环境,查看了大量资料,尝试了很多例如Centos和Ubuntu的高版本(进行了GCC降版本)进行编译无果后,最后选择了系统内核与需要编译的内核属于同一版本的ubuntu-5.04进行了编译,编译顺利完成,现将整个过程整理如下。
一、虚拟机系统编译环境搭建
编译环境:VMware 8.x + ubuntu-5.04 + gcc-3.3.x
1.下载ubuntu-5.04-install-i386.iso(http://old-releases.ubuntu.com/releases/hoary/ubuntu-5.04-install-i386.iso)并安装;
2.安装gcc-3.3.x,采用该系统自带的版本,连接CD/DVD盘后,执行:apt-get install gcc,默认从.iso镜像中安装;
注:用VMware 12.x版本安装Linux,但安装VMware Tools时会出现问题,并且本次使用的Ubuntu版本安装时硬盘接口应该设为IDE,否则虚拟机不能安装系统;gcc版本不能太高,否则编译容易出问题;关于linux-2.6.10.tar内核源码,还有个补丁linux-2.6-seg-5.patch,建议打上该补丁(将linux-2.6-seg-5.patch拷入解压后的源码目录执行:patch -p1 < linux-2.6-seg-5.patch);
二、编译、安装内核模块
$sudo make oldconfig
$sudo make
$sudo make bzImage
$sudo make modules
$sudo make modules_install
$sudo make install
3.bzImage是内核映像文件,是启动内核必须的,编译安装内核完成会在/boot目录下生成:vmlinuz-2.6.10 文件。
三、制作initrd.img文件
$sudo mkinitrd -o /boot/initrd.img-2.6.10 /lib/modules/2.6.10
initrd.img文件在系统启动时起加载内核的作用。具体可参考
http://blog.csdn.net/chrisniu1984/article/details/3907909。
四、修改grub启动项
本文中选用的Linux版本不能自动引导新编译的内核自动加载进启动选项,需修改grub配置文件/boot/grub/menu.lst,增加新编译的内核的启动项,并作为默认启动项,详细的配置如下:
102 ## ## End Default Options ##
103 title Ubuntu, kernel 2.6.10
104 root (hd0,0)
105 kernel /boot/vmlinuz-2.6.10 root=/dev/hda1 ro quiet splash
106 initrd /boot/initrd.img-2.6.10
107 savedefault
108 boot
109
110 title Ubuntu, kernel 2.6.10-5-386
111 root (hd0,0)
112 kernel /boot/vmlinuz-2.6.10-5-386 root=/dev/hda1 ro quiet splash
113 initrd /boot/initrd.img-2.6.10-5-386
114 savedefault
115 boot
其中,103行到108行为需要添加的部分。
五、重启并验证系统内核中
完成以上步骤后,重启系统,按Esc进入内核启动项,选择新编译的2.6.10内核,启用新内核;
在终端输入:uname -r 查看内核版本,输出显示:2.6.10。
至此,2.6.10内核编译、安装、启动完成!
参考文章: