由于是初次系统的学习Linux内核,过程中遇到了一些经常出现的名词。似曾相识,但对他们的含义又不是很清楚。因此,将搜索到的内容进行一下汇总。
1.vmlinux
vmlinux是一个包含linux kernel的静态链接的可执行文件,文件类型是linux接受的可执行文件格式之一(ELF、COFF或a.out)。
2.vmlinuz
vmlinuz是可引导的,压缩的linux内核,“vm”代表的“virtual memory”。vmlinuz是vmlinux经过gzip和objcopy(*)制作出来的压缩文件。vmlinuz不仅是一个压缩文件,而且在文件的开头部分内嵌有gzip解压缩代码。所以你不能用gunzip 或 gzip –dc解包vmlinuz。
vmlinuz是一个统称,有两种具体的表现形式:zImage和bzImage(big zImage)。
zImage和bzImage的区别在于本身的大小和加载到内存的地址不同。zImage是0~640KB,bzImage是1M以上。如果内核比较小,那么可以采用zImage 或bzImage之一,两种方式引导的系统运行时是相同的。大的内核采用bzImage,不能采用zImage。
3. 综述
总结起来就是如下的几句话:
vmlinux 是ELF文件,即编译出来的最原始的文件。
vmlinuz应该是由ELF文件vmlinux经过OBJCOPY后,并经过压缩后的文件
zImage是vmlinuz经过gzip压缩后的文件,适用于小内核
bzImage是vmlinuz经过gzip压缩后的文件,适用于大内核
vmlinuz应该是由ELF文件vmlinux经过OBJCOPY后,并经过压缩后的文件
zImage是vmlinuz经过gzip压缩后的文件,适用于小内核
bzImage是vmlinuz经过gzip压缩后的文件,适用于大内核
*objcopy:将一种目标文件的内容复制到另一种目标文件中。
转自:http://blog.csdn.net/tuzhutuzhu/article/details/26174431