snifer

【原创】制作Cramfs 格式的根文件系统

0
阅读(2347)

今天跟几个老师一起做了一一个根文件系统,与大家分享一下。

一个使用linux 内核的嵌入式系统中的root 文件系统必须包括支持完整linux 系统的全部东西,因此,它至少应包括:基本文件系统结构;至少含有目录/dev、/proc、/bin、/etc、/lib、/usr;最基本的应用程序,如sh、ls、cp、mv 等;最低限度的配置文件,如inittab、fstab 等;设备:/dev/null、/dev/console、/dev/ tty*、/dev/ttyS*、对应flash 分区的设备节点等;基本程序运行所需的函数库。但由于嵌入式系统资源相对紧缺,在构建的时候要根据系统进行定制。

由于条件及时间有限,实验中仅介绍了其中的一部分,小型嵌入式 Linux 系统安排 root 文件系统时有一个常用的利器:BusyBox。Busybox

是 Debian GNU/Linux 的大名鼎鼎的 Bruce Perens 首先开发,使用在 Debian 的安装程序中。后来又有许多 Debian developers 贡献力量,这其中尤推 busybox 目前的维护者 Erik Andersen,他患有癌症,可是却是一名优秀的自由软件开发者。

Busybox 编译出一个单个的独立执行程序,就叫做 busybox。但是它可以根据配置,执行 ash shell 的功能,以及几十个各种小应用程序的功能。这其中包括有一个迷您的 vi编辑器,以及其他诸如 sed, ifconfig, mkdir, mount, ln, ls, echo, cat ... 等等这些都是一个正常的系统上必不可少的,但是如果我们把这些程序的原件拿过来的话,它们的体积加在一起,让人吃不消。可是 busybox 有全部的这么多功能,大小也不过 100K 左右。而且,用户还可以根据自己的需要,决定到底要在 busybox 中编译进哪几个应用程序的功能。这样的话,busybox 的体积就可以进一步缩小了。将文件系统放置到开发板之前需要用mkcramfs 工具打包,我们所使用的物理文件系统是crafs,这个工具可以将制作好的文件系统按照cramfs 支持的格式进行压缩。Mkcramfs工具的生成和具体参数的使用在上边已有说明。

实验步骤如下:

cd /arm2410s/exp

mkdir rootfs

cd rootfs/

cp –arf /arm2410s/busybox-1.00-pre10/ /arm2410s/root/ .

cd busybox-1.00-pre10/

其中busybox-1.00-pre10 为busybox 工具源代码,root 为ARM2410-S 教学平台的发布版跟文件系统内容。

a)、配置,安装busybox

make menuconfig

配置界面如图所示:

进行到这一步时注意:

General Configuration --->

[*] Use the devpts filesystem for Unix98 PTYs

Build Options --->

[*] Build BusyBox as a static binary (no shared libs)

[*] Do you want to build BusyBox with a Cross Compiler?

选择交叉编译(/opt/host/armv4l/bin/armv4l-unknown-linux-gcc) Cross Compiler prefix 回车将路径改为/opt/host/armv4l/bin/armv4l-unknown-linux-

Installation Options ---> [ ] Don't use /usr

Init Utilities ---> 全都不要

blob.png

Login/Password Management Utilities ---> 全都不要

Networking Utilities --->

* make dep

* make

* make PREFIX=./root install

注意:

若 make dep 不起作用,请在busybox-1.00-pre10/ 目录下用“rm ./.depend” 命令删除.depend 文件,该文件保存了上次编译的依赖关系

编译完后,会在当前目录下生成 root 目录,该目录内容如下:

[root@BC busybox-1.00-pre10]# ls root/

bin linuxrc sbin usr

bin linuxrc sbin usr 目录中包含了常用到的命令,这些命令可以替代ARM2410-S 教学平台的发布版跟文件系统相应目录的命令。

b)、替代教学平台原跟文件系统相应目录

cd /arm2410s/exp/rootfs/root/

rm -rf bin/ sbin/ usr/

cp -arf /arm2410s/exp/rootfs/busybox-1.00-pre10/root/* .

c)、生成Cramfs 文件系统

cd /arm2410s/exp/rootfs/

mkcramfs root root.cramfs

d)、烧写根文件系统(root)

启动vivi,在vivi 状态下,输入烧写根文件的命令为:tftp flash root root.cramfs。如图所示:

blob.png

烧写很快,大约几秒钟就OK了,寒假要开始了,很忙!