新闻中心

EEPW首页>嵌入式系统>设计应用> 嵌入式根文件系统的移植和制作详解

嵌入式根文件系统的移植和制作详解

作者: 时间:2012-07-31 来源:网络 收藏

但是它的只读属性同时又是它的一大缺陷,使得用户无法对其内容对进扩充。

Cramfs映像通常是放在Flash中,但是也能放在别的里,使用loopback 设备可以把它安装别的里。

(4) Romfs

传统型的Romfs是一种简单的、紧凑的、只读的文件系统,不支持动态擦写保存,按顺序存放数据,因而支持应用程序以XIP(eXecute In Place,片内运行)方式运行,在系统运行时,节省RAM空间。uClinux系统通常采用Romfs文件系统。

其他文件系统:fat/fat32也可用于实际系统的扩展存储器(例如PDA, Smartphone, 数码相机等的SD卡),这主要是为了更好的与最流行的Windows桌面操作系统相兼容。ext2也可以作为Linux的文件系统,不过将它用于 FLASH闪存会有诸多弊端。

2. 基于RAM的文件系统

(1) Ramdisk

Ramdisk是将一部分固定大小的内存当作分区来使用。它并非一个实际的文件系统,而是一种将实际的文件系统装入内存的机制,并且可以作为根文件系统。将一些经常被访问而又不会更改的文件(如只读的根文件系统)通过Ramdisk放在内存中,可以明显地提高系统的性能。

在Linux的启动阶段,initrd提供了一套机制,可以将内核映像和根文件系统一起载入内存。

(2)ramfs/tmpfs

Ramfs是Linus Torvalds开发的一种基于内存的文件系统,工作于虚拟文件系统(VFS)层,不能格式化,可以创建多个,在创建时可以指定其最大能使用的内存大小。(实际上,VFS本质上可看成一种内存文件系统,它统一了文件在内核中的表示方式,并对磁盘文件系统进行缓冲。)

Ramfs/tmpfs文件系统把所有的文件都放在RAM中,所以读/写操作发生在RAM中,可以用ramfs/tmpfs来存储一些临时性或经常要修改的数据,例如/tmp和/var目录,这样既避免了对Flash存储器的读写损耗,也提高了数据读写速度。

Ramfs/tmpfs相对于传统的Ramdisk的不同之处主要在于:不能格式化,文件系统大小可随所含文件内容大小变化。

Tmpfs的一个缺点是当系统重新引导时会丢失所有数据。

3. 网络文件系统NFS (Network File System)

NFS是由Sun开发并发展起来的一项在不同机器、不同操作系统之间通过网络共享文件的技术。在Linux系统的开发调试阶段,可以利用该技术在主机上建立基于NFS的根文件系统,挂载到嵌入式设备,可以很方便地修改根文件系统的内容。

以上讨论的都是基于存储设备的文件系统(memory-based file system),它们都可用作Linux的根文件系统。实际上,Linux还支持逻辑的或伪文件系统(logical or pseudo file system),例如procfs(proc文件系统),用于获取系统信息,以及devfs(设备文件系统)和sysfs,用于维护设备文件。

我们要的开发板的存储设备为Nandflash,我们可以用应用比较广泛的cramfs文件系统。

二.准备

1.目标板

我们还是使用之前过程一直使用的开发板参数。

2.软件准备

(1)Busybox

Busybox被形象的称为嵌入式linux系统中的瑞士军刀,可以从这个称呼中看到busybox是一个集多种功能于一身的东西,它将许多常用的UNIX命令和工具结合到了一个单独的可执行程序中。虽然与相应的GNU工具比较起来,busybox所提供的功能和参数略少,但在比较小的系统(例如启动盘)或者嵌入式系统中,已经足够了。

Busybox在设计上就充分考虑了硬件资源受限的特殊工作环境。它采用一种很巧妙的办法减少自己的体积:所有的命令都通过“插件”的方式集中到一个可执行文件中,在实际应用过程中通过不同的符号链接来确定到底要执行哪个操作。例如最终生成的可执行文件为busybox,当为它建立一个符号链接ls的时候,就可以通过执行这个新命令实现列目录的功能。采用单一执行文件的方式最大限度地共享了程序代码,甚至连文件头、内存中的程序控制块等其他操作系统资源都共享了,对于资源比较紧张的系统来说,真是最合适不过了。

在busybox的编译过程中,可以非常方便地加减它的“插件”,最后的符号链接也可以由编译系统自动生成。

编译busybox

Busybox的编译过程与内核的编译过程很接近都是先make menuconfig进行配置,然后在make进行编译。

【1】从http://www.busybox.net/downloads/下载busybox工具。这里我们选择busybox-1.13.4.tar.bz2

【2】解压busybox-1.13.4.tar.bz2使用命令

tar jxvf busybox-1.13.4.tar.bz2

【3】进入busybox目录,修改Makefile 在164行 CROSS_COMPILE=arm-linux-

【4】Make menuconfig进行配置,可以选择静态编译,如果是动态编译的话要拷贝相应的库文件,默认配置保存即可。

【5】make all install

这是会在busybox目录下生成_install文件夹。

(2)文件系统打包工具

【1】从http://prdownloads.sourceforge.net/cramfs/下载cramfs工具。

【2】解压cramfs-1.1.tar.gz使用命令:tar zxvf cramfs-1.1.tar.gz

【3】进入cramfs工具的根目录执行make。

【4】Make后在cramfs工具的根目录中就会生成一个mkcramfs文件,这个就是我们需要的工具。

三.过程

1.建立根文件系统目录

就是之前busybox生成的_install目录 cd …/_install

2.创建各种必要的系统文件目录。

mkdir dev lib tmp proc

3.创建设备文件。

cd dev

mknod fb0 c 29 0 建立framebuffer设备文件

mknod ts0 c 13 128 建立触摸屏设备文件

mknod console c 5 1

mknod tty0 c 4 0

mknod tty1 c 4 1

mknod tty2 c 4 2

mknod tty3 c 4 3

mknod tty4 c 4 4

linux操作系统文章专题:linux操作系统详解(linux不再难懂)

linux相关文章:linux教程




评论


相关推荐

技术专区

关闭