1.清除临时文件、中间文件和配置文件
make clean
移除所有产生的文件并保留配置文件
make mrproper
移除所有产生的文件和配置文件
make distclean
移除所有产生的文件和配置文件,以及编辑备份和补丁文件
2.配置内核
make config:基于文本模式的交互式配置
make menuconfig:基于文本模式的菜单型配置
make oldconfig:使用已有的配置文件(.config),但是询问新增的配置选项
make xconfig:图形化的配置(需安装图形化系统)
内核的配置通常在一个已有的配置文件基础上,通过修改得到新的配置文件,linux内核提供了一系列可供参考的内核配置文件,位于arch/<cpu>/configs/目录下
Linux系统内核配置在/boot/目录下,可以将该目录下系统内核配置赋值到内核源码主目录下,改名为.config,即可使用系统内核的配置。
3.编译内核
make zImage
make bzImage
区别:在X86平台,zImage只能用于小于512k的内核
编译好的内核位于arch/<cpu>/boot/目录下
4.编译内核模块
make modules
5.安装内核模块
make modules_install
将编译好的内核模块从内核源代码目录copy至/lib/modules下
6.制作init ramdisk
mkinitrd initrd-$version $version
例:
mkinitrd initrd-2.6.29 2.6.29
$version可以通过查询/lib/modules下的目录得到
7.内核安装(X86平台)
a.cp arch/x86/boot/bzimage /boot/vmlinuz-$version
b.cp $initrd /boot/
c.修改/etc/grub.conf或者/etc/lilo.conf
$ version为所编译的内核版本号
1.内核的配置:
在linux内核源码目录下arch/arm/configs中包含各种cpu型号的默认配置文件,可以将某一款cpu的默认配置文件拷贝到内核源码目录下,并改名为.config,然后使用make menuconfig,保存配置。以后需要配置内核,就可以找到这样一个demo,然后根据自己的需要进行修改。
2.内核的编译:第一种,直接使用命令,进行编译,比较麻烦。make zImage ARCH=arm CROSSCOMPILE=arm-cortex_a8-linux-gnueabi-,其中ARCH指定的是采用arm架构进行编译内核,CROSSCOMPILE指定使用的交叉编译器,因为内核是在x86平台上进行编译,但最终运行在arm平台上的。需要注意的是,编译内核时需要在源码的目录下输入命令,还有交叉编译器的名称为arm-cortex_a8-linux-gnueabi-gcc,但是在指定时只写除去gcc的前面的名称。
第二种,修改内核源码目录下的makefile文件,在文件190行(linux-2.6.35.tar.bz2)开始,在文件中指定进行编译内核架构,使用的交叉编译器。
export KBUILD_BUILDHOST := arm
ARCH ?= arm
CROSS_COMPILE ?= arm-cortex_a8-linux-gnueabi-
然后运行make zImage命令即可编译内核
3.make modules 编译模块
内核编译结束后,在源代码的根目录下会得到未压缩的内核映像vmlinux和内核符号表文件System.map,在arch/arm/boot/目录会得到压缩的内核映像zImage,在内核各对应目录得到选中的内核模块。
4.在源码arch/arm/目录下的Kconfig文件中定义了make menuconfig所生成的菜单,可以修改此文件,在文件中196行(即menu "System Type")前面添加如下代码,可以自定义内核配置菜单。
效果如下图:
###############################
#菜单的名称
menu "this is a menu option test"
#第一个配置选项
config config1
bool "this is config1" #输入提示
help
this help1
#定义一个选择群
choice
prompt "please choice" #输入提示
default config3 #默认选择config3
#第一个选择项
config config2
bool "this is config2"
help
this help2
#第二个选择项
config config3
bool "this is config3"
help
this help3
endchoice
endmenu
###############################
一、根文件系统的制作:
详细参考:如何制作根文件系统.pdf
大概介绍:
1.需要/etc下fstab、inittab、profile,以及etc/init.d/rcS文件;fstab文件系统的挂载,inittab初始化表,profile命令行提示符格式及用户权限配置,rcS配置用于mdev自动创建节点文件
2.程序运行所依赖的库文件在/lib,/dev下的console和null节点文件;
3.另外所有的shell命令和根目录下的linuxrc由busybox编译生成,linuxrc是用来初始化系统的一个简单的启动脚本程序。
总结:根文件系统的制作与硬件无关,所以对于任何一个平台上运行的linux内核系统,都适用同一个根文件系统。除此以外,根文件系统大致结构也比较固定,制作根文件系统时,只需要将固定的几个文件拷贝到新的文件系统,并建立好相关目录就可以了。将文件系统制作成相应的文件系统格式烧写入nandflash指定分区,设置bootloader环境变量,就可以使用制作好的根文件系统了。