linux内核编译是学习kernel的最基本的步骤之一,本文简单介绍一下linux kernel的编译步骤。
先看一下启动相关的几个文件吧:
/boot
/boot/vmlinuz-<version> : 用于启动的压缩内核镜像, 它也就是/arch/<arch>/boot中的压缩镜像.
/boot/system.map-<version> : 存储内核符号地址.
/boot/initrd.img-<version> : 初始化RAM硬盘时, 用来存储挂载根文件系统所需的模块.
/boot/grub/grub.conf : grub的配置文件. (不同的发行版中它可能位于不同位置,也可能为menu.lst)
简单地说,内核编译可以分为如下几个步骤:
1.下载kernel源代码并解压(如果需要的话,可以下载补丁,并且patch -p1 < patch-x.y.z 命令给源代码打上补丁;可在http://kernel.org/处获得kernel及patch的源码)
2.配置内核,比如用命令make menuconfig,详见:http://renyongjie668.blog.163.com/blog/static/1600531201143010295156/
3.编译内核:make -j4 (-j参数是可选的;其后的数字,有人推荐为CPU逻辑core数的2倍)
4.安装内核模块:make modules_install #内核模块复制到/lib/modules/<kernel-version>/目录下。
5.安装内核:make install #a.复制内核镜像bzImage文件到/boot,目录;b.生成initrd-<kernel-version>.img;配置grub等引导程序
6.重启进入新的内核(重启前可以先检查一下grub或者LILO有没有修改好,这是在make install中做的)
其实,编译内核中还有很多细节的东西,见如下参考文档吧,里面挺详细的:
编译 Linux2.6 内核总结: http://www.cublog.cn/u/13991/showart.php?id=79823
编译内核:http://my.chinaunix.net/space.php?uid=25806768&do=blog&id=302764
内核_.config 内核配置及Makefile:http://www.cnblogs.com/parrynee/archive/2010/05/13/1734689.html