四川华鸿建设有限公司网站,h5模板网站免费,开发客户的70个渠道,常州网上教科院1、Image
1.1 什么是 Image
Image 是一种未压缩的 Linux 内核镜像文件#xff0c;包含了内核的所有代码、数据和必要的元信息。它是 Linux 内核在编译过程中生成的一个原始的二进制文件#xff0c;未经过任何压缩或额外的封装处理。由于未压缩#xff0c;Image 文件相对较…1、Image
1.1 什么是 Image
Image 是一种未压缩的 Linux 内核镜像文件包含了内核的所有代码、数据和必要的元信息。它是 Linux 内核在编译过程中生成的一个原始的二进制文件未经过任何压缩或额外的封装处理。由于未压缩Image 文件相对较大但它不需要解压过程加载速度较快。
1.2 内部结构
头部包含基本的内核信息如内核版本、加载地址等用于引导加载程序识别。内核代码实际的 Linux 内核代码和数据段。内核数据初始化和常驻的数据段包括全局变量、静态变量等。
1.3 工作原理
引导加载程序如 U-Boot、GRUB 等从存储介质如 NAND Flash、SD 卡、硬盘等中读取 Image 文件。将 Image 文件加载到内存中的指定位置通常是 RAM。引导加载程序将控制权转交给 Image 的入口地址。内核开始执行初始化过程设置硬件和系统环境最终启动用户空间的操作系统。
1.4 编译生成Image
make ARCHarm CROSS_COMPILEarm-linux-gnueabihf- Image2、zImage
2.1 什么是 zImage
zImage 是一种经过压缩的 Linux 内核镜像格式它通过 gzip 压缩内核代码和数据使文件大小大大减小。zImage 也称为 “compressed kernel image”在加载时会自解压缩到内存中然后执行。
2.2 内部结构
解压缩头部包括解压缩代码和一个简单的引导程序用于引导和解压缩内核。压缩的内核代码和数据使用 gzip 压缩后的内核代码和数据。尾部校验和用于验证文件完整性。
2.3 工作原理
引导加载程序如 U-Boot 或其他加载器从存储介质中读取 zImage 文件。将 zImage 文件加载到内存中。解压缩头部代码运行解压缩内核到内存中的指定位置。内核解压完成后控制权转移到解压后的内核入口点开始内核初始化和启动过程。
2.4 编译生成 zImage
make ARCHarm CROSS_COMPILEarm-linux-gnueabihf- zImage3、uImage
3.1 什么是 uImage
uImage 是 U-Boot 引导加载程序专用的内核镜像格式。它是在 zImage 或 Image 的基础上加上一个 U-Boot 头部信息U-Boot Header使 U-Boot 能够识别并加载内核镜像。
3.2 内部结构
U-Boot Header一个 64 字节的头部信息其中头部包含的信息可看下文【Linux】uImage头部信息详细解析-CSDN博客内核镜像可以是 zImage、Image 或其他类型的镜像。
3.3 工作原理
U-Boot 读取 uImage 文件。U-Boot 解析头部信息验证镜像的合法性和完整性。将内核镜像加载到指定的内存地址。如果内核镜像是压缩的U-Boot 会解压缩它。将控制权交给内核的入口地址启动 Linux 内核。
3.4 编译生成 uImage
mkimage -A arm -O linux -T kernel -C gzip -a 0x8000 -e 0x8000 -n Linux Kernel -d zImage uImage-A目标架构ARM。-O操作系统Linux。-T镜像类型内核。-C压缩类型gzip。-a加载地址0x8000。-e入口点地址0x8000。-n镜像名称Linux Kernel。-d源文件zImage。