编译内核

2009 九月 18th by Hacksign

首先,说明下make mrproper和make clean的区别:

make mrproper:保证源代码的干净.即清除原来配置时产生的一些文件和配置文件,使源代码恢复到最初

状态.一般得到源代码后都应先执行下此命令.

make clean:清除配置时产生的大部分文件,但是保留配置文件.

下面说说我对编译2.4和2.6内核还有2.4升级到2.6内核的一些理解和简单步骤.

编译2.4内核.

第一步

下载内核源代码,地球人都知道可以从http://www.kernel.org/下载到最新的源代码.

第二步

将其解压缩在/usr/src/目录下.

如果是.tar.gz格式:

1)tar xzvf ****.tar.gz 或

2)gzip -cd ****.tar.gz | tar xvf -

如果是.tar.bz2

1)tar xjvf ****.tar.bz2 或

2)bzip2 -cd ****.tar.bz2 | tar xvf -

第三步

#make mrproper 得到源代码后,将其净化.

第四步

#make menuconfig 对内核选项进行配置.

第五步

#make dep 建立模块间的依赖信息.

第六步

#make clean 删除配置时留下的一些不用的文件.

第七步

#make bzImage 编译内核.内核较小时可以用make zImage

第八步

#make modules 编译模块.

第九步

#su – 切换到管理员状态,之后输入管理员密码.

第十步

#make modules_install 安装模块.

此时/lib/modules/下应该新生成一个KERNEL_VERSION文件.

第十一步

#mkinitrd /boot/initrd-KERNEL_VERSION.img KERNEL_VERSION 生成启动镜像文件

到此为止,构建内核完毕,第十二步把内核映象和System.map拷贝到/root/下

第十三步为修改gurb配置文件.

第十二步

#cp arch/i386/boot/bzImage /boot/bzImage-KERNEL_VERSION

#cp System.map /boot/System.map-KERNEL_VERSION

#ln -s /boot/System.map-KERNEL_VERSION /boot/System.map

第十三步

#vi /etc/grub_conf 修改grub配置文件

在里面加上如下行:

title Redhat Linux(KERNEL_VERSION)
root (hd0,0)
kernel /boot/bzImage-KERNEL_VERSION ro root=LABEL=/
initrd /boot/initrd-KERNEL_VERSION.img

保存即可,grub修改后不用重新启动.直接生效.

重启,启动grub时就可看到自己新的内核.

步骤总结如下:

解压内核源代码到/usr/src/下后

1, make mrproper

2, make menuconfig

3, make dep

4, make clean

5, make bzImage

6, make modules

7, su -

8, make modules_install

9, mkinitrd /boot/initrd-KERNEL_VERSION.img KERNEL_VERSION

10, cp arch/i386/boot/bzImage /boot/bzImage-KERNEL_VERSION11, cp System.map /boot/System.map-KERNEL_VERSION

12, ln -s /boot/System.map-KERNEL_VERSION /boot/System.map

13, 修改grub_conf

编译2.6内核

编译2.6内核要比编译2.4内核简单一些,大体过程和2.4的类似.

但是不用第三步即make dep,然后make(2.6)=make bzImag + make modules(2.4). 其余和上述步骤相同.

2.4升级到2.6的过程:

2.4升级到2.6前需要先阅读2.6内核源代码中的README和Documentation/Changes文件,其中包含了2.6内核所需要的一些软件的最低版本信息和一些其他有用的信息.

在进行升级之前,先要对机器上一些重要的数据做好备份,此点非常重要.

Documentation/Changes中列出了2.6所需要的一些软件的最低版本,可以根据自己的需要,选择性的升级其中的一些软件,但是对于像我一样的菜鸟们建议把软件包都升级,因为暂时还不太了解所有软件包的作用…

其中比较重要的是module_init_tools和glibc.可以使用rmp -U ***.rpm进行软件包的升级.

当把重要的数据备份完,和需要的软件包升级完成后,编译内核.

同2.6内核编译过程.

以上内容纯粹是对内核编译的个人理解,如有说错的地方,请看到的朋友们及时指正,不胜感激.

2 Responses to “编译内核”

  1. 呵呵 Says:

    给你顶一个哈 。。。。

    加油 。。

  2. Hacksign Says:

    呵呵,谢了:)

Leave a Reply