参考《开源》杂志08年第9期嵌入式Linux文件系统的构建。

 

嵌入式文件系统有安全性和均衡负载这样的要求,而日志型文件系统可以很好地解决安全性的问题。
经过几年来的发展。日志型的嵌入式文件系统已成为嵌入式文件系统的主流。

 

● 构建文件系统

首先建立一个文件系统的工作空间。如图:

 

整个文件系统中除了tmp 和var目录放在SDRAM内以外,其他所有目录都放在Flash中。

 

物理文件系统是JFFS2 ,考虑到扩充物理文件系统的要求,保留了Linux的VFS层次。考虑到
存储设备扩充的要求,在Linux内核中加入了对MTD设备的支持。如图:

 

构建文件系统最基本的要求就是系统能够在此基础上启动运行起来,所以,/sbin下的init程序必不可少。
init程序是引导过程完 成后内核运行的第一个程序,它能启动全部其他程序。

init会执行/etc/inittab配置文件。

 

把嵌入式环境所需要的文件统统cp到对应的目录,如/lib下存放库,/bin下是应用程序。

 

·MTD设备配置

第一步,配置内核参数

     对于flash设备都需要MTD设备的支持,需要在内核中选中Memory Technology Devices(MTD)support,

 

第二步,编写针对目标平台Flash设备的MTD驱动程序

    就像写其他linux驱动程序一样,要给MTD设备完成相应的驱动程序。这属于驱动程序范畴,以后再研究。

 

第三步,将修改过的MTD驱动文件作为内核文件的补丁,并给内核文件打上这个补丁,最后,
编译生成内核文件。

 

第四步,使用mknod命令建立MTD设备。

 

·JFFS2映象文件的生成

第一步,配置内核

配置内核,选中(JFFS2)suppor

 

假设从一个RAMDISK的文件系统中得到建立根文件系统所需的全部文件和系统所有的设备等信息。
制作步骤如下:

 

第一步,在开发主机上将这个Ramdisk以loop的方式挂接到某个临时目录下。在这个目录下就出现
了一些文件系统的基本文件和信息,可以做增删以达到定制的目的。

 

第二步,修改/etc/rc.d/rc.sysinit
文件,使得文件系统在remount时不会出现只读的情况。具体修改如下:
Mount -n -o remount.rw//加入这一行
Mount -n -t proc/proc rw//在这一行中加入-n

第三步,使用mkfs.jffs2生成JFFFS2的映像文件。具体的命令格式如下:
Mkfs.jffs2 -d<文件系统所在目录>-o<映像文件名>
这时,就得到了一个JFFS2的映像文件,将它下载到目标平台。最后就是如何挂载它,使它成为一个
根文件系统了。

 

这篇文章到了后边具体操作的时候说明的还是不够细致,只是一个大体的流程,每一个步骤都需要很多其他知识,就单单MTD驱动这块,就够写的。以后我再找更详细的资料进行补充。

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐