Chinaunix首页 | 论坛 | 博客
  • 博客访问: 161854
  • 博文数量: 53
  • 博客积分: 2042
  • 博客等级: 大尉
  • 技术积分: 425
  • 用 户 组: 普通用户
  • 注册时间: 2010-01-15 21:39
文章存档

2011年(6)

2010年(47)

分类: LINUX

2010-05-15 20:51:23

一、linux内核的分类与版本

linux内核起码有标准内核(来源 )及针对各种处理器或平台的linux内核。在做嵌入式开发时需要明确:什么平台/处理器?什么版本的linux内核?这关联到需要什么内核补丁,作怎样的交叉编译,需要什么交叉编译环境。

 

1、什么是标准内核?

按照资料上的习惯说法,标准内核(或称基础内核)就是指主要在维护和获取的内核,实际上它也有平台属性的!这些linux内核并不总是适用于所有linux支持的体系结构。这些内核版本很多时候并不是为一些流行的嵌入式linux系统开发的,也很少运行于这些嵌入式linux系统上,这个站点上的内核首先确保的是在Intel X86体系结构上可以正常运行,它是基于X86处理器的内核,如:

linux-2.4.18.tar.bz2的配置make menuconfig时就可以看到,Processor type and features  --->中只有386486586/K5/5x86/6x86/6x86MXPentium-ClassicPentium-MMXPentium-Pro/Celeron/Pentium-IIPentium-III/Celeron(Coppermine)Pentium-4K6/K6-II/K6-III Athlon/Duron/K7 Elan CrusoeWinchip-C6 Winchip-2 Winchip-2A/Winchip-3 CyrixIII/C3 选项,而没有类似samsun 2410等其他芯片的选择。

如果需要用在其他特定的处理器平台上就需要对内核进行打补丁,形成不同的嵌入式内核。实际上,不同处理器系统的内核下载站点中提供的也往往是补丁patch而已,故原x86平台上的内核变成了基础内核,也被称为标准内核了。

 

2linxu操作系统的分类

 

第一层次分类:以主要功能差异和发行组织区分(基础linux系统/内核)

1)标准linux

2uClinux

MMU支持的linux系统,运行在无MMUCPU;

3Linux-RT

是最早在linux上实现硬实时支持的linux发行版本;

4Linux/RTAI

支持硬实时的linux,于RT-linux最大的不同之处在于RTAI定义了RTHAL,它将RTAI需要在linux中修改的部分定义成一组API接口,RTAI只使用API接口与linux交互;

5Embedix

Lineo公司开发,基于PowerPCx86平台开发的。

6Blue Cat Linux

7Hard Hat Linux

8)其他

 

第二层分类:以应用的嵌入式平台区分(嵌入式linux系统/内核,使上面第一类中的各种linux系统扩展为对特定目标硬件的支持,成为一种具体的嵌入式linux系统)

 

由于嵌入式系统的发展与linux内核的发展是不同步的,所以为了要找一个能够运行于目标系统上的内核,需要对内核进行选择、配置和定制。因为每一种系统都是国际上不同的内核开发小组维护的,因此选择linux内核源码的站点也不尽相同。

 

第二层分类中的linux系统/内核相对于第一层分类的标准内核来说,也可以称为嵌入式linxu系统/内核。如应用在ARM平台上的嵌入式Linux系统通常有arm-linux(常运行在arm9平台上)uclinux(常用在arm7平台上),在标准linux基础上扩展对其他的平台的支持往往通过安装patch实现,如armlinux就是对linux安装rmk补丁(patch-2.4.18-rmk7.bz2)形成的,只有安装了这些补丁,内核才能顺利地移植到ARM Linux上。也有些是已经安装好补丁的内核源码包,如linux-2.4.18-rmk7.tar.bz2

 

不同处理器系统的内核/内核补丁下载站点:

处理器系统 

适合的内核站点

x86 

ARM

developer/

PowerPC

MIPS

SuperH

M68K

non-MMU (ARM7TDMI/ColdFire

 

这些站点不仅仅是linux内核站点,它们可能直接提供了针对你的目标硬件系统的linux内核版本。

 

3标准linuxuclinux有什么关系和区别?armlinuxuclinux有什么分别?

标准内核可以直接自己配置编译,用到你的PC机去取代原先安装系统时的内核,它首先基于x86体系。uclinux是省略MMClinux内核,是标准内核的一个简化版本。而armlinux是基于平台的一个嵌入式系统内核,也就是一个具体的嵌入式系统。uclinux的获取是一个类似于标准linux的内核目录,而armlinux的获取一般是通过对标准linux内核打补丁。

二、linux内核的选择

Linux核心源程序通常都安装在 /usr/src/linux下,而且它有一个非常简单的编号约定:任何偶数的核心(例如2.0.30)都是一个稳定地发行的核心,而任何奇数的核心(例如2.1.42)都是一个开发中的核心。

Linux-2.4.10Linux-2.4.15版本的内核应该避免使用,因为它们出现在对内核大量改动时期,不稳定。

 

选择内核版本是很困难的,应该与负责维护该内核的小组保持联系,方法是通过订阅一些合适的邮件列表(maillist)并查看邮件中相关的重要新闻,以及浏览一些主要站点,可以得到该内核的最新发展动态。如针对ARMLinux内核,可以访问 并订阅该网站上提供的maillist就可以了。如果觉得查阅邮箱中的邮件列表耗费太多时间,那么至少每周访问所关心的内核网站,并阅读Kernel Traffic提供的过去一周中在内核邮件清单中发生的重要的摘要,网址为 这样就可以得到相关Linux内核的最新信息。

并不是Linux的每个版本都适合ARM Linux的移植,可以加入其邮件列表(maillist)以获得内核版本所支持硬件的相关信息。

 

上表列出的资源可以帮助你找到哪些没有列出的功能可以被你的系统支持!

ARM Linux的移植,建议使用2.4.x2.6.x版本

Linux内核补丁可以到ARM Linuxftpftp://ftp.arm.linux.org.uk )下载。

 

三、内核补丁与补丁的安装

内核补丁不是一定需要的,这要看你选择的是怎样的linux内核,比如下载下来标准的linux内核,想要编译linux系统在x86PC机上运行,就根本不用什么板间支持的补丁了,因为标准linux内核本身基于x86平台测试。而如果使用Embedix内核,开发板是PPC体系的,内核可能本身已经支持PPC,也不需要安装补丁了。但嵌入式系统往往工作在不同的特定目标板上,如arm,这就需要使linux内核扩展对目标体系的支持了。

常见的如arm板,下载了标准linux内核是不够的,还要从arm linux的相关站点下载相应版本的补丁,标准内核安装了补丁后才能正确配置,对目标体系支持。linux-2.4.18.tar.bz2内核,打补丁patch-2.4.18-rmk7.bz2就跟整合了的源码包linux-2.4.18-rmk7.tar.bz2一样了,是一个armlinux系统内核了。而如果需要扩展对m68k芯片的支持,就需要m68k的补丁了。

 

补丁的安装方法可以参考man patch的说明,我总结自己常用的方法如下:

1 patch应用的方法是进入内核目录后#patch -p1 < patch文件的位置,如:

1# bunzip2 patch-2.4.18-rmk7.bz2

patch-2.4.18-rmk7.bz2解压成patch-2.4.18-rmk7(覆盖了原压缩文件)

2# mv patch-2.4.18-rmk7 linux/

patch-2.4.18-rmk7移动到内核解压目录linux中。

3cd linux

进入linux目录

4# patch -p1 < patch-2.4.18-rmk7

       注意 < 前后都有一个空格

得到

……

patching file net/irda/iriap.c

patching file net/irda/irlan/irlan_common.c

patching file net/irda/irlap_event.c

patching file net/irda/irlap_frame.c

patching file net/irda/irttp.c

patching file net/sched/Config.in

成功应用补丁。

 

2、把解压的补丁(不用解压)移动到解压的内核目录中,执行

# bzip2 -dc patch-2.4.18-rmk7.bz2 | patch -p1

参考资料

1、《源码开放的嵌入式系统软件分析与实践——基于skyeyearm开发平台》陈渝 李明 杨晔 等编著 北京航空航天大学出版社

引用地址

http://blog.csdn.net/huangqiqun/archive/2007/03/03/1520010.aspx

 

阅读(2039) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~