Linux kernel移植流程

转载 2012年03月25日 01:28:09

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               首发

相关文章推荐

Android Linux Kernel 移植流程

Android Kernel移植流程 参考文档 Documentation/android.txt 修改kernel config Android Driver Androi...

Linux kernel移植流程

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

S3C6410移植linux kernel 2.6.36步骤

S3C6410移植linux kernel 2.6.36步骤 Author: Xiaoyong Wen, wen_kernel@163.com Data: 2012-6-16   Versio...
  • wenxy1
  • wenxy1
  • 2012-06-16 17:56
  • 3784

Linux kernel移植笔记

到内核官网下载最新版本的内核 https://www.kernel.org/ 目前,下载的内核版本是 linux-3.4.2  交叉编译版本:arm-linux-4.3.2 PC机系统:ubuntu...

【ARM】移植linux kernel2.6.32注意事项

三个文件 arm-linux-gcc v 注意权限问题 boorargs参数 mkimage -lm 数学库 etcexports dev下没有fb0 drawtree函数 隐约有颗树 搞定 ...

移植MT7620A+MT7610E+MT76X2E到Openwrt trunk(Linux Kernel 3.14.32)

一)MT7620 1) #if defined(CONFIG_RA_HW_NAT) || defined(CONFIG_RA_HW_NAT_MODULE) #include "../../../...

linux kernel 移植步骤

linux kernel 移植步骤 linux kernel 移植步骤 1.准备 准备:linux-2.6.32 kernel(linux-2.6.32.tar.bz2) 下载地址:http:...

DM365 linux kernel 移植总结

内核:Linux Kernel v2.6.32-rc2-davinci1 主芯片: DM365 板子:  APPRO改版  流水帐: 1)默认配置文件:         arch\arm\c...

我所理解的linux kernel的移植

从林纳斯.托瓦兹(Linus B. Torvalds)执掌的网站www.kernel.org下载linux内核,比如:linux-4.9.30.tar.gz,解压:tar zxf linux-4.9....
  • liuzq
  • liuzq
  • 2017-07-10 20:09
  • 221
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)