U-Boot是一种开源的引导加载程序
,可以从多种外部存储设备中加载Linux内核镜像。在编译U-Boot时,它将生成一个elf格式的可执行程序,称为u-boot。这种格式类似于Windows下的exe格式,在Linux下可以直接运行,但不能用于烧录下载。因此,需要使用某种二进制转换工具将u-boot转换为u-boot.bin,这个文件就是最终要烧写到开发板中的镜像。
当涉及到Linux内核时,经过编译生成的原始、未经处理加工的内核elf文件有两个版本:vmlinux和vmlinuz
。与此同时,针对嵌入式系统部署的需求,制作镜像(即烧录到启动介质中的文件)需要使用某种二进制转换工具将vmlinux/vmlinuz生成烧录镜像格式的Image。由于Image文件的大小往往太大,因此开发人员们会采用压缩技术以减小Image文件的大小,并在前端附加解压缩代码,形成zImage
压缩格式的镜像。
为了启动Linux内核,还需使用另一种内核格式——uImage
。uImage是由zImage加工得到的,UBOOT中提供了mkimage工具来将zImage转换成uImage,该转换过程实际上是在zImage的前面加上了64字节的uImage头信息
。总体上,为了正确启动U-Boot并加载Linux内核镜像,需要根据具体情况选择特定的镜像格式,并进行相应的转换和配置。但总的来说,所有的U-Boot都支持uImage启动,而一些版本还可以支持zImage启动。