首页 » 技术文章 » 基于S3C2440的嵌入式Linux根文件系统构建

基于S3C2440的嵌入式Linux根文件系统构建

作者:  时间:2010-12-15 14:58  来源:EDN

  嵌入式Linux早已成为IT界家喻户晓的一个名字,使用Linux进行嵌入式产品开发有一个很大的优势,就是开发资源丰富,且成本低廉,嵌入式Linux操作系统越来越受到重视,其应用也越来越广泛。而文件系统作为操作系统的重要组成部分,用于控制对数据文件及设备的存取,提供对文件和目录的分层组织形式,数据缓冲以及对文件存取权限的控制。根文件系统一直是Linux系统不可或缺的组件,在嵌入式Lin-ux中,内核在启动期间进行的最后操作之一就是安装根文件系统。busybox是构建嵌入式Linux根文件系统的软件,用它制作根文件系统简单、方便,而且设置灵活。

  1 根文件

  Linux要在一个分区上存放系统启动所必需的文件,如内核映像文件、内核启动后运行的第一个程序、给用户提供操作界面的Shell程序、应用程序所依赖的库等,这些必需、基本的文件合称为根文件系统,它们存放在一个分区中。根文件系统一般包括:1)基本的文件系统结构,包含一些必须的目录,比如:/dev,/proc,/bin,/etc,/lib,/usr,/tmp2)基本程序运行所需的库函数,如:libcuC-libc3)基本的系统配置文件,如:rcinittab等脚本文件;4)必要的设备支持文件,如:/devhd*,/devtty,/devfdO5)基本的应用程序,如:shlscpmv等。

  根文件系统的制作就是生成包含上述各种文件的文件系统的过程,可通过直接拷贝宿主机上交叉编译器处的文件来制作根文件系统,但是这种方法制作的根文件系统一般过于庞大。也可通过一些工具如busybox来制作根文件系统,用busybox制作的根文件系统可以做到短小精悍并且运行效率较高。

  2 busybox简介

  busybox常被很形象地称为嵌入式Linux系统中的瑞士军刀,因为它将许多常用的UNIX命令和工具结合到了一个单独的可执行程序中。虽然与相应的GNU工具比较,busybox所提供的功能和参数略少,但在比较小的系统或者嵌入式系统中已经足够。busybox在设计上充分考虑硬件资源受限的特殊工作环境,它采用一种很巧妙的方法减少自己的体积;所有命令都通过插件的方式集中到一个可执行文件中,在实际应用过程中通过不同的符号链接来确定到底要执行哪个操作。例如最终生成的可执行文件为busybox,当为它建立一个符号链接ls的时候,就可以通过执行这个新命令实现列目录的功能。采用单一执行文件的方式可以最大限度地共享程序代码,甚至连文件头、内存中的程序控制块等其他操作系统资源都可共享,这对于资源比较紧张的系统来说,最合适不过了。

  3 busybox的编译和安装

  31 开发环境

  基于S3C2440 ARM920T的硬件平台,该系统的硬件平台上主要使用三星S3C2440,外围还包括64 M SDRAM64 M NAND Flash2 M NOR Flash,系统采用宿主机加目标板的模式,宿主机是PC机,其操作系统是RedHat linux,目标板是基于S3C2440微控制器的开发板,系统采用的内核是嵌入式Linux2629Boot loaderu-boot

  32 配置busybox

  从网上下载busybox-1130tar后,使用tar xvzf busybox1130tar命令获得busybox-1130目录,里面即是所有的源码。进入busybox-113O目录后执行“make menuconfig”命令可进入配置界面。其配置界面如图1所示。

  在构造根文件系统时使用动态链接的busybox,构造根文件时需要在/lib目录下面放置glibc库文件。在busybox的配置过程中大多是选择或者去除各种命令,这里不详细叙述。

  33 编译安装busybox

  在编译之前,首先需要修改busybox根目录下的Makefile,使用交叉编译器。

  将189行的ARCH?=$(SUBARCH)修改为ARCH?=arm164行的CROSS_COMPILE?=修改为CROSS_COMPILE?=arm_linux-修改后执行make命令编译busybox。然后安装busybox,将busybox安装/homework rootby目录下,在安装之前需要在pc机上执行“mkdirhomeworkrootby”命令建立rootby目录,然后执行“make CONFIG_PREFIX =homeworkrootby install”命令完成安装。安装完成后生成如图2所示文件、目录。

  4 构建根文件

  开发板的根文件系统在主机上的目录为/homeworkrootby。在此目录下使用mkdir命令建立devetchomelibmntprocrootsystmp目录。

  41 创建etc目录下的文件

  在/homeworkrootbyetc目录下存放各种配置文件。这些文件都是可选的,它们依赖于系统中所拥有的应用程序,依赖于这些程序是否需要配置文件。

  411 创建etcinittab文件

  init进程根据/etcinittab文件来创建其他子进程,比如调用脚本文件配置ip地址、挂接其他文件系统,最后启动shell等。

  参考busybox源码下面的“examplesinittab”文件,创建inittab代码如下:

  在busybox的参考文件中控制台是ttySAC0,而在s3c24xx系列器件的串口驱动里采用s3c2410_serialx做为设备名,使用串口0作为控制台,这里使用s3c2410_serialO作为控制台。

相关推荐

Ctrack选用u-blox GPS和蜂巢式模组开发车队管理解决方案

u-blox  嵌入式  Ctrack  2014-05-21

动作撷取追踪的嵌入式体感控制新技术

嵌入式  体感控制  2013-12-06

嵌入式系统的固件更新

嵌入式  Flash  RAM  缓冲区  2013-09-12

Linux将进军汽车智能系统领域

Linux  汽车智能系统  2013-07-09

汽车电子向一体化集成、网络化与智能化发展

汽车电子  嵌入式  2013-05-23

东芝开发嵌入式SRAM低功耗技术智能手机

东芝  嵌入式  SRAM  2013-02-23
在线研讨会
焦点