如果您无法下载资料,请参考说明:
1、部分资料下载需要金币,请确保您的账户上有足够的金币
2、已购买过的文档,再次下载不重复扣费
3、资料包下载后请先用软件解压,在使用对应软件打开
第6章嵌入式Linux系统构建6.1Linux内核的裁剪和编译Linux内核裁剪的目的是根据应用的需要,裁剪掉嵌入式应用中不需要的功能和代码,留下必要的功能和代码,可以减小内核尺寸,较少存储器需求,降低嵌入式系统功耗,教学系统体积。内核裁减集的原理是打开一个菜单,让开发人员在其中选择所需要的功能、特色、配置和参数,配置工具为选择的功能定义相应的C语言宏,并通过编译命令的-D选项传给内核源程序,内核源代码中对宏定义进行检查,使用条件编译的手段,将对仅需要的特色和功能进行编译,生成内核,而未选择的功能和特色则不进行编译,从而达到裁剪内核的目的。Linux内核的裁剪工作包括内核配置、内核编译、根文件系统构建等工作,具体过程介绍如下。6.1.1重新编译生成一个新的X86系统内核(1)将新下载的内核源码复制到/usr/src目录并配置内核相关信息1)复制内核源码到/usr/src目录:#cplinux-2.4.20.bz2/usr/src/#cd/usr/src#tarzfvjlinux-2.4.20.bz2#ln-slinux-2.4.20linux#cdlinux或#cd/usr/src/linux-2.4.20-82)清理源代码树#makemrpropermakemrproper命令会删除所有的编译生成文件、内核配置文件(.config文件)和各种备份文件,所以几乎只在第一次执行内核编译前才用这条命令。3)进入menuconfig配置菜单:#makemenuconfig进入基于ncurses文本模式图形用户配置界面,该方法不需调用XWindow,兼容性和适用性好,操作简单,使用方便。而makeconfig则采用对每个配置选项进行单独询问和回答模式,使用麻烦,效率低;makexconfig要求基于XWindows图形库,界面美观,但有时存在兼容性问题。(2)编译生成新的内核1)删除以前编译生成各种.o目标文件,但保留内核的配置文件.config#makeclean2)对内核配置阶段选择的功能和特色进行依赖关系分析,这些功能运行所需要的特色和代码添加到裁剪后的内核中。#makedep3)编译新内核和内核模块#makezImage4)编译可加载模块(即内核选项中选择为M的选项),编译时间跟M选项的数量有关,并将编译好的modules拷贝到/lib/modules下。#makemodules#makemodules_inatall(4)最终生成的压缩映像的路径arch/i386/boot/zImage(5)用新的内核启动Linux1)将新内核复制到/boot目录#cp/usr/src/linux/arch/i386/boot/bzImage/boot/vmlinuz-x.y.z2)将启动映象文件复制到/boot目录#cp/usr/src/linux/System.map/boot/System-x.y.z.map3)修改启动设置文件目前大多数使用的都是grub启动,需要修改/boot/grub/grub.conf,添加相应的启动信息,添加内容的最简单格式如下:title显示在启动菜单上的名称root根文件系统挂载分区kernel压缩过的内核文件名initrd根文件系统文件名如:titleMynewkernelroot(hd0,2)kernel/boot/vmlinuz-x.y.zinitrd/boot/initrd-x.y.z.img6.1.2重新编译生成一个新的ARM系统内核(1)按照ARM嵌入式系统的软硬件配置和功能进行内核配置1)进入ARM内核所在目录#cd/arm2410s/kernel-2410s2)进入menuconfig配置菜单,配置内核,进行所需的更改之后,按Esc键退出界面并保存。#makemenuconfig(2)编译生成新的内核1)删除以前编译生成各种.o目标文件,但保留内核的配置文件.config#makeclean2)对内核配置阶段选择的功能和特色进行依赖关系分析,这些功能运行所需要的特色和代码添加到裁剪后的内核中。#makedep3)编译新内核和内核模块#makezImage#makemodules(4)最终生成的压缩映像的路径arch/arm/boot/zImage6.2根文件系统的制作6.2.1根文件系统的结构根文件系统包括支持Linux正常运行所需的程序和数据,如系统命令文件、运行库、系统进程代码和配置文件,包括:基本文件系统结构:/dev,/proc,/bin,/etc,/lib,/usr,/tmp,/var,/home,/mnt基本程序运行所需函数库:g