Linux kernel移植流程

Linux kernel简介

Linux内核是linux系统的心脏,它实现了操作系统五大主要功能模块:进程管理、内存管理、文件系统、设备控制和网络。Linux内核的功能模块如图1所示。

Linux Kernel移植流程 - 抵岸科技 - 抵岸科技的博客

图 1

进程管理模块可以说是linux内核的心脏模块,它负责创建和终止进程,并且处理它们和外部的联系(输入和输出)。对整个系统功能来讲,不同进程之间的通信(通过信号、管道、进程间通信原语)是基本的,这也是由内核来处理的。另外,调度器应该是整个操作系统中最关键的全程,是进程管理中的一部分。更广义地说,内核的进程管理活动实现了在一个CPU上多个进程的抽象概念。内在管理模块的作用是确保所有进程安全地共享计算机主内在区,此外,内在管理模块还支持虚拟内在管理方式,使得linux支持进程使用比实际内在空间更多的内在容量,并可以利用文件系统把示用的内在数据块交换到外部存储设备中去,等需要时再交换回来,这样大大提高了内在使用效率,节省了内在空间。文件系统模块用于支持对外部设备的驱动和存储,虚假文件系统通过向所有的外部存储设备提供一个通用的文件系统接口,隐藏了各种硬件设备的不同细节。网络模块提供对多种网络通信标准的访问,并支持许多网络硬件设备。

开发环境

操作系统:Ubuntu 10.4(linux kernel-v2.6.31)

移植Linux内核版本:2.6.30

交叉编译工具:arm-linux-gcc 4.3.2

下载linux-2.6.30源代码及补丁

linux-2.6.30源代码的下载地址:

http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.31.1.tar.bz2

yaffs文件系统补丁的下载地址:

http://www.aleph1.co.uk/cgi-bin/viewcvs.cgi/cvs-root.tar.gz?parent=1&view=tar

ATMEL芯片补丁2.6.30-at91.patch.gz的下载地址:

http://maxim.org.za/AT91RM9200/2.6/2.6.30-at91.patch.gz

ATMEL芯片补丁2.6.30-at91-exp.4.tar.gz的下载地址:

ftp://www.linux4sam.org/pub/linux/2.6.30.at91.4/2.6.30.at91.4-exp.patch.gz

解压Kernel并打补丁

> 解压linux-2.6.30

在提示符后输入:

/opt# tar jxf linux-2.6.30.tar.bz2

解压linux代码包到当前目录。如图2所示:

Linux Kernel移植流程 - 抵岸科技 - 抵岸科技的博客

图 2

> 安装2.6.30-at91.patch.gz补丁

/opt# cd linux-2.6.30

/opt/linux-2.6.30# wget http://maxim.org.za/AT91RM9200/2.6/2.6.30-at91.patch.gz

/opt/linux-2.6.30# zcat 2.6.30-at91.patch.gz | patch -p1

若出现如下提示:

gzip: 2.6.30-at91.patch.gz: not in gzip format

The program 'patch' is currently not installed. You can install it by typing:

apt-get install patch

说明patch没有安装,输入以下命令,安装patch:

/opt/linux-2.6.30# sudo apt-get install patch

> 解压安装yaffs2补丁

将yaffs2文件系统补丁复制到linux-2.6.3/目录下,解压并安装补丁。

/opt/linux-2.6.30# tar zxvf yaffs2.tar.gz

/opt/linux-2.6.30# cd cvs/yaffs2/

/opt/linux-2.6.30/cvs/yaffs2# ./patch-ker.sh c ../../

完成之后,将在linux-2.6.30/fs文件夹下看到yaffs2的文件夹,如图3所示:

Linux Kernel移植流程 - 抵岸科技 - 抵岸科技的博客

图 3

配置kernel

> 前期准备

清除冗余文件,在提示符后输入:

/opt/linux-2.6.30# make mrproper

修改Makefile,找到ARCH,CROSS_COMPILE变量并修改,如图4红框所示

Linux Kernel移植流程 - 抵岸科技 - 抵岸科技的博客

图 4

> 根据目标板配置kernel

为了节省时间,我们以at91sam9g20ek_defconfig为蓝本进行修改。

/opt/linux-2.6.30# cp arch/arm/configs/at91sam9g20ek_defconfig .config

/opt/linux-2.6.30# make menuconfig

以下选项需得注意:

Kernel Features --->  

[*] Use the ARM EABI to compile the kernel

因为要支持yaffs2文件系统,所以必须选择“yaffs2文件系统支持”配置

File systems --->

[ * ] Miscellaneous filesystems --->

<*>   YAFFS2 file system support

-*-     512 byte / page devices

[ ]       Use older-style on-NAND data format with pageStatus byte

[ ]          Lets Yaffs do its own ECC

-*-     2048 byte (or larger) / page devices

[ * ]        Autoselect yaffs2 format

[ ]       Disable YAFFS from doing ECC on tags by default

[ ]        Disable lazy loading

[ ]     Turn off wide tnodes

[ ]     Force chunk erase check

[ * ]      Cache short names in RAM

[ ]     Empty lost and found on boot

[ ]     Disable yaffs2 block refreshing

[ ]     Disable yaffs2 background processing

> 编译kernel

配置完后,退出配置菜单,保存刚才的配置。编译kernel并生成uImage:

/opt/linux-2.6.30# make uImage

如图5所示:

Linux Kernel移植流程 - 抵岸科技 - 抵岸科技的博客

图 5

经过漫长的等待后,终于看到如图6所示的提示信息了:

Linux Kernel移植流程 - 抵岸科技 - 抵岸科技的博客

图 6

这时你可以在/opt/linux-2.6.30/arch/arm/boot/目录中发现我们所需要的uImage。

文件历史记录

版本            编制                    日期                        更改内容

-----------------------------------------------------------------------------------

V1.0           抵岸科技              2010-7-4               首发

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值