linux uImage/zImage生成过程
uImage是zImage通过mkimage工具(在u-boot代码的tools目录中)在前面加了一个64Byte的头生成的。
/usr/bin/mkimage也可以用来生成uImage.
也可以直接在Image(未压缩)的基础上加64Byte的头生成uImage, 如下修改。
linux-3.18.19/arch/arm/boot/Makefile:
@$(check_for_multiple_loadaddr)
$(call if_changed,uimage)
@$(kecho) ' Image $@ is ready'
@cp $@ $(KBUILD_OUTPUT)/
$(call if_changed,uimage)命令,参考 scripts/Makefile.lib中的cmd_uimage
341 # U-Boot mkimage
342 # ---------------------------------------------------------------------------
343
344 MKIMAGE := $(srctree)/scripts/mkuboot.sh
345
346 # SRCARCH just happens to match slightly more than ARCH (on sparc), so reduces
347 # the number of overrides in arch makefiles
348 UIMAGE_ARCH ?= $(SRCARCH)
349 UIMAGE_COMPRESSION ?= $(if $(2),$(2),none)
350 UIMAGE_OPTS-y ?=
351 UIMAGE_TYPE ?= kernel
352 UIMAGE_LOADADDR ?= arch_must_set_this
353 UIMAGE_ENTRYADDR ?= $(UIMAGE_LOADADDR)
354 UIMAGE_NAME ?= 'Linux-$(KERNELRELEASE) - OmniVision ASIC'
355 UIMAGE_IN ?= $<
356 UIMAGE_OUT ?= $@
357
358 quiet_cmd_uimage = UIMAGE $(UIMAGE_OUT)
359 cmd_uimage = $(CONFIG_SHELL) $(MKIMAGE) -A $(UIMAGE_ARCH) -O linux \
360 -C $(UIMAGE_COMPRESSION) $(UIMAGE_OPTS-y) \
361 -T $(UIMAGE_TYPE) \
362 -a $(UIMAGE_LOADADDR) -e $(UIMAGE_ENTRYADDR) \
363 -n $(UIMAGE_NAME) -d $(UIMAGE_IN) $(UIMAGE_OUT)
scripts/mkuboot.sh:
1 #!/bin/bash
2
3 #
4 # Build U-Boot image when `mkimage' tool is available.
5 #
6
7 MKIMAGE=$(type -path "${CROSS_COMPILE}mkimage")
8 if [ -z "${MKIMAGE}" ]; then
9 MKIMAGE=$(type -path mkimage)
10 if [ -z "${MKIMAGE}" ]; then
11 # Doesn't exist
12 echo '"mkimage" command not found - U-Boot images will not be built' >&2
13 exit 1;
14 fi
15 fi
16
17 # Call "mkimage" to create U-Boot image
18 ${MKIMAGE} "$@"
scripts/mkuboot.sh
linux uImage/zImage生成过程相关推荐
- imx6q调试android7问题Unrecognized filesystem type Bad Linux ARM zImage magic!
在freescale imx6q板上移植android7到时遇到一个很麻烦的问题: 用mfgtools工具下载android镜像后,启动日志: U-Boot 2015.04-dirty (Aug 15 ...
- Linux-Android启动之zImage生成过程详解
可以看到,在顶层makefile的第278行,包含了scripts/Kbuild.include文件,在这里定义了大量的函数和变量,供顶层makefile和其他makefile文件使用. 在顶层m ...
- uImage zImage
在make内核的时候 在arch/arm/boot/目录下面 会同时生成zImage uImage两个文件 其中Image为内核映像文件,而zImage为内核的一种映像压缩文件,Image大约为4M, ...
- Linux内核映像vmlinux、Image、zImage、uImage区别
本文介绍几种常用的Linux内核映像的区别. 一.vmlinux vmlinux:Linux内核编译出来的原始的内核文件,elf格式,未做压缩处理. 该映像可用于定位内核问题,但不能直接引导Linux ...
- linux中Image、zImage、bzImage、uImage、vmlinux和vmlinux的区别
(1)vmlinux:是内核编译出来的原始的内核文件未经压缩的.是ELF格式的,即编译出来的最原始的文件.用于kernel-debug,产生system.map符号表,不能用于直接加载,不可以作为启动 ...
- 比较zImage和uImage的区别
一.vmlinuz vmlinuz是可引导的.压缩的内核."vm"代表"Virtual Memory".Linux 支持虚拟内存,不像老的操作系统比如DOS有6 ...
- U-boot mkimage指定Linux内核地址时的两种方式
uImage的制作是使用的u-boot工具mkimage,build完u-boot后也会将mkimage build出來到/tools目录下,可以直接拿來用,它的作用就是在zImage的前面加上64个 ...
- Arm Linux交叉编译和连接过程分析(2)
二.编译内核镜像过程 1.编译过程中涉及到到文件: /Makefile 编译产生顶层vmlinux镜像文件 /scripts/Kbuild.include make过程中到一些基本定义 /script ...
- Xilinx zynq-7000系列FPGA移植Linux操作系统详细教程
Xilinx zynq-7000系列FPGA移植Linux操作系统详细教程 一:前言 最近手上压了一块米联客的Miz7035,一块xilinx zynq-7000系列的开发板,想着正好学习一下linu ...
最新文章
- 改善用户体验之密码强度提示
- pytorch torch.cumsum(input, dim, out=None)函数(沿轴逐级累加)
- [codevs 1911] 孤岛营救问题
- C#程序中设置全局代理(Global Proxy)
- android studio 中 .9.png的制作
- MySQL数据库创建用户_修改用户_删除用户_设置用户
- *【牛客 - 301哈尔滨理工大学软件与微电子学院第八届程序设计竞赛同步赛(高年级)】小乐乐打游戏(bfs,双元bfs,思维)
- 国科大prml15-基于浅层模型的计算机视觉--以人脸识别为例
- MVVM模式的一个小例子
- 巨杉数据库 CTO 王涛:新一代分布式数据库
- 吴恩达《机器学习》第十一章:机器学习系统的设计
- BigDecimal参数8种舍入方式
- Maven pom.xml配置详解
- datatable java排序,Java实现DataTable的过滤,排序,聚合功能
- python删除指定路径文件_基于python实现删除指定文件类型
- 微软 Fluent 设计体系, Fluent UI
- 程序反编译找pdf打开密码_即时密码保护PDF文件的免费工具
- 皮尔逊、斯皮尔曼、肯德尔相关系数
- 图解yarn的作业提交流程
- response.sendRedirect 加域名或者不加域名的重定向加locahost或者不加localhost