uImage和zImage的区别

1、各种文件的意义

vmlinux  编译出来的最原始的内核文件,未压缩。

zImage   是vmlinux经过gzip压缩后的文件。

bzImage bz表示“big zImage”,不是用bzip2压缩的。两者的不同之处在于,zImage解压缩内核到低端内存(第一个640K),bzImage解压缩内核到高端内存(1M以上)。如果内核比较小,那么采用zImage或bzImage都行,如果比较大应该用bzImage。

uImage   U-boot专用的映像文件,它是在zImage之前加上一个长度为0x40的tag。

vmlinuz  是bzImage/zImage文件的拷贝或指向bzImage/zImage的链接。

initrd   是“initial ramdisk”的简写。一般被用来临时的引导硬件到实际内核vmlinuz能够接管并继续引导的状态。

2、zImage和uImage的区别

vmlinux是内核文件,zImage是一般情况下默认的压缩内核映像文件,压缩vmlinux,加上一段解压启动代码得到。而uImage则是使用工具mkimage对普通的压缩内核映像文件(zImage)加工而得。它是uboot专用的映像文件,它是在zImage之前加上一个长度为64字节的“头”,说明这个内核的版本、加载位置、生成时间、大小等信息;其0x40之后与zImage没区别。其实就是一个自动跟手动的区别,有了uImage头部的描述,u-boot就知道对应Image的信息,如果没有头部则需要自己手动去搞那些参数。如何生成uImage文件?首先在uboot的/tools目录下寻找mkimage文件,把其copy到系统/usr/local/bin目录下,这样就完成制作工具。然后在内核目录下运行make uImage,如果成功,便可以在arch/arm/boot/目录下发现uImage文件,其大小比 zImage多64个字节。此外,平时调试用uImage,不用去管调整了哪些东西;zImage则是一切OK后直接烧0X0。开机就运行。

3、uboot启动zImage(go)和uImage(bootm)分析 

1.bootm加载linux镜像是加载uIamge,uIamge是由mkimage制作而来,和zIamge的差异是uIamge是zIamge压缩过的,bootm需要先对uIamge解压,解压地址为内核入口地址。当解压完成时uImage和zImage几乎是相同的,具体差异可以论述。uboot目前只能支持uImage启动,不支持zImage启动 2.bootm解压过程  ---------------------------------------------------------------------------  ## Booting image at 08808000 ...  Image Name:   Linux-2.6.14.7  Image Type:   ARM Linux Kernel Image (uncompressed)  Data Size:    989172 Bytes = 966 kB  Load Address: 08008000  Entry Point:  08008000  Verifying Checksum ... OK  OK                                         uboot bootm命令对uIamge的解压操作  ---------------------------------------------------------------------------  Starting kernel ...    

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏数据之美

一次小折腾:PyCharm 调用 Cygwin Python 找不到 time、sys 等内置模块

1、需求背景 为什么要这样干呢?因为 Python 虽然号称跨平台,但是一些和操作系统相关的函数 API,windows 下也还是只能干瞪眼用不了,比如 imp...

34210
来自专栏進无尽的文章

扒虫篇-Bug日志Ⅴ

解决方法:首先这个警告不会造成上传失败,也不会造成审核被拒。其次可以通过移除代码中警告的那些代码,并移除多余不使用的系统类库(framework),使警告消失。

731
来自专栏.NET技术

Visual Studio Package 插件开发

  这段时间公司新做了一个支付系统,里面有N个后台服务,每次有更新修改,拷贝打包发布包“不亦乐乎”。。。于是我想要不要自己定制个打包插件。

673
来自专栏Golang语言社区

Go和HTTPS -2

F为签名函数。CA自己的私钥是唯一标识CA签名的,因此CA用于生成数字证书的签名函数一定要以自己的私钥作为一个输入参数。在RSA加密 系统中,发送端的解密函数就...

3647
来自专栏张戈的专栏

服务器反爬虫攻略:Apache/Nginx/PHP禁止某些User Agent抓取网站

我们都知道网络上的爬虫非常多,有对网站收录有益的,比如百度蜘蛛(Baiduspider),也有不但不遵守 robots 规则对服务器造成压力,还不能为网站带来流...

4125
来自专栏三杯水

Nginx反向代理负载均衡配置梳理大全

利用ngx_http_core_module、ngx_http_rewrite_module模块 主要是301跳转 Return写法:域名http请求跳转到...

331
来自专栏逸鹏说道

SQLServer执行命令出现“目录无效的提示”

异常处理汇总-数据库系列 http://www.cnblogs.com/dunitian/p/4522990.html ? 一般都是清理垃圾清理过头了,把不该...

3457
来自专栏DannyHoo的专栏

友盟推送使用别名(Alias)推送到具体用户

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u010105969/article/details/...

895
来自专栏pangguoming

门罗币(MONERO)钱包生成教程

一、下载钱包 钱包下载地址:https://getmonero.org/downloads/(如果下载缓慢请使用下载工具下载) ? 二、图形界面钱包生成 解压运...

7234
来自专栏云鼎实验室的专栏

Hadoop Yarn REST API未授权漏洞利用挖矿分析

6706

扫描关注云+社区