没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
学习内容:Linux 内核移植和 yaffs2 根文件系统制作
版本:V1.2
作者:Feng dong rui
整理日期:2009.07.15
嵌入式技术交流群:92388278
交流邮箱:1986fdr@163.com
Linux 内核移植和 yaffs2 根文件系统制作
第一章 移植内核..................................................................................................... 2
1.1 Linux 内核基础知识 .................................................................................... 2
1.1.1 Linux 版本....................................................................................... 2
1.1.2 什么是标准内核................................................................................ 2
1.1.3 Linux 操作系统的分类....................................................................... 3
1.1.4 linux 内核的选择 ............................................................................... 4
1.2 Linux 内核启动过程概述 ............................................................................ 5
1.2.1 Bootloader 启动过程 ....................................................................... 5
1.2.2 Linux 启动过程 .................................................................................. 7
1.3 Linux 内核移植.......................................................................................... 10
1.3.1 移植内核和根文件系统准备工作................................................... 10
1.3.2 修改 Linux 源码中参数....................................................................11
1.3.3 配置 Linux 内核 .............................................................................. 15
1.3.4、编译内核 ....................................................................................... 17
第二章 制作根文件系统 ....................................................................................... 19
2.1 根文件系统预备知识................................................................................ 19
2.2、构建根文件按系统.................................................................................. 20
2.2.1、建立根文件系统目录 .................................................................... 20
2.2.2、建立动态链接库............................................................................ 21
2.2.3 交叉编译 Bosybox........................................................................... 21
2.2.4 建立 etc 目录下的配置文件............................................................ 24
2.2.5 制作根文件系统映像文件 .............................................................. 29
第三章 启动系统................................................................................................... 29
第四章 总结 .......................................................................................................... 36
第一章 移植内核
1.1 Linux 内核基础知识
在动手进行 Linux 内核移植之前,非常有必要对 Linux 内核进行一定的了解,
下面从 Linux 内核的版本和分类说起。
1.1.1 Linux 版本
Linux 内核的版本号可以从源代码的顶层目录下的 Makefile 中看到,比如
2.6.29.1 内核的 Makefile 中:
VERSION = 2
PATCHLEVEL = 6
SUBLEVEL = 29
EXTRAVERSION = .1
其中的¡ VERSION¡ 和¡ PATCHLEVEL¡ 组成主版本号,比如 2.4、2.5、
2.6 等,稳定版本的德主版本号用偶数表示(比如 2.6 的内核),开发中的版本号用
奇数表示(比如 2.5),它是下一个稳定版本内核的前身。¡ SUBLEVEL¡ 称为次版
本 号 , 它 不 分 奇 偶 , 顺 序 递 增 , 每 隔 1~2 个 月 发 布 一 个 稳 定 版 本 。
¡ EXTRAVERSION¡ 称为扩展版本号,它不分奇偶,顺序递增,每周发布几次
扩展本版号。
1.1.2 什么是标准内核
按 照 资 料 上 的 习 惯 说 法 , 标 准 内 核 ( 或 称 基 础 内 核 ) 就 是 指 主 要 在
http://www.kernel.org/维护和获取的内核,实际上它也有平台属性的。这些 linux
内核并不总是适用于所有 linux 支持的体系结构。实际上,这些内核版本很多时
候并不是为一些流行的嵌入式 linux 系统开发的,也很少运行于这些嵌入式 linux
系统上,这个站点上的内核首先确保的是在 Intel X86 体系结构上可以正常运行,
它是基于 X86 处理器的内核,如对 linux-2.4.18.tar.bz2 的配置 make menuconfig
时 就 可 以 看 到 , Processor type and features---> 中 只 有 386 、 486 、
586/K5/5x86/6x86/6x86MX 、 Pentium-Classic 、 Pentium-MMX 、
Pentium-Pro/Celeron/Pentium-II、Pentium-III/Celeron(Coppermine)、 Pentium-4、
K6/K6-II/K6-III 、Athlon/Duron/K7 、Elan 、Crusoe、Winchip-C6 、Winchip-2 、
Winchip-2A/Winchip-3 、CyrixIII/C3 选项,而没有类似 Samsun 2410 等其他芯
片的选择。如果需要用在其他特定的处理器平台上就需要对内核进行打补丁,形
成不同的嵌入式内核。实际上,不同处理器系统的内核下载站点中提供的也往往
是补丁 patch 而已,故原 x86 平台上的内核变成了基础内核,也被称为标准内核
了。
1.1.3 Linux 操作系统的分类
第一层次分类:以主要功能差异和发行组织区分(基础 linux 系统/内核)。
1、标准 linux
2、¦ Clinux
无 MMU 支持的 linux 系统,运行在无 MMU 的 CPU 上。
3、Linux-RT
是最早在 linux 上实现硬实时支持的 linux 发行版本。
4、Linux/RTAI
支持硬实时的 linux,于 RT-linux 最大的不同之处在于 RTAI 定义了 RTHAL,
它将 RTAI 需要在 linux 中修改的部分定义成一组 API 接口,RTAI 只使用 API
接口与 linux 交互。
5、Embedix
由 Lineo 公司开发,基于 PowerPC 和 x86 平台开发的。
6、Blue Cat Linux
7、Hard Hat Linux
8、其他
第二层分类:以应用的嵌入式平台区分(嵌入式 linux 系统/内核,使上面第一类
中的各种 linux 系统扩展为对特定目标硬件的支持,成为一种具体的嵌入式 linux
系统)
由于嵌入式系统的发展与 linux 内核的发展是不同步的,所以为了要找一个
能够运行于目标系统上的内核,需要对内核进行选择、配置和定制。因为每一种
系统都是国际上不同的内核开发小组维护的,因此选择 linux 内核源码的站点也
不尽相同。
第二层分类中的 linux 系统/内核相对于第一层分类的标准内核来说,也可以
称为嵌入式 linxu 系统/内核。如应用在 ARM 平台上的嵌入式 Linux 系统通常有
arm-linux(常运行在 arm9 平台上),¦ Clinux(常用在 arm7 平台上),在标准 linux
基础上扩展对其他的平台的支持往往通过安装 patch 实现,如 armlinux 就是对
linux 安装 rmk 补丁(如 patch-2.4.18-rmk7.bz2)形成的,只有安装了这些补丁,内
核才能顺利地移植到 ARM Linux 上。也有些是已经安装好补丁的内核源码包,
如 linux-2.4.18-rmk7.tar.bz2。
不同处理器系统的内核/内核补丁下载站点:
处理器系统 适合的内核站点 下载方式
x86 http://www.kernel.org/ ftp, http, rsync
ARM http://www.arm.linux.org.uk/developer/ ftp, rsync
PowerPC http://penguinppc.org/ ftp, http, rsync, BitKeeper
MIPS http://www.linux-mips.org/ ftp, cvs
SuperH http://linuxsh.sourceforge.net/ cvs, BitKeeper
M68K http://linux-m68k.org/ ftp, http
non-MMU CPUs http://www.uclinux.org/ ftp, http
这些站点不仅仅是 linux 内核站点,它们可能直接提供了针对你的目标硬件
系统的 linux 内核版本。
1.1.4 linux 内核的选择
选择内核版本是很困难的,应该与负责维护该内核的小组保持联系,方法是
通过订阅一些合适的邮件列表(maillist)并查看邮件中相关的重要新闻,以及浏
览一些主要站点,可以得到该内核的最新发展动态。如针对 ARM 的 Linux 内核,
可以访问 http://www.arm.linux.org.uk/ 并订阅该网站上提供的 maillist 就可以了。
如果觉得查阅邮箱中的邮件列表耗费太多时间,那么至少每周访问所关心的内核
网站,并阅读 Kernel Traffic 提供的过去一周中在内核邮件清单中发生的重要的
摘要,网址为 http://kt.zork.net/kernel-traffic 这样就可以得到相关 Linux 内核的最
新信息。
并不是 Linux 的每个版本都适合 ARM-Linux 的移植,可以加入其邮件列表
(maillist)以获得内核版本所支持硬件的相关信息,表中列出的资源可以帮助你
找到哪些没有列出的功能可以被你的系统支持。ARM Linux 的移植,建议使用
2.4.x 或 2.6.x 版 本 。 Linux 内 核 补 丁 可 以 到 ARM Linux 的 ftp
(ftp://ftp.arm.linux.org.uk )下载。
1.2 Linux 内核启动过程概述
一个嵌入式 Linux 系统从软件角度看可以分为四个部分:引导加载程序
(Bootloader),Linux 内核,文件系统,应用程序。其中 Bootloader 是系统启动
或复位以后执行的第一段代码,它主要用来初始化处理器及外设,然后调用
Linux 内核。Linux 内核在完成系统的初始化之后需要挂载某个文件系统做为根
文件系统(Root Filesystem)。根文件系统是 Linux 系统的核心组成部分,它可
以做为 Linux 系统中文件和数据的存储区域,通常它还包括系统配置文件和运
行应用软件所需要的库。应用程序可以说是嵌入式系统的¡ 灵魂¡,它所实现的
功能通常就是设计该嵌入式系统所要达到的目标。如果没有应用程序的支持,任
何硬件上设计精良的嵌入式系统都没有实用意义。
1.2.1 Bootloader 启动过程
Bootloader 在运行过程中虽然具有初始化系统和执行用户输入的命令等作
用,但它最根本的功能就是为了启动 Linux 内核。
1 、Bootloader 的概念和作用
Bootloader 是嵌入式系统的引导加载程序,它是系统上电后运行的第一段程
序,其作用类似于 PC 机上的 BIOS。在完成对系统的初始化任务之后,它会将
非易失性存储器(通常是 Flash 或 DOC 等)中的 Linux 内核拷贝到 RAM 中去,
然后跳转到内核的第一条指令处继续执行,从而启动 Linux 内核。由此可见,
Bootloader 和 Linux 内核有着密不可分的联系,要想清楚的了解 Linux 内核的
启动过程,我们必须先得认识 Bootloader 的执行过程,这样才能对嵌入式系统
的整个启动过程有清晰的掌握。
2 、Bootloader 的执行过程
不同的处理器上电或复位后执行的第一条指令地址并不相同,对于 ARM
处理器来说,该地址为 0x00000000。对于一般的嵌入式系统,通常把 Flash 等
非易失性存储器映射到这个地址处,而 Bootloader 就位于该存储器的最前端,
所 以 系 统 上 电 或 复 位 后 执 行 的 第 一 段 程 序 便 是 Bootloader。 而 因 为 存 储
剩余35页未读,继续阅读
资源评论
- 家有工程师2013-08-29太贵了,网络上面大把的资料。
- 海阔任龟游2013-07-03不错,很有借鉴价值的
- 奔跑的路2014-08-03讲的确实很详细啊,很受用,虽然自己在操作的过程中有一些小问题,但是都通过自己或问比人解决了,还是挺好的指导,很有借鉴作用
lazypig_l
- 粉丝: 0
- 资源: 4
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- DatabaseWatermarkingBasedonTextFormat
- -移动通信-网络课程设计与研究
- 基于Python的PCA人脸识别算法的原理及实现代码+文档详解.zip
- 甘肃移动全业务工程建设项目管理流程优化研究
- 549springboot + vue 民宿管理平台.zip (可运行源码+数据库文件+文档)
- ZArchiver.Pro_0.9.5.apk
- vmware环境配置.mp4
- 548springboot + vue 大学生社团活动平台.zip(可运行源码+数据库文件+文档)
- 微信小程序 辩论倒计时小程序源码 作业设计demo 计算机专业参考
- 深入探究文件IO,嵌入式Linux
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功