zoukankan      html  css  js  c++  java
  • 内核镜像zImage是如何生成的

    转载:内核镜像zImage是如何生成的

    内核镜像zImage是如何生成的

    前面两篇文章介绍了vmlinux 文件生成,这个文件必然是核心的linux内核,但是它是ELF格式的文件,其中包含了可执行的二进制指令(内核),调试信息,符号表等内容。 vmlinux的生成是编译内核的关键,但是得到的vmlinux文件是不能烧写到flash中执行的。主要的问题是,没有一个环境来加载ELF格式的文 件。而zImage则是可以加载执行的二进制代码。

    总的来说zImage和vmlinux的关系是:

    1、zImage是可可运行的二进制内核镜像

    2、zImage是由vmlinux处理、压缩得到的

    3、zImage的大小比vmlinux小很多


    下面介绍一下如何由vmlinux处理得到zImage

    a、将vmlinux文件中的调试信息、符号表除去生成一个Image的镜像文件

    /usr/local/arm/3.4.1/bin/arm-linux-objcopy -O binary -R .note -R .comment -S  vmlinux arch/arm/boot/Image


    b、将Image镜像用gzip压缩工具进行压缩,得到piggy.gz的文件

    gzip -f -9 < arch/arm/boot/compressed/../Image > arch/arm/boot/compressed/piggy.gz


    c、piggy.S文件中直接将上面一步的piggy.gz文件包含在其中,将piggy.S编译得到piggy.o文件

    /usr/local/arm/3.4.1/bin/arm-linux-gcc -Wp,-MD,arch/arm/boot/compressed/.piggy.o.d  

    -nostdinc -isystem /usr/local/arm/3.4.1/bin/../lib/gcc/arm-linux/3.4.1/include

    -D__KERNEL__ -Iinclude  -mlittle-endian -D__ASSEMBLY__ -mapcs-32 -mno-thumb-interwork

    -D__LINUX_ARM_ARCH__=4 -march=armv4 -mtune=arm9tdmi -msoft-float    

    -c -o arch/arm/boot/compressed/piggy.o

    arch/arm/boot/compressed/piggy.S


    d、将piggy.gz head.o misc.o三个文件链接成文内核镜像

    /usr/local/arm/3.4.1/bin/arm-linux-ld -EL   --defsym zreladdr=0x30008000 --defsym params_phys=0x30000100

    -p --no-undefined -X /usr/local/arm/3.4.1/bin/../lib/gcc/arm-linux/3.4.1/libgcc.a -T arch/arm/boot/compressed/vmlinux.lds

    arch/arm/boot/compressed/head.o

    arch/arm/boot/compressed/piggy.o

    arch/arm/boot/compressed/misc.o

    -o arch/arm/boot/compressed/vmlinux


    e、再次去除掉镜像中的符号、注释、调试信息的内容

    /usr/local/arm/3.4.1/bin/arm-linux-objcopy -O binary -R .note -R .comment

    -S  arch/arm/boot/compressed/vmlinux

    arch/arm/boot/zImage

  • 相关阅读:
    vue2 在methods 中无法获取this对象
    mysql-set
    laravel 模板
    laravel save() 返回 null
    如何设置电脑允许远程访问并修改电脑用户密码?
    laravel报错:Unable to detect application namespace.
    b站操作系统2程序的顺序执行与并发执行
    b站计算机网络谢希仁4物理层
    b站计算机网络谢希仁2性能
    b站J数据库13之封装通用的增删改查方法
  • 原文地址:https://www.cnblogs.com/pengdonglin137/p/3293877.html
Copyright © 2011-2022 走看看