编译kernel:make Image uImage与zImage的区别

make Image uImage与zImage的区别  http://blog.chinaunix.net/uid-25322094-id-3589796.html

内核编译(make)之后会生成两个文件,一个Image,一个zImage,其中Image为内核映像文件,而zImage为内核的一种映像压缩文件,Image大约为4M,而zImage不到2M。

    那么uImage又是什么的?它是uboot专用的映像文件,它是在zImage之前加上一个长度为64字节的“头”,说明这个内核的版本、加载位置、生成时间、大小等信息;其0x40之后与zImage没区别。

     如 何生成uImage文件?首先在uboot的/tools目录下寻找mkimage文件,把其copy到系统/usr/local/bin目录下,这样就 完成制作工具。然后在内核目录下运行make uImage,如果成功,便可以在arch/arm/boot/目录下发现uImage文件,其大小比 zImage多64个字节。

其实就是一个自动跟手动的区别,有了uImage头部的描述,u-boot就知道对应Image的信息,如果没有头部则需要自己手动去搞那些参数。

U-boot的U是“通用”的意思。

zImage 是ARM Linux常用的一种压缩映像文件,uImage是U-boot专用的映像文件,它是在zImage之前加上一个长度为0x40的“头”,说明 这个映像文件的类型、加载位置、生成时间、大小等信息。换句话说,如果直接从uImage的0x40位置开始执行,zImage和uImage没有任何区 别。另外,Linux2.4内核不支持uImage,Linux2.6内核加入了很多对嵌入式系统的支持,但是uImage的生成也需要设置。
时间: 2024-11-08 03:59:14

编译kernel:make Image uImage与zImage的区别的相关文章

hi3531 SDK 编译 kernel, 修改 参数 .

开发环境用户指南上这么写的 3.1 内核源代码 成功安装Hi3531 SDK后,内核源代码已存放于SDK目录下的osdrv/目录中,用户可 直接进入目录进行相关操作. 3.2 配置内核 如果对内核和Hi3531平台没有足够了解,请勿修改默认配置.但可增加需要的模块. 配置内核的操作步骤如下: 1.  手动拷贝.config 文件: hisilicon$cd os/linux-3.0.y hisilicon$cp arch/arm/configs/godnet_defconfig .config/

bootloader和kernel配合启动过程/编译bootloader/编译kernel

bootloader和kernel配合启动过程 -------------------------------------------- ARM9的板子有norflash芯片,存储基本的bootlader代码,此处为cpu执行代码的0地址.cpu内部的4kRam空间充当此时的栈和数据段存储.因为是三星公司自己做的芯片,故硬件上面可以实现将nandflash前4K的代码自动拷贝到iRam中(实现方式没有公开,只要能够理解工作方式即可).只需要将bootloader的后续代码放到内存sdram中即可

uImage、zImage、bzImage、vlinzx区别

在网络中,不少服务器采用的是Linux系统.为了进一步提高服务器的性能,可能需要根 据特定的硬件及需求重新编译Linux内核.编译Linux 内核,需要根据规定的步骤进行,编译内核过程中涉及到几个重要的文件.比如对于RedHat Linux,在/boot目录下有一些与Linux内核有关的文件 . 编译过RedHat Linux内核的人对其中的System.map.vmlinuz.initrd-2.4.7-10.img印象可能比较深刻,因为编译内核过程中涉及到这些文件的建立等操作.那么这几个文件是

uImage、zImage、bzImage、vlinzx区别(转)

在网络中,不少服务器采用的是Linux系统.为了进一步提高服务器的性能,可能需要根据特定的硬件及需求重新编译Linux内核.编译Linux 内核,需要根据规定的步骤进行,编译内核过程中涉及到几个重要的文件.比如对于RedHat Linux,在/boot目录下有一些与Linux内核有关的文件 . 编译过RedHat Linux内核的人对其中的System.map.vmlinuz.initrd-2.4.7-10.img印象可能比较深刻,因为编译内核过程中涉及到这些文件的建立等操作.那么这几个文件是怎

编译kernel+xenomai+machinekit

主要参考https://code.google.com/p/picnc项目中的wiki页面,编译kernel+xenomai比较顺利. machinekit编译不顺利,解决编译依赖要费些周折,参考http://www.machinekit.io/docs/building-from-source/,需要再添加两个源,下载几个包.configure出错,还没找到解决办法.

浅谈编译kernel+busybox构建拥有远程ssh登录和web功能最小linux系统

实验环境win7+VM11.1 本文的源码的版本了 dropbear-2013.58.tar.bz2    busybox-1.21.1.tar.bz2 linux-3.13.6.tar.xz  nginx-1.4.7 大致过程总揽 1,硬件准备以及查看硬件设备型号(不用担心,这些都是VM虚拟出来的) 2,编译环境的配置以及下载内核源码以及编译内核 3,编译busybox,以及提供系统正常运行的配置文件,初步运行linux系统 4,编译安装dropbear提供ssh服务 5,安装nginx:提供

编译内核无法生成uImage的原因分析

uBoot启动内核,需要符合要求的内核镜像文件uImage(包含head+body组成): 内核镜像需要mkimage来制作: 如果shell在环境变量目录中找不到mkimage工具,就无法生成uImage: 这里的mkimage必须是编译uboot源码后,在/uboot/tools下面生成的工具mkimage. 所以解决办法就是: 第一步:编译uboot,这时将会在uboot/tools下生成mkimage工具: 第二步:声明环境变量,在/etc/bash.bashrc中添加如下语句: exp

编译kernel(V2.6.19)

1. Linux-2.6.19.tar.bz2 https://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.19.tar.bz2 2. yaffs2-7494368.tar.gz http://www.aleph1.co.uk/gitweb?p=yaffs2.git;a=snapshot;h=749436878923f8c152c98cc016f32c0562479182;sf=tgz 2007-05-21 charles Change bloc

Zynq ZC706 传统方式移植Linux -- 编译kernel 文件系统 devicetree

实际操作时候,下面两条命令就够了. make ARCH=arm xilinx_zynq_defconfig make ARCH=arm CROSS_COMPILE=arm-xilinx-linux-gnueabi- uImage LOADADDR=0x00008000 文件系统 下载arm_ramdisk.image.gz https://xilinx-wiki.atlassian.net/wiki/spaces/A/pages/18842473/Build+and+Modify+a+Rootf