1 Linux内核镜像格式
Linux内核有多种格式的镜像,包括,Image,,,,,等。
1.1
VM 是可启动、可压缩的内核镜像。Linux 支持虚拟内存,因此得名 VM。它由用户从内核源代码编译而来,本质上是一个 ELF 格式的文件。换句话说,它是最原始的编译好的内核文件,未经压缩,而且比较大。这种格式的镜像文件大多存储在 PC 上,大约 50MB 左右。
ELF,即 ,是UNIX实验室发布的一种应用程序二进制接口,扩展名为elf。可以简单认为在elf格式的文件中,除了二进制代码外,还包含了可执行文件的一些信息,比如符号表等。
1.2
是可启动的压缩内核。“vm”代表“ ”。是可执行的 Linux 内核,位于 /boot/ 中,通常是软链接。有两种创建方法:
1.3 图像
Image是处理过的内核代码,只包含二进制数据,不再是elf格式,但是该格式的内核镜像还没有经过压缩。
GNU 实用程序用于将一个目标文件的内容复制到另一个目标文件,即将一种格式的目标文件转换为另一种格式的目标文件。通过将其用作输出目标 (-o),可以生成原始二进制文件,本质上丢弃所有符号和重定位信息,仅留下二进制数据。
1.4 和
是ARM linux常用的压缩镜像文件,采用gzip压缩,并附加解压代码,命令格式为make,此格式的Linux镜像文件大多存储在NAND上。
bz 代表 big。其格式与 类似,但使用不同的压缩算法。请注意 比 压缩程度更高。它不是用 bzip2 压缩的。bz 代表“big”。中的“b”代表“big”。
() 和 () 都使用 gzip 压缩。它们不仅是压缩文件,而且在两个文件的开头都嵌入了 gzip 解压缩代码。因此您无法使用或 gzip -dc 解压缩它们。
内核文件包含一个微小的 gzip 文件,用于解压内核并启动它。两者的区别在于,旧版将内核解压到低内存(前 640K),而将解压后的内核解压到高内存(1M 以上)。如果内核较小,则可以使用其中一种或两种方式,并且系统在两种方式启动时运行相同。大内核使用和不能使用。
1.5
它是uboot的一个特殊的镜像文件,在前面增加了一个64B的头信息(tag),头信息描述了镜像文件的类型、加载位置、生成时间、大小等信息。也就是说,如果直接从0x40位置开始执行的话,是没有任何区别的,命令格式为make。这种格式的Linux镜像文件大多存储在NAND上。64字节的头结构如下:
typedef struct image_header
{
uint32_tih_magic;
uint32_tih_hcrc;
uint32_tih_time;
uint32_tih_size;
uint32_tih_load;
uint32_tih_ep;
uint32_tih_dcrc;
uint8_tih_os;
uint8_tih_arch;
uint8_tih_type;
uint8_tih_comp;
uint8_tih_name[IH_NMLEN];
} image_header_t;
因此, 和 都是压缩的内核镜像,而是使用工具生成的,工具介绍如下: 使用u-boot中的工具生成(u-boot源码包/tools/.c )
命令:-l [文件名]
[] -f [映像树文件] [文件名]
[] -F [文件名]
[] ( 模式)
描述:命令用于创建与 U-Boot 引导加载程序一起使用的图像。这些图像可以包含 Linux 内核、设备树 blob、根文件系统图像、固件图像等,并且可以单独使用或组合使用。支持两种不同的格式:
选项说明
l [[u]图像文件名]
显示[]中的头信息
塑造传统形象
-A []
建立系统架构。
-O [操作系统]
设置操作系统。u-boot的bootm命令根据OS类型改变启动方式。
-T [图像类型]
设置镜像类型。
-C [ 类型 ]
设置压缩类型。
-a [加载]
设置十六进制加载地址
-e [入口点]
设置十六进制入口点
-n [图像名称]
设置图像名称
-d [图像数据文件]
使用镜像数据源
-x
扫一扫在手机端查看
-
Tags : 内存镜像文件格式
我们凭借多年的网站建设经验,坚持以“帮助中小企业实现网络营销化”为宗旨,累计为4000多家客户提供品质建站服务,得到了客户的一致好评。如果您有网站建设、网站改版、域名注册、主机空间、手机网站建设、网站备案等方面的需求,请立即点击咨询我们或拨打咨询热线: 13761152229,我们会详细为你一一解答你心中的疑难。