linux 中的 zimage、uimage、vmlinuz


vmlinux是内核文件, zImage是一般情况下默认的压缩内核映像文件,压缩vmlinux,加上一段解压启动代码得到,只能从0X0地址运行。 uImage是u-boot使用bootm命令引导的Linux压缩内核映像文件格式, 使用工具mkimage对普通的压缩内核映像文件(zImage)加工而得。可以由bootm命令从任意地址解压启动内核。 由于bootloader一般要占用0X0地址,所以,uImage相比zImage的好处就是可以和bootloader共存。 制作uImage的mkimage软件,如果uClinux-dist有的话,一般放在uClinux-dist的tools目录中

vmlinuz是可引导的、压缩的内核。“vm”代表“Virtual Memory”。Linux 支持虚拟内存,不像老的操作系统比如DOS有640KB内存的限制。Linux能够使用硬盘空间作为虚拟内存,因此得名“vm”。vmlinuz是可执行的Linux内核,它位于/boot/vmlinuz,它一般是一个软链接。

bzImage是压缩的内核映像,需要注意,bzImage不是用bzip2压缩的,bzImage中的bz容易引起误解,bz表示“big zImage”。 bzImage中的b是“big”意思。

zImage(vmlinuz)和bzImage(vmlinuz)都是用gzip压缩的。它们不仅是一个压缩文件,而且在这两个文件的开头部分内嵌有gzip解压缩代码。所以你不能用gunzip 或 gzip –dc解包vmlinuz。

内核文件中包含一个微型的gzip用于解压缩内核并引导它。两者的不同之处在于,老的zImage解压缩内核到低端内存(第一个640K),bzImage解压缩内核到高端内存(1M以上)。如果内核比较小,那么可以采用zImage 或bzImage之一,两种方式引导的系统运行时是相同的。大的内核采用bzImage,不能采用zImage。

vmlinux是未压缩的内核,vmlinuz是vmlinux的压缩文件。

vmlinux 是ELF文件,即编译出来的最原始的文件。 
vmlinuz应该是由ELF文件vmlinux经过OBJCOPY后,并经过压缩后的文件 
zImage是vmlinuz经过gzip压缩后的文件,适用于小内核
bzImage是vmlinuz经过gzip压缩后的文件,适用于大内核

通常情况下是不能用vmlinuz解压缩得到vmlinux的

readelf    -- 显示elf格式文件信息 。  反汇编等
objdump    -- 显示object格式文件信息  例如反汇编
objcopy    -- 复制object文件段落,生成新的object文件。 可用于copy remove 一个object文件的某个段。
nm         -- 列出object 文件的符号信息

gcc      根据c文件,编译得到object文件
ld       连接 object文件,得到elf格式可执行文件


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值