FTP服务器 SQL server WEB服务器 windos server Exchange ISA server 域服务器 其他服务器 服务器虚拟化技术 网站技术Linux操作系统 服务器硬件技术 服务器阵列技术
返回首页

LINUX操作系统 5.1 合成内核映像:piggy及其他

时间:2010-07-29 21:45来源:未知 作者:admin 点击:
第5章 内核初始化 本章内容 合成内核映像:piggy及其他 初始化控制流 内核命令行处理 子系统初始化 init线程 小结 当嵌入式Linux系统加电后,就会有一系列复杂的事件依次发生。加电几秒钟之后,内核开始工作并且执行由系统初始化脚本中指定的一系列应用程序

 

第5章 内核初始化
本章内容
合成内核映像:piggy及其他
初始化控制流
内核命令行处理
子系统初始化
init线程
小结
当嵌入式Linux系统加电后,就会有一系列复杂的事件依次发生。加电几秒钟之后,内核开始工作并且执行由系统初始化脚本中指定的一系列应用程序。这些事件的一个显著特点是,它们服从于系统的配置并且由嵌入式开发者所控制。
本章将探讨Linux内核的初始化过程,仔细研究在内核初始化中所采用的机制和处理过程,以及在初始化过程中,Linux的内核命令行信息及其在启动的时候定制Linux开发环境的用途。具备了这些知识之后,你就可以定制和控制系统初始化流程,以满足你的嵌入式系统的特殊需求。
5.1 合成内核映像:piggy及其他
在系统加电后,嵌入式系统的引导装入程序首先取得了对处理器的控制权。在引导装入程序执行了一些基本的硬件初始化之后,控制权就会交给Linux内核。为了便于开发,这样的过程是可以手动进行的(例如在引导装入程序的提示下用户输入交互式的load/boot命令),也可以是一个自动的启动过程。我们会在第7章中讨论这个话题,所以对于引导装入程序的详细介绍将放到那里。
在第4章中,我们研究了Linux内核映像文件的组成,还记得那些用于构建体系结构的文件吗?其中一个是二进制ELF格式的vmlinux文件,vmlinux文件就是内核,或者也可以称为严格意义上的内核。实际上,当在其链接过程检查vmlinux文件时,我们看到的第一行代码,在绝大多数的体系结构当中,位于一个汇编代码的源文件中,该文件称为head.S(或类似名字的文件)。在支持PowerPC系列处理器的Linux内核中,提供了head.S的几个版本,这些文件依赖于处理器。例如,AMC440系列处理器通过名为head_44x.S的文件进行初始化。
一些体系结构和引导装入程序可以直接引导vmlinux内核映像。例如,基于PowerPC体系结构和U-Boot的平台通常都可以直接引导vmlinux内核映像 (在经过由ELF到二进制格式的转换之后,不久你就会看到)。在由其他体系结构和引导装入程序所构成的系统中,可能需要配置合适的上下文并提供必要的工具才能加载和引导内核。
代码清单5-1详细列出了编译内核过程中最后的步骤,该编译过程基于ADI Coyote参考硬件平台,该平台内含一个Intel IXP425网络处理器。该代码采用了内核编译时默认的输出格式,就像在第4章中指出的那样,这是一个有用的速记法,可以更多关注于编译过程中的错误和警告信息。
代码清单5-1 内核编译最后的流程:基于ARM/IXP425(Coyote)

  本文来自服务器配置网

  1. $ make ARCH=arm CROSS_COMPILE=xscale_be- zImage  
  2. ...   < many build steps omitted for clarity> 
  3.   LD          vmlinux  
  4.   SYSMAP      System.map  
  5.   OBJCOPY     arch/arm/boot/Image  
  6.   Kernel:     arch/arm/boot/Image is ready  
  7.   AS          arch/arm/boot/compressed/head.o  
  8.   GZIP        arch/arm/boot/compressed/piggy.gz  
  9.   AS          arch/arm/boot/compressed/piggy.o  
  10.   CC          arch/arm/boot/compressed/misc.o  
  11.   AS          arch/arm/boot/compressed/head-xscale.o  
  12.   AS          arch/arm/boot/compressed/big-endian.o  
  13.   LD          arch/arm/boot/compressed/vmlinux  
  14.   OBJCOPY     arch/arm/boot/zImage  
  15.   Kernel:     arch/arm/boot/zImage is ready  
  16.   Building modules, stage 2.  
  17. ... 

http://www.server-cn.com/

在代码清单5-1中的第3行可以看到,vmlinux内核映像(严格意义上的内核)在这里被链接,之后,大量附加的目标模块得以处理,这些目标模块包括head.o、piggy.o 以及和特定体系结构有关的head-xscale.o。在这些处理过程中,每一行的处理中都使用了相应的标识。例如,其中的AS表示汇编程序被调用,GZIP表示的是压缩等。通常来说,这些目标模块是与给定的体系结构(本例当中的体系结构是ARM/Xscale)有关的,并且包含该特定体系结构下引导内核所需的基本程序。表5-1详细列出了这些内容的组成部分。
表5-1 基于ARM/Xscale体系结构的基本目标文件
组件
功能/描述
vmlinux
严格意义上的内核,采用ELF格式,
包括符号、注释、调试信息(如果
采用-g选项编译)和通用体系结构组件
System.map
描述vmlinux模块的内核符号表,基于文本格式
http://www.server-cn.com/
(续)
组件
功能/描述
Image
二进制内核模块,去掉了符号、标记、注释
head.o
针对ARM类处理器的启动代码,就是通过
这个目标文件,引导装入程序取得了控制权
piggy.gz
采用gzip压缩的Image文件
piggy.o
piggy.gz文件的汇编格式,可以被后面
misc.o文件所链接
misc.o
用于解压缩内核映像(piggy.gz)的程序,
大家所熟悉的在某些体系结构上的启动信息
“Uncompressing Linux … Done”就来源于该文件
head-xscale.o
XScale系列处理器的初始化目标文件
big-endian.o
一个小的汇编程序,可以将XScale处理器
转换为对大端字节序模式(big-endian mode)的支持
vmlinux
合成内核映像,注意这是一个不合适的命名,
因为它与实际意义上的内核同名,二者并不相同。
严格意义上的内核链接了该表中的目标文件后生
成该合成映像文件,参见相关解释内容
zImage
最终的合成映像文件,可以被引导装入程序引导,
在下文中会具体介绍
图5-1有助于你理解该结构以及后续的讨论内容,它展示了内核映像文件的组成部分,以及产生一个最终可引导内核映像文件的过程,下面章节会详细介绍这些组成部分和映像文件的产生过程。

 
(点击查看大图)图5-1 合成内核映像文件的结构
copyright by http://www.server-cn.com/

(责任编辑:admin)
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
验证码:点击我更换图片
推荐内容