• 易迪拓培训,专注于微波、射频、天线设计工程师的培养
首页 > 无线通信 > 技术文章 > 基于嵌入式Cramfs 的根文件系统配置新方法

基于嵌入式Cramfs 的根文件系统配置新方法

录入:edatop.com     点击:

以下 是以蓝海微芯LJD-2410DVK-I 嵌入式开发板所提供的root.cramfs 根文件系统为基础进行修 改和配置的,root.cramfs 是只读型的文件系统,为了能向里边加入用户应用程序,需要将其 重新挂载、压缩及解压缩成新的目录,步骤如下:

在root.cramfs 的相同目录下新建立一个目录,如myroot。

在终端中执行命令:mount -o loop root.cramfs myroot, tar –cvf myroot.tar myroot。这两条 命令的功能分别是将已有的root.cramfs 以块设备的方式挂载到myroot 并将myroot 压缩为 myroot.tar。

为不出现目录重名,将 myroot.tar 拷贝到另一目录进行解压:tar –xvf myroot.tar,解压 出来的文件夹myroot 即是即将作为根文件系统的目录,它是可读可写的。

将已经交叉编译并调试过的用户目标程序拷贝到myroot 目录下的/usr/bin 目录下,此目 录为根文件系统中为用户程序准备的目录。同时将用户程序所需要用到的关联库文件拷贝到 myroot 目录下的/usr/lib 目录下,用户程序的关联库文件可通过ldd 命令查看,ldd 命令格式 如下:

Ldd [选项] 文件

选项有-v:打印ldd 的版本号;-d:执行符号重部署,并报告缺少的目标对象(只对ELF 格式适用);-r:对目标对象和函数执行重新部署,并报告缺少的目标对象和函数(只对ELF 格式适用);-h:帮助信息。

执行如下命令来查看应用程序所关联的库:

Ldd –v 程序名

将交叉编译工具目录下的/3.4.1/arm-linux/lib 下的libgcc-s.so.*,libstdc++.so.6 复制到 myroot 目录下的/root/lib 目录下。

3.3 配置Cramfs根文件系统

为使Cramfs 能支持应用程序的写操作,需要修改文件系统的配置文件,即/etc 目录下的 文件。

(1) 修改/etc/init.d/rcS 文件

/etc/init.d/rcS 是Linux 的系统初始化脚本,修改步骤如下:

用 vi 或其它文本工具打开myroot 目录下的/etc/init.d/rcS 文件;

在文件中增加:

/bin/mount –n –t ramfs ramfs /mnt/yaffs(yaffs 是文件系统的一个目录);

/bin/mkdir /mnt/yaffs/Qtopia;

/bin/mkdir /mnt/yaffs/Qtopia/tmp。

保存并退出 vi 或文本工具。

根文件系统的配置如图 1 所示。

\

图1 根文件系统的配置

当系统启动并执行到系统初始化脚本/etc/init.d/rcS 时,mount 命令将/mnt/yaffs 目录挂载 为ramfs 类型的随机存储文件系统,并在此文件系统上建立Qtopia 和Qtopia/tmp 目录[5], /Qtopia/tmp 目录即为应用程序可能对文件系统进行写操作的临时文件目录,故应用程序便可 对/mnt/yaffs 目录进行读写操作,保障有读写操作要求的应用程序的正常执行。

(2) 修改/etc/profile 文件

用 vi 或其它文本工具打开myroot 目录下的/etc/profile 文件;

将 PATH 改为:PATH=/bin: /sbin: /usr/sbin: /用户程序目录名

在文件中新增以下语句:

LD_LIBRARY_PATH=/lib: /usr/lib: /用户库目录名

export PATH LD_LIBRARY_PATH

保存并退出 vi 或文本工具。

其中,修改环境变量 PATH 的目的是使系统命令/程序目录扩展到用户程序目录,这样, 当执行用户应用程序时,系统才能找到相应的共享文件等;修改LD_LIBRARY_PATH 的目的是将系统的共享库路径扩展为包含系统程序和用户程序库文件路径的库文件路径,以便在 运行用户程序时能使系统找到应用程序所使用的库文件。

4 制做Cramfs 根文件系统

制做Cramfs 根文件系统,即是把上述配置好的myroot 目录文件夹压缩成为能够让Linux 内核支持的Cramfs 格式的映像文件[6]。

制做 Cramfs 根文件系统需要用到mkcramfs 工具,mkcramfs 工具用来创建Cramfs 文件系统,它能把配置好的根文件系统压缩成Cramfs 格式的根文件系统,压缩比可达到2:

1,下面是mkcramfs 命令的格式:

mkcramfs [-h] [-e edition] [-i file] [-n name] dirname outfile

其中参数含义分别是-h:显示帮助信息;-e edition:设置生成的文件系统中的版本 号;-i file:将一个文件映象插入到文件系统中(只能在Linux2.4.0 以后的内核版本中使用); -n name:设定Cramfs 文件系统的名称;dirname:指明需要被压缩的整个目录树;outfile: 最终输出的文件。

将mkcramfs 工具拷贝到myroot 相同目录下,在终端中执行:

mkcramfs myroot myroot.cramfs

此命令所生成的myroot.cramfs 即为可下载到开发板上的根文件系统。

5 结束语

通过对嵌入式Linux 根文件系统结构特点的分析,提出了基于Cramfs 根文件系统配置 的新方法,使嵌入式根文件系统具有了可读、可写的功能,同时也减小了根文件系统所占的 存储空间。

来源:维库开发网

上一篇:基于Qtopia的嵌入式中文输入法设计
下一篇:便携式可控硅充电器工作原理及制作

手机天线设计培训教程详情>>

手机天线设计培训教程 国内最全面、系统、专业的手机天线设计培训课程,没有之一;是您学习手机天线设计的最佳选择...【More..

射频和天线工程师培训课程详情>>

  网站地图