微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 嵌入式Linux文件系统的构建

嵌入式Linux文件系统的构建

时间:10-08 来源:互联网 点击:

要bash,可删除。这样,各个文件和程序均在自己所属的组和用户中运行,不会互相干扰。使得整个系统有条不紊,不会发生程序越权误操作的现象。保证了操作系统本身的安全性,也让试图窃取或破坏数据的攻击者无机可乘。

根据需要,在基本文件系统上添加应用程序基本文件系统完成后,再根据开发的实际要求,在上面再构筑一些应用和服务。例如,对于所需求的网络功能,我们在/bin 中加入netstat、ping,在/sbin中加入ifconfig、route、xinetd等网络程序:为了将一些服务以模块的方式加载,以缓解内核的负担 ,我们在/sbin中加入了insmod、lsmod、modprobe、depmod、rmmod等有关操作模块的命令。还有,为了搭建开发过程的交叉编译的环境,需要用到串口通讯,所以在/sbin中加入pppd的命令,在/etc中加入PPP目录及其配置文件等等。

到此,一个满足系统需求的嵌入式Linux文件系统就基本构造完成。为了系统能在特定的嵌入式硬件设备上运行,系统中所有的二进制文件都必须是经过特定的嵌入式开发编译工具编译,将编译好的文件系统烧至嵌入式系统的开发板中,调通串口,就可以进行调试和进一步的开发了。

嵌入式Linux 文件系统的进一步开发

按照上一部份给出的文件系统体系结构,文件系统的实现主要在VFS层、物理文件系统层和MTD层。在Linux 2.4以后的版本中,JFFS2已经作为一种标准的文件系统被支持,所以使得Linux的VFS支持JFFS2并不是一件难事,在源代码中也不用做修改。下面给出在MTD层,Linux的源代码做的一些修改。另外,叙述JFFS2物理文件系统映像文件的生成。

支持MTD设备

对MTD设备的支持要经过配置内核、编写设备驱动程序和建立MTD设备这几个步骤。

第一步,配置内核参数,选中Memory Technology Devices(MTD)support,下面的子项中至少要选择MTD partitioning support、Direct char device access to MTD devices和Caching block device access to MTD devices这三项。其他的有关NFTL,CFI的支持根据需要选取。

第二步,编写针对目标平台Flash设备的MTD驱动程序,主要实现创建MTD分区和删除MTD分区的函数。创建分区的流程见图3所示。删除分区的函数比较简单,如果存在MTD分区,就调用del_mtd_partitions(struct mtd info*)删除分区,并且删除为MTD设备创建的映射表。

插图3: 创建MTD分区

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

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

JFFS2映象文件的生成

首先,需要内核支持JFFS2,因此在配置内核参数时,选中File Systems下的Journaling Flash File System v2(JFFS2)support。假设从一个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的映像文件,将它下载到目标平台。最后就是如何挂载它,使它成为一个根文件系统了。在调试阶段和最终系统成型之后,挂载的方式有所不同,而具体的挂载方法在前面已叙述,这里不再重复说明。

结语

我们构造了一个嵌入式版本的Linux文件系统,它使得内核在系统尽量精简的情况下能够运行起来,并满足产品和系统各方面的要求。其中,为文件系统配置用户和属组以达到一定的安全性更是系统的一大特色。另外,在这个嵌入式文件系统中,引入了VFS的支持,虽然牺牲了一些空间,但是大大方便了今后各种物理文件系统的动态加载。Linux的文件系统事实上非常的庞大,构造一个嵌入式的Linux文件系统是一个很复杂的过程。如何让文件系统在保证安全的前提下精简得更紧凑、运行得更有效率,是需要深入探索的一个课题。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top