Linux 内核配置与编译

来源:互联网 发布:淘宝网布沙发 编辑:程序博客网 时间:2024/04/29 09:36

      嵌入式系统的一个很重要的特性就是可移植可裁剪配置。这篇博文主要简单总结下在x86体系下配置编译内核的过程。

      首先需要得到linux内核的源码,可以直接到linux官网下载。很多arm开发板的光盘都有linux源码,但还是推荐到官网下载,因为开发板的源码可能已经被修改过。

      取得源码后的步骤就是配置内核。使用make menuconfig命令,配置成功后保存会在内核源代码目录下生成一个.config文件。这个文件是隐藏的,需要用ls -a命令才可看到。配置选项比较多,可以参考网上的一些文档进行配置,也可以从内核源码中的/arch/x86/configs将里面的配置文件拷到源代码目录下,并重命名为.config,然后用make menuconfig命令根据自己计算机的情况进行修改。

     如果你只是想熟悉下过程,在/boot目录下有你当前运行的linux系统的配置文件,你可以直接使用。

     配置完内核后就可以开始编译内核了:sudo make bzImage

大概20分钟,出现以下字符说明编译成功。

Kernel:arch/x86/boot/bzImage is ready (#1)

      内核镜像在源码目录下的arch/x86/boot/bzImage(如果是编译arm体系对应在arch/arm/boot/bzImage)

将生成的内核文件拷到/boot目录下,重命名为vmlinux-3.2.5(名字可以自己取)

    sudo  cp bzImage /boot/vmlinux-3.2.5

     将配置文件.config拷到/boot文件夹

     在源码目录下编译内核模块:

    make  modules

     这个过程比较长,耐心等待下。

安装内核模块

  make modules_install

这个命令的作用是将编译好的内核模块从内核源代码目录copy/lib/modules

制作initramdisk

mkinitrdinitrd-$version $version

:

mkinitrdinitrd-3.2.5 3.2.5

ubuntu中没有mkinitrd命令,使用

mkinitramfs -o /boot/initrd-3.2.5 3.2.5

生成initrd-3.2.5文件后将其拷到/boot文件夹中。

最后修改/boot/grub/grub.cfg(ubuntu系统下,其他系统可能不大一样),至于如何修改可以参考以下博文,原链接:http://www.nenew.net/ubuntu-grub-cfg.html

注意:grub.cfg文件默认是只读的,修改前需要修改权限

###BEGIN /etc/grub.d/10_lupin ###后面的部分记录着启动选项的信息。
例如:
menuentry"Ubuntu, Linux 2.6.32-22-generic" {
   insmodntfs
   setroot=’(hd0,5)’
   search–no-floppy –fs-uuid –set 0e9ca6229ca60475
   loopbackloop0 /ubuntu/disks/root.disk
   setroot=(loop0)
   linux/boot/vmlinuz-2.6.32-22-generic root=/dev/sda5loop=/ubuntu/disks/root.disk ro   quiet splash
   initrd/boot/initrd.img-2.6.32-22-generic
}
这是奶牛的ubuntu系统的第一个启动选项,第一行显示的是ubuntu的名称Ubuntu,Linux 2.6.32-22-generic,引号内的内容可以任意修改,   insmodntfs是载入模块信息,例如insmodjpeg可以添加jpg支持,如要使用pngtga文件做背景,加上insmodpnginsmodtga,。setroot=’(hd0,5)’这里很关键,这里是记录系统从那个分区启动,这里的顺序可能与你在windows下看到的顺序有所不同,因为windows下系统分区顺序是根据分区号来的,而分区号可以任意更改,而这里是物理意义上的顺序,你可以通过在终端中输入df命令查看挂载分区信息。这里hd0是指第一块物理硬盘,顺序也是从0开始,后面的5是指第6个分区,顺序也是从0开始排。

原创粉丝点击