weiqi7777

进击吧,linux(四)-Linux内核配置、编译及使用

0
阅读(2720)

 

linux的官网上,可以下载各个版本的Linux内核,其实我们是可以将这些内核下下来,自己配置编译来使用的。

   clip_image002

         首先是下载内核,我使用的是2.6.39版本的内核。

         linux中,首先将下载的2.6.39的内核压缩包解压。进入到该目录,可以看到目录下是有很多文件的。每个文件有自己的作用和功能。

     clip_image004

         下面,就要对linux内核进行配置了。因为linux支持很多处理器,并带有很多驱动,而我们使用的时候,肯定是对于特定的处理器上,这里,是在x86平台上。所以就需要配置。使用make menuconfig,可以使用图形化界面对内核进行配置。

                  clip_image006

         这个配置的东西就可多了,对于我们初学者来说,配置是有点困难的,所以直接拿配置好的来使用。

         在装好的linux系统中,在boot目录下,有一个config的文件。这个文件就是现在运行的linux系统的内核的配置文件。可以看出,这个时候运行的linux系统的内核是2.6.32

      clip_image008

         将这个文件拷贝到刚刚解压的linux内核目录。

         在刚刚的图形化配置linux内核的界面中,选择载入配置文件

    clip_image010

填入刚刚拷贝的配置文件的名字

clip_image012

选择OK后回到上一层界面,在退出,会有对话框提示是否保存新的配置文件,选择Yes

clip_image014

  这样,配置就配置好了。生成的配置文件在当前目录下,不过是个隐藏文件,文件名为.config

clip_image016

打开文件看看,每一行是对内核的一个参数进行配置。

clip_image018

配置好了,下面就要来编译了。首先是编译内核。使用make bzImage命令,对内核进行编译

clip_image020

编译的时间有点久。等编译完后,会在arch/<cpu>/boot 目录下生成一个bzImage的文件,这个就是内核映像。因为是在x86平台上,所以cpu就是x86

然后要编译内核模块。内核模块是供内核调用的一些模块,这些模块不是一直在使用,所以不用编译进内核中。

使用make modules命令对内核模块进行编译。

clip_image022

这个也是要等比较久的时间。编译完后,会生成.ko文件,散落在各个文件中。例如对于ipv4的驱动,就会在net/ipv4目录下,有一堆的.ko文件。

clip_image024

然后要将这些内核模块拷贝到/lib/modules目录下。使用make modules_install命令,就将生成的.ko文件给拷贝到/lib/modules目录下了。

完后,就可以看到在/lib/modules目录下,要多一个文件夹。

clip_image026

然后就要将该文件夹下的所有文件进行打包,打包成一个文件,以供内核调用。

使用  mkinitrd 打包后的文件名  打包的文件夹  命令进行打包。注意,打包目录,是认为/lib/modules目录下的。

clip_image028

这样,就将/lib/modules目录下的2.6.39文件夹里的所有文件,打包进了linux-2.6.39的内核模块文件中。

然后,将生成的zImage文件和内核模块文件都拷贝到/boot目录下。

clip_image030

这里,我将生成zImage文件改了个名字为vmlinuz-2.6.39

最后,修改linux启动配置文件,/etc/grub.conf

clip_image032

将原来的部分给复制一下,然后修改1处的文件为boot下拷贝的zImage文件,2处文件为boot下拷贝的内核模块文件。注意,不用在前面加路径,认为都是在/boot目录下的。

这样,此时的linux系统启动就有两种启动版本,一种是linux内核2.6.32,一种是linux内核2.6.39

然后重启linux系统。在启动的时候,要按回车键。以出现启动版本选择。

clip_image034

看到,有两个版本选择了。选择下面一个我们自己制作的。然后等待一会,linux系统就启动起来了。

使用umane –r查看系统内核,为2.6.39。说明,操作正确。

clip_image036

这样,就实现了对linux系统的内核的升级,同时也搞定了怎么将linux内核编译并使用。关键的地方就是对内核的配置,这个要根据具体的硬件来。