嵌入式Linux中几种image的区别
vmlinux 编译出来最原始的内核文件,未经压缩。
zImage 由 vmlinux 经过 gzip 压缩而得。
zImage 是由压缩后的 vmlinux 和解压缩程序组成。bzImage bz表示“big zImage”,不是用bzip2压缩的。
zImage 和 bzImage 的区别在于,zImage 解压缩内核到低端内存(第一个640KB),bzImage解压缩内核到高端内存(1MB以上)。如果内核比较小,那么采用 zImage 或 bzImage 都行,如果比较大应该用 bzImage。
uImage U-Boot专用的映像文件。
uImage 是在 zImage 之前加上一个长度为 0x40 的 tag (64个字节,说明这个image文件的类型、加载位置、生成时间、大小等信息)。其实就是一个自动跟手动的区别,有了 uImage 头部的描述,uboot 就知道对应 image 的信息,如果没有头部则需要自己手动设置这些参数。换句话说,如果直接从 uImage 的 0x40 位置开始执行,zImage 和 uImage 没有任何区别。
生成 uImage 需要用到 mkimage 工具,它位于相应版本的 uboot 源码根目录下的 tools 目录下,将 mkimage 复制到系统环境变量 bin 目录下。然后在内核目录下运行“make uImage”,我们发现 uImage 的大小比 zImage 多64个字节。
vmlinuz 是 bzImage/zImage 文件的拷贝或指向 bzImage/zImage 的链接。
initrd 是“initial ramdisk”的简写。一般被用于临时引导硬件到实际内核 vmlinuz 能够接管并继续引导的状态。
一般情况下,在生成 vmlinux 后,再对内核映像进行压缩成为 zImage 或 uImage,压缩的后的内核映像位于 arch/$(ARCH)/boot 目录下面。
嵌入式开发,一般下载到 flash 中的是 zImage 或 uImage,zImage 可由 uboot 命令 bootzImage 引导,uImage 则可由 bootm 引导。
假设内存映射的基址是 0x3000 0000 ,我们通过设置 bootcmd 为“ tftp 0x30008000 uImage; bootm 0x300080000”来下载并启动内核映像,那么 0x30008000 又是如何来的呢?这32KB(0x8000)的空间有什么用?
在内核文件 arch/arm/mach-s5pv210/Makefile.boot 中,有如下描述:
zreladdr-y += 0x30008000#内核自解压缩后的释放地址
params_phys-y := 0x30000100#内核启动参数的存放地址,
嵌入式Linux中几种image的区别相关推荐
- Linux 中三种引号(单引号、双引号、反引号)的区别
1.双引号 保护特殊元字符和通配符不被 shell 解析,但是允许变量和命令的解析,以及转义符的解析. 2.单引号 单引号内不允许任何变量.元字符.通配符.转义符被 shell 解析,均被原样输出. ...
- 嵌入式Linux中的根文件系统
以下内容转载于http://mp.weixin.qq.com/s/O6MklgKekSc9gbM7zQSMEQ,有删改. 一. 首先要明白的是"什么是文件系统?",文件系统是对一个 ...
- 对嵌入式Linux中的根文件系统的理解和解析
虽然前面已经利用Busybox制作了根文件系统,但是对于根文件系统的作用和普通的文件系统之间的区别还是有点模糊.通过查找资料总结了一 下对根文件系统的理解,也欢迎大家一起讨论. 首先要明白的是& ...
- linux中vmlinux, zImage, Image的区别
一.Linux内核镜像格式 这几种文件都是Linux内核镜像格式,Linux内核有多种格式的镜像,包括:vmlinux.Image.zImage.bzImage.uImage.xipImage.boo ...
- Linux 中su 与su - 的区别
Linux 中su 与su - 的区别 一.区别 Linux 中切换用户的命令是 su 或 su - . su命令和 su - 命令最大的本质区别就是: 前者只切换了root身份 , 但是shell环 ...
- Linux中EXT3与EXT4的区别!
在Linux系统中,日志文件系统分为很多种类型,其中比较典型的是:ext3.ext4.xfs等,那么Linux中EXT3与EXT4的区别有哪些?以下是详细的内容介绍. Linux Kernel自2.6 ...
- 嵌入式Linux中摄像头使用简要整理
原文地址为: 嵌入式Linux中摄像头使用简要整理 本文涉及软硬件平台: 开发板:飞凌OK6410 系统:Ubuntu 12.04+飞凌官方3.0.1 嵌入式Linux还处在入门阶段,主要方向是嵌入式 ...
- Linux中线程和进程的区别
Linux中线程和进程的区别 进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,它是系统进行资源分配和调度的一个独立单位.例如,用户运行自己的程序,系统就创建一个进程,并为它分配资源,包括 ...
- linux卸载cf卡命令,嵌入式Linux 中CF卡的驱动和管理技术研究
在嵌入式Linux系统中,为了在没有PCMCIA控制器的情况下仍然要利用CompactFlash存储卡(简称CF卡)作为存储设备,作者从CF卡的硬件特性入手,在系统层基于CF卡的memory寻址访问方 ...
最新文章
- pandas dataframe bool索引的使用
- Vertica的这些事lt;十一gt;—— Vertica 管理
- 如何破解root以及grub密码
- 2011寒假-操作系统学习笔记
- Swift 扩展存储属性
- 0040-如何重置Cloudera Manager的admin密码
- 工作问题之:redis 保存快照问题
- 用 Spring Boot 纯手工打造私人云网盘!!!
- 使用ABAP代码获得tcode RZ11里的参数值
- 什么90%的人,自学python都不能学会,原来问题出在这,赶紧看看!
- Java8之Stream详解
- 华景机器人怎么控制_【扫地机器人选购】支持华为hilink智能家居联动/支持华为小艺语音控制的扫地机器人...
- 分享110个ASP源码,有一款适合你
- 百度网盘——下载限速问题解决方案(油猴(Tampermonkey)+百度网盘直链下载助手+IDM)
- 51nod 1556 计算(默慈金数)
- OpenCV:minMaxLoc vs minMaxIdx
- Oracle学习笔记4
- Android手摸手实现一个画板功能(一)——View的拖拽
- 谈谈Word2Vec的CBOW模型
- 探讨select in 在postgresql的效率问题