现场总线的开关量I/O模块设计:操作系统移植与驱动开发
5. 4嵌入式根文件系统的构建
Linux的一个最重要特点就是它支持许多不同的文件系统。这使Linux非常灵活,能够与许多其他的操作系统共存。Linux支持的常见的文件系统有:JFS、ReiserFS、ext、ext2、ext3、ISO9660、XFS、Minx、MSDOS、UMSDOS、VFAT、NTFS、HPFS、NFS、SMB、SysV、PROC等。随着时间的推移,Linux支持的文件系统数还会增加。
Linux是通过把系统支持的各种文件系统链接到一个单独的树形层次结构中,来实现对多文件系统的支持的。该树形层次结构把文件系统表示成一个整个的独立实体。无论什么类型的文件系统,都被装配到某个目录上,由被装配的文件系统的文件覆盖该目录原有的内容。该个目录被称为装配目录或装配点。在文件系统卸载时,装配目录中原有的文件才会显露出来。
文件系统都会被烧录在与某一存储设备上。在嵌入式设备上很少使用大容量的ID E硬盘作为自己的存储设备,嵌入式设备往往选用ROM、闪存( flash memory )等作为它的主要存储设备。在嵌入式设备上选用哪种文件系统格式与闪存的特点是相关的。
本硬件平台是以NAND Flash (闪存)作为主要的存储媒介,这类存储器与传统存储器最大的不同在于其是按扇区擦除、按位编程。Flash存储介质的这种技术特点使得传统的Linux文件系统已经不再适合在其上构建,比如Ext2文件系统,是专为像IDE那样的块设备设计的,没有提供很好的扇区擦写支持,不支持损耗平衡,没有掉电保护,也没有很好的扇区管理。这些缺点都表明,在Flash存储介质上应用为设备设计的传统文件系统不是一个很好的选择。基于这样的原因,产生了很多专为Flash设备而设计的文件系统。
利用BusyBox构建嵌入式根文件系统
Linux下的根文件系统目录结构如下:
目录 习惯用法
/bin 用户命令所在目录
/dev 硬件设备文件及其它特殊文件
/etc 系统配置文件,包括启动文件等
/home 多用户主目录
/lib 链接库文件目录
/mnt 装配点,用于装配临时文件系统或其他的文件系统
/opt 附加的软件套件目录
/proc 虚拟文件系统,用来显示内核及进程信息
/root root用户主目录
/sbin 系统管理员命令目录
/tmp 临时文件目录/usr用户命令目录
/var 监控程序和工具程序所存放的可变数据
对于用途单一的嵌入式系统,上边的一些用于多用户的目录可以省略,例如/home、/opt、/root目录等。而/bin、/dev、/etc、/lib、/proc、/sbin和/usr目录,是几乎每个系统必备的目录,也是不可或缺的目录。
制作根文件系统,就是创建各种目录,并在里面创建各种文件。比如在/bin、/sbin目录下存放各种可执行程序,在/etc目录下存放配置文件,在/lib目录下存放库文件。使用Busy box制作根文件系统,就是利用Busy box来创建/bin、/sbin等目录下的可执行的文件。
5.4.1 Buybox简介
Buybox被非常形象地称为嵌入式Linux系统中的“瑞士军刀”,它是一个Uinx工具集。它可提供一百多种GNU常用工具、shell脚本工具等。虽然Buybox中的这些工具相对于GNU提供的完全工具有所简化,但是它们都很实用。
Buybox在设计上就充分考虑了硬件资源受限的特殊工作环境。它采用模块化设计,使得它很容易被定制和裁剪。可以根据实际的用途,裁剪出一个最精简的工具集。
Buybox的特色是所有命令都编译成一个文件:Buybox,其他命令工具(如sh、cp、ls等)都是指向Buybox文件的链接。在使用Buybox生成的工具时,会根据工具的文件名链接到特定的处理程序。这样,所有这些程序只需被加载一次,而所有的Buybox工具组件都可以共享相同的代码段,这在很大程度上节省了系统的内存资源也提高了应用程序的执行速度。
Buybox仅需要几百KB的空间就可以运行,这使得Buybox很适合嵌入式系统使用。同时,Buybox的安装脚本也使得它很容易建立基于Buybox的根文件系统。通常只需要添加/dev、/etc等目录以及相关的配置脚本,就可以实现一个简单的根文件系统。
5.4.2 Buybox的配置编译
将Buybox的源码从网站上下载到本地目录,运行命令:
$tarzxvf Buybox-1.1.3.tar.gz
$cd Buybox-1.1.3
$make menuconfig
在虚拟机上配置界面如图5.3所示
典型的Buybox文件大小在动态链接的情况下是300KB左右,静态链接为800KB左右,用它实现的文件系统完全可以控制在1MB以下。
5.4.3根文件系统镜像构建
通常情况下根文件系统镜像是系统构建的最后一步。利用交叉编译工具将应用程序、内核分别配置和编译之后,把获得的C链接库、内核模块以及应用程序按照FHS规则放到相应位置,利用文件系统自带的工具mkyaffs image来最终生成一个根文件系统镜像file system.yaffs.
加入微信
获取电子行业最新资讯
搜索微信公众号:EEPW
或用微信扫描左侧二维码