基于2.6.19内核小型Linux系统制作与移植

转载 2007年10月09日 15:40:00
ARM9 S3C2410微处理器与Linux的结合越来越紧密,逐渐在嵌入式领域得到广范的应用。目前,在便携式消费类电子产品、无线设备、汽车、网络、存储产品等都可以看到S3C2410与Linux相结合的身影。

  S3C2410微处理器是一款由Samsung公司为手持终端设计的低价格、低功耗、高性能,基于ARM920T核的微处理器。它带有内存管理单元(MMU),采用0.18mm工艺和AMBA新型总线结构,主频可达203MHz。同时,它支持Thumb 16位压缩指令集,从而能以较小的存储空间获得32位的系统性能。

  在众多嵌入式操作系统中,Linux目前发展最快、应用最为广泛[1]。性能优良、源码开放的Linux具有体积小、内核可裁减、网络功能完善、可移植性强等诸多优点,非常适合作为嵌入式操作系统。一个最基本的Linux操作系统应该包括:引导程序、内核与根文件系统三部分。

  与Linux2.4内核相比,2.6内核吸收了最新的技术,在性能、可测量性、器件支持和可用性方面有了大幅度提高;支持更多的体系结构、处理器、总线、接口和设备;标准化了内部接口;简化了扩展或添加新设备的步骤等。

  本文着重介绍如何制作一个基于linux-2.6.19内核的小型Linux操作系统,并将它移植到S3C2410开放板上。内容包括交叉编译环境的建立,引导程序、2.6.19内核、根文件系统的修改、配置、编译、移植等。

  系统的制作移植

  建立交叉编译环境

  要移植、开发小型Linux系统,首先要在安装了RedHat9或更高版本Linux操作系统的主机上配置交叉开发环境。交叉开发是指在开发主机上安装开发工具,编辑、编译目标板的引导程序、内核和文件系统,使其能在目标板上运行。

  针对本次开发,需要安装arm-linux-gcc-3.4.1以及armv4l-tools工具链。在安装完毕后,切记要将两者的路径分别添加到系统路径$PATH中。

  引导程序

  对于计算机系统来说,从开机上电到操作系统启动需要一个引导程序。嵌入式linux系统同样离不开引导程序,这个引导程序叫做Bootloader[1]。通过这段小程序,可以初始化硬件设备、建立内存空间的映射表,从而建立适当的系统硬件环境,为最终调用操作系统内核做好准备。

  vivi[4]是韩国MIZI公司为其ARM9系列产品而研发的Bootloader,小而灵巧,这里选用它作为小型Linux系统的Bootloader。

  首先要修改vivi源代码中的Flash分区信息,新的分区信息如表1所示。

  根据表1,在vivi源码arch/s3c2410/smdk.c文件中作出相应的修改。

  然后在配置菜单中导入smdk2410的默认配置,编译成功将在vivi源代码目录下生成所需的Bootloader文件,文件名为vivi。

  接着,便可把vivi下载到目标板Flash的相应位置。

内核

  修改内核

  首先,修改内核源码linux-2.6.19下的Makefile文件,指定目标代码类型与编译器:SUBARCH :=arm;CROSS_COMPILE:=/usr/local/arm/3.4.1/bin/arm-linux-。

  然后,在linux-2.6.19/arch/arm/mach-s3c2410/common-smdk.c中根据表1修改内核中的Flash分区信息。这里提醒读者,2.6.16(含)以前内核的源码中没有Flash分区信息,所以需要增加新的分区信息;而在2.6.17(含)以后内核的源码中已含Flash分区信息,需要的只是修改分区信息。

  内核Flash分区信息必须与vivi的Flash分区信息相一致。因为,vivi的Flash分区中的地址是内核及文件系统下载到Nand flash的真正地址;而内核在启动时读的却是内核Flash分区设定的地址;所以,若两者不同,则很可能导致不能正常启动内核或读取文件系统。

  最后,修改linux-2.6.19/drivers/mtd/nand/s3c2410.c,禁止Nand flash差错检测: chip->eccmode = NAND_ECC_NONE;。

  内核的配置编译

  在配置菜单中导入内核对smdk2410的默认配置,再在此基础上选择所需的功能。如Nand Flash及MTD设备的支持,Cramfs文件系统的支持等。

  配置完毕,在终端输入编译命令“make”进行编译。若内核源码编译成功,将在linux-2.6.19/arch/arm/boot/下生成内核映像文件zImage。

  最后,在vivi命令提示模式下使用下载命令,将内核映像zImage加载到开发板Flash中的适当地址。

  根文件系统

  Linux系统中的文件和设备是通过文件系统来组织的。文件系统的存在使得数据和设备可以被有效而透明地存取访问。一个linux的最简根文件系统应该包括支持linux系统正常运行的基本内容,包括系统使用的软件和库,以及所有用来为用户提供基本支持的架构和指令。

  在根文件目录rootfs下建立bin、dev、etc、lib、proc、sbin、root、tmp等一系列必备的目录,把所需的配置文件、动态函数库放到相应的目录。采用BusyBox是缩小根文件系统的好办法。BusyBox以很小的体积集成了最常用的linux命令和应用程序,大大简化了制作linux根文件系统的过程。

  有一点必须指出的是,在2.6.12(含)之前的内核通常是用devfs来管理位于/dev下的所有块设备和字符设备;但在2.6.13(含)之后的内核已不支持devfs,而转用udev来管理/dev下的设备,详见[5]。所以,针对2.6.19内核,要使系统启动后进入BusyBox控制台,还需在/rootfs/dev下添加控制台设备文件:“[root@localhost dev]# mknod -m 600 console c 5 1”。

  目前,linux已经能够支持几十种文件系统格式,如常用的Cramfs、Jfss2、Yaffs等。Cramfs 是一种只读的闪存文件系统,可以保护系统的基本设置不被更改。根文件系统就使用Cramfs格式。

  使用Cramfs制作工具mkcramfs把根文件目录制作成映像文件:rootfs.cramfs。

  根文件系统制作完成,在vivi命令模式下把rootfs.cramfs下载到Flash的合适位置。

  至此,一个基于2.6.19内核的小型Linux系统便成功地制作完毕,并移植到S3C2410开发板上了。

  板子加电后便可看到系统的启动信息,最终进入BusyBox控制台。

  结语

  基于2.6内核的Linux凭借其突出的嵌入式特性与性能优越的ARM9 S3C2410相结合,在嵌入式领域有着广阔的应用天地。文章介绍了如何制作一个基于Linux2.6.19内核的小型Linux系统,并将其移植到S3C2410开发板上。小型系统的制作与移植是进行嵌入式开发的基础,必须熟练掌握。

(责任编辑:A6)

 

来源:中国IT实验室 作者:中国IT实验室 发布时间:2007-09-08

 

基于2.6.19内核的小型Linux系统制作与移植.txt

  • 2012年05月27日 06:19
  • 6KB
  • 下载

基于2.6.19内核小型Linux系统制作与移植.doc

  • 2011年10月04日 12:38
  • 43KB
  • 下载

基于2_6_19内核的小型Linux系统制作与移植

  • 2011年01月26日 12:38
  • 111KB
  • 下载

Linux-2.6.32.67内核裁剪与移植之内核启动与根文件系统制作(1)

Linux-2.6.32.67内核裁剪与移植之内核启动与根文件系统制作                                                                 ...
  • zkpingguo
  • zkpingguo
  • 2015-08-26 23:00:19
  • 1704

移植linux3.7.4系统到itop4412开发板记录

最近要移植linux3.7.4系统到itop4412开发板,好长时间没有移植系统了,今天弄了一下,都感觉手生了。 首先先编译一下内核试下,然后再慢慢移植各驱动 1.下载linux内核源码 2.进...
  • u012075739
  • u012075739
  • 2015-01-29 00:18:56
  • 1868

基于ARM9的嵌入式Linux系统移植

这篇文章是我6个月前在老师的指导下写的论文,留在博客里,做个备份,那时我的系统环境是window 7虚拟机下的RedHat Enterprise Linux6.0 ,现在我的系统环境是Ubuntu13...
  • zhang911025
  • zhang911025
  • 2013-11-22 15:03:30
  • 3504

Linux内核移植和根文件系统制作(详细步骤精讲)

第一章移植内核 1.1 Linux内核基础知识 1.1.1 Linux版本 1.1.2 什么是标准内核 1.1.3 Linux操作系统的分类 1.1.4 linux内核的...
  • lp542718520
  • lp542718520
  • 2014-12-17 17:12:20
  • 5174

[转载]基于ARM的linux内核裁剪与移植

基于ARM的linux内核裁剪与移植 http://bbs.elecfans.com/forum.php?mod=viewthread&tid=185020  wutaimin( 楼主 ) 201...
  • tmcrazy
  • tmcrazy
  • 2014-12-08 18:04:35
  • 1656

linux内核的裁剪与移植

(2015-09-08 14:38:45) 转载▼ 1.  进到linux内核源代码目录下cd /home/linux-2.6....
  • chuhongcai
  • chuhongcai
  • 2016-05-26 16:31:08
  • 1234

【ARM-Linux开发】嵌入式操作系统上的小型数据库移植SQLite

近段时间在学数据库,因为自身需求,所以注重研究了点嵌入式sqlite数据库,SQLite,是一款轻型的数据库,是遵守ACID的关联式数据库管理系统,它的设计目标是嵌入式的,而且目前已经在很多嵌入式产品...
  • LG1259156776
  • LG1259156776
  • 2017-01-11 19:40:57
  • 1461
收藏助手
不良信息举报
您举报文章:基于2.6.19内核小型Linux系统制作与移植
举报原因:
原因补充:

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