第十章 Linux内核的配置、编译和移植_第1页
第十章 Linux内核的配置、编译和移植_第2页
第十章 Linux内核的配置、编译和移植_第3页
第十章 Linux内核的配置、编译和移植_第4页
第十章 Linux内核的配置、编译和移植_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第十章

Linux内核的配置、编译和移植建立交叉编译环境启动代码Bootloader的实现/移植kernel的配置/移植/编译根文件系统Cramfs的实现嵌入式开发流程主要内容移植的概念Linux内核结构kernel的移植10.1移植的概念10.1移植的概念在同一个硬件平台上可以嵌入不同的嵌入式操作系统,就好比PC既开放安装Windows又可以安装Linux一样。同样,有些操作系统经过移植后可以运行在不同的硬件平台上。如果一个系统可以在不同硬件平台上运行,那么这个系统就是可移植的。使某一个平台的代码运行在其它平台上的过程叫做移植。Linux操作系统就可以通过移植,运行在ARM、PowerPC等多种硬件平台上。考虑到嵌入式系统是“硬件可裁减”的,以及不同的用户需求,我们需要对已有的内核代码进行裁减移植。10.2Linux内核结构10.2Linux内核结构一般在Linux系统中的/usr/src/Linux-*.*.*(*.*.*代表内核版本)目录下就是内核源代码。Linux内核非常庞大,包括驱动程序在内有数百兆之多。10.2Linux内核结构/arch目录:包含了体系结构相关部分的内核代码,其中的每一个目录都代表一种硬件平台,比如我所使用的ARM平台和PC机使用的i386。对于任何一种平台,都包括以下5个目录:boot、kernel、lib、mm和math-xxx。显然,移植工作的重点就是arch目录下的文件。/drivers目录:包含了内核中所有的设备驱动程序。它占整个内核发行版本代码的一半以上,非常庞大。其中,有些驱动程序是与硬件平台无关的而有些是相关的。10.2Linux内核结构/fs目录:包含了Linux所支持的所有文件系统。一般来说,文件系统与硬件无关。/include目录:包含了建立内核代码时所需的大部分头文件,比如,与平台无关的头文件在include/linux子目录下。此外,也包括了不同平台需要的库文件,比如,asm-arm是ARM平台需要的库文件。/init目录:包含了内核的初始化代码(不是系统的引导代码),有main.c和version.c两个文件。内核从此工作。10.2Linux内核结构/ipc目录:包含了核心进程间的通信代码。/kernel目录:包含了内核管理的核心代码。/lib目录:包含了所有的库代码。/mm目录:包含了所有的内存管理代码。/net目录:包含了和网络相关的代码,其每一个子目录对应于网络的一个方面。其它目录:Documentation目录包含了许多非常详细的文档。Scripts目录主要在配置内核时用到,存放了配置内核的一些脚本文件,如“makemenuconfig”命令。10.3kernel的配置、编译和移植10.3kernel的配置、编译和移植(1)、需以root权限来对Linux内核进行移植。假设内核代码存放在/usr/src/linux-2.4.21下。cd/usr/srcln-slinux-2.4.21-crus-1-4-3linux-2.4.21(创建了一个指向linux-2.4.21-crus-1-4-3的链接linux-2.4.21)10.3kernel的配置、编译和移植(2)、修改相关目录下的Makefile文件。由于Linux内核源代码是按照树形结构组织的,所以Makefile也被分布在目录树中。Linux内核中的Makefile以及与Makefile直接相关的文件有:a、顶层即根目录Makefile:是整个内核配置、编译的总体控制文件。在移植过程中,需修改此文件中的两方面内容:体系结构“ARCH”和交叉编译器“CROSS_COMPILE”。10.3kernel的配置、编译和移植(2)、修改相关目录下的Makefile文件。b、.config:内核配置文件,用户通过编译命令makemenuconfig

配置后,产生了.config。顶层Makefile

读入.config

中的配置选择。c、arch/arm/*/Makefile:位于arm体系目录下的Makefile,如arch/arm/Makefile,是针对特定平台的Makefile。d、各个子目录下的Makefile:比如drivers/Makefile,负责所在子目录下源代码的管理。e、Rules.make:规则文件,它定义了所有Makefile

共用的编译规则。10.3kernel的配置、编译和移植(3)、配置Linux内核。命令为“makemenuconfig”10.3kernel的配置、编译和移植(3)、配置Linux内核。在编译内核的过程中,最繁杂的事情就是这步配置工作了。选择的原则:将与内核其它部分关系较远且不经常使用的部分功能代码编译成为可加载模块,有利于减小内核的长度,减小内核消耗的内存,简化该功能相应的环境改变时对内核的影响;不需要的功能就不选;与内核关系紧密且经常使用的部分功能代码直接编译到内核中。例如,在ProcessType中就必须选上“SupportAM920TProcessor”。10.3kernel的配置、编译和移植(4)、编译Linux内核。a、makedep命令:读取配置过程生成的配置文件,来创建对应于配置的依赖关系树,从而决定哪些需要编译而那些不需要。b、makeclean命令:完成删除前面步骤留下的文件,以避免出现一些错误。c、makezImage或makebzImage命令:实现完全编译内核。d、makemodules命令和makemodules_install命令:分别生成相应的模块和把模块拷贝到需要的目录中。e、depmod–a命令:严格地说,此命令和编译过程并没有关系,它是生成模块间的依赖关系,这样在启动新内核之后,使用modprobe命令加载模块时就能正确地定位模块。10.3kernel的配置、编译和移植(4)、编译Linux内核。10.3kernel的配置、编译和移植(5)、结果生成了4个文件:没有压缩的内核镜像(zImage或bzImage);压缩的内核镜像(vmlinux;内核符号映射文件(System.map);配置文件(config)其中,zImage或bzIma

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论