作业一:
1、采用下表所示的两种内核配置,编译Linux内核(2.6以上版本),并比较产生的映像文件zImage的大小。
配置1 | 配置2 | |
网络 | 支持TCP/IP协议,ppp协议,防火墙 | 仅支持TCP/IP协议 |
文件系统 | 支持FAT,Ext2, | 仅支持Ext2 |
USB接口 | 支持 | 不支持 |
1.准备工作:
①将linux-2.6.32.2-mini2440-20110413.tar进行解压,并进入解压后文件linux-2.6.32.2
②修改makefile文件,修改ARCH、CROSS_COMPILE
③清除原厂配置
④配置内核产生.config文件
⑤输入内核配置命令,进入配置内核界面
二、配置1
1、开启TCP/IP
2、开启防火墙
3、开启EXT2
4、开启FAT
5、开启USB
6、生成镜像文件zImage (书本是make uImage)
三、配置2
1、关闭防火墙
2、关闭FAT
3、关闭USB
执行make Image命令生成镜像文件
比较两次产生的镜像文件
实验结论与体会
本次实验基于linux-2.6.32.2-mini2440-20110413.tar并成功进行两种内核配置,编译并比较产生的映像文件zImage和Image的文件体积。支持的功能越全面,相应内核体积也会增大。
linux内核经过编译后会生成一个elf格式的可执行程序,叫vmlinux或vmlinuz,这个就是原始的未经任何处理加工的原版内核elf文件;
嵌入式系统部署时烧录的一般不是这个vmlinuz/vmlinux,而是要用objcopy工具去制作成烧录镜像格式,经过制作加工成烧录镜像的文件就叫Image(这个制作烧录镜像主要目的就是缩减大小,节省磁盘)。
原则上Image就可以直接被烧录到Flash上进行启动执行(类似于u-boot.bin),但是实际上并不是这么简单。
实际上linux的作者们觉得Image还是太大了所以对Image进行了压缩,并且在image压缩后的文件的前端附加了一部分解压缩代码,构成了一个压缩格式的镜像就叫zImage。解压的时候,通过zImage镜像头部的解压缩代码进行自解压,然后执行解压出来的内核镜像。