编译Linux内核

来源:互联网 发布:nginx php exec java 编辑:程序博客网 时间:2024/06/06 02:19

在源代码的目录下,有一个配置文件,.config文件,可以使用默认的,也可以使用
命令清除,然后重新配置内文配置文件,把/boot/下的配置文件拿来修改使用,或者在源代码下/arch/平台下

选择相应的配置文件,然后再这个基础上来配置自己的内核


1、make distclean  清除一些临时文件,也可以使用make clean和make mrproper
   distclean是彻底的清除,就是清除的更彻底,其次是mrproper
2、make menuconfig 当然还有make config命令menuconfig是基于图形界面的配置
  使用起来更方便
  在配置里面选择CPU、文件系统、硬件模块等 内核的配置选项可以另外参考
  配置项前面的选项,通过空格键选择为M和*或者 空 的不同
  选择为M   A.C会变成A.O ,源代码会有编译的阶段,但是不在向下连接,形成了模块文件
  选择为*  A.C会变成A.O  在生成A.O后还会继续连接等,最后形成zImag,e
  选择为 空  A.C不会发生变化,源代码没有编译的阶段

  在/boot目录下的config-2.6.18...文件时当前运行的系统的配置文件,我们可以参考
  改文件来编译内核
  当然内核源代码中也有配置参考文件,在arch/下相应的体系结构下面,我们可以看到config文件
  我们可以拷贝他们到源代码目录下,然后参考配置
3、编译内核模块  make modules
  编译完模块后,安装内核make modules_install,其实它的作用是把内核模块从内核源代码目录
  copy到/lib/modules/下
4、制作init ramdisk
  命令 makeinitrd initrd-2.6.18  2.6.18(后面的版本号根据具体自己内核的版本情况来写,是哪个版本的内核,就写那个)

  完了后会在当前目录下生成initrd-2.6.18文件,这个就是ramdisk文件

5、安装内核版本
  (1)把内核拷贝到/boot/目录下,
   (2)把ramdisk文件拷贝到/boot目录下
   (3)修改/etc/grub.conf文件,复制grub.conf文件最后几行,然后拷贝到最后几行
        然后根据实际情况修改 title后面的信息,kenerl /***ro root=/....只能修改**中的位置

 

重启,我们发现grub下多了一个选择,第二个选择就是我们刚编译过的内核

 

只是不明白自己编译的新内核,为什么模块要copy到旧的文件系统/lib/module下?

原创粉丝点击