嵌入式系统构建之
2440
开发板内核制作,目地是让大家学会嵌入式内核的配置与编译,学习时应注意与前面
X86
平台内核制作做对比。比如,从生成的镜像上来看,在
pc
的
x86
平台下,我们生成的是
bzImage
、这里我们生成的是
uImage
,它们有什么联系?下面来讨论一下这几种镜像之间的关系:
zImage
与
uImage
zImage
是
ARM Linux
常用的一种压缩映像文件,
uImage
是
U-boot
专用的映像文件,它是在
zImage
之前加上一个长度为
0x40的
“
头
”
,说明这个映像文件的类型、加载位置、生成时间、大小等信息。换句话说,如果直接从
uImage
的
0x40
位置开始执行,zImage和
uImage
没有任何区别。
zImage
与
bzImage
bzImage
是压缩的内核映像,需要注意,
bzImage
不是用
bzip2
压缩的,
bzImage
中的
bz
容易引起
误解,
bz
表示
“big zImage”
。
bzImage
中的
b
是
“big”
意思。
zImage(vmlinuz)
和
bzImage(vmlinuz)
都是用
gzip
压缩的。它们不仅是一个压缩文件,而且在这两个文件的开头部分内嵌有
gzip
解压缩代码。所以你不能用
gunzip 或
gzip –dc
解包
vmlinuz
。
vmlinuz
与
vmlinux
vmlinuz
是可引导的、压缩的内核。
“vm”
代表
“Virtual Memory”
。
Linux 支持虚拟内存,不像老的操作系统比如
DOS
有
640KB内存的限制。
Linux
能够使用硬盘空间作为虚拟内存,因此得名
“vm”
。
zImage
和
bzImage
是
vmlinuz
的存在形式,在
x86
系统中,我们是直接通过将
bzImage
拷贝为
/boot/vmlinuz
获得
vmlinuz
的。
vmlinux 是
ELF
文件,即编译出的最原始的文件,或者称之为基本内核。
vmlinuz
(
zImage
或
bzImage
)是由
ELF
文件
vmlinux经过
objcopy
后得到
binary
文件
Image
,再经过压缩后的文件。