文档库 最新最全的文档下载
当前位置:文档库 › busybox_rootfs

busybox_rootfs

busybox_rootfs
busybox_rootfs

使用busybox制作根文件系统

版本:Rev1.0

https://www.wendangku.net/doc/c41522314.html,

2008-08

更新记录2008.08.29

文档创建。

使用busybox制作根文件系统

-基于Virtual PC

Team MCUZone 本文叙述使用busybox创建Linux的根文件系统的过程。包含了busybox的编译,初始化文件的建立,mtd工具的编译及jffs2格式根文件映像的生成。Linux版本选择了2.6.24, 开发环境选择了Virtual PC,其它软件可以类推。

一,准备工作

1.使用Virtual PC安装Linux虚拟机

请参照本站另一篇文档《基于VPC建立ARM_Linux开发环境》。

2.下载相关软件包

下载下列软件(可在本站ftp上下载),并传输到Linux虚拟机下。

busybox-1.11.2.tar.bz2

zlib-1.2.3.tar.gz

mtd-snapshot-20050519.tar.bz2

3.准备相关环境

请参照本站另一篇文章《为SAM926X编译U-boot》为9261编译好u-boot。

请参照本镇另一篇文章《9261上的Linux初步应用3》设置好主机的NFS等环境。

二,配置和编译busybox

1.配置busybox

在编译之前,必须要对busybox进行相应的配置:

配置编译为静态链接,设置工具链:

设置安装路径:

一些设置:

Applets选项以下都是一些具体的applet配置选项,根据实际需要选择:

配置prompt以及alias:

网络设置中的ftp和telnetd相关服务:

设置完成,保存退出。

2.编译busybox

在命令行输入make即可开始编译:

等待一段时间后,编译即会完成,输入下面命令:

在该过程,一系列softlink被生成,完成后可以看到生成了相应的目录结构。

三,制作根文件系统

1.建立根文件系统结构

在linux虚拟机的NFS所在目录建立一个rootfs文件夹:

建立相关文件夹:

2.复制文件

首先将busybox编译后生成的文件都复制到rootfs:

复制编译器所带的库文件到lib:

3.新建相关文件

首先删除rootfs下的linuxrc文件。

创建为shell导入全局变量的/etc/profile文件:

创建初始化文件/etc/inittab:

以及/etc/fstab:

使用了1MB内存作为tmpfs,可以用于存放一些运行时的log(关机会丢失,但可以避免反复读写NAND)。

增加初始化脚本/etc/init.d/rcS:

修改其属性:

建立/etc/init.d/rc.local,启动本地服务,下面例子中会启动telnetd:

完成后需要修改其属性775。

创建mdev配置文件/etc/mdev.conf,内容可以为空:

配置name server配置文件/etc/resolv.conf:

创建/etc/host.conf:

创建/etc/hosts:

创建网络应用程序用到的标准服务端口映射表/etc/services:

建立库相关的/etc/ld.so.conf:

建立用户和组相关文件

为root建立home目录:

4.建立设备节点

在/dev文件夹下建立相关设备节点:

5.安装APP

复制一些app到系统:

四,测试根文件系统

为了测试rootfs,可以先用NFS方式启动系统。

在uboot下设置linux启动参数:

指定根文件系统,也就是rootfs采用nfs方式。

连接开发板到网络,启动后的效果:

使用root登陆。

Telnetd, boa,Samba已经运行。

在pc上telnet上开发板:

到/etc下运行ldconfig生成ld.so.cache:

在PC上打开一个网页,浏览开发板ip地址:

浏览板子上的网络共享文件夹:

使用mplayer:

LCD显示:

五,生成jffs2

1.编译zlib

将zlib展开,首先配置:

修改Makefile,使用arm-none-linux-gnueabi-gcc编译:

输入命令make,然后make install:

安装后的效果:

2.编译MTD工具

将mtd-snapshot-20050519.tar.bz2展开,首先编译开发板上可用的版本。

cd到util路径,修改Makefile,修改工具链,并设置好DESTDIR:

输入make开始编译,完成后生成一些列工具:

运行make install安装相应的路径:

编译ARM版本完成后,开始编译PC版本工具,使得在PC上可以生成jffs2的文件映像。首先修改Makefile:

然后make即可生成可执行文件:

3.生成jffs2格式的rootfs

使用命令du –k (-m)看看当前文件系统的大小:

运行下面命令将rootfs的文件夹做成jffs2格式的根文件系统。-e 参数指明擦除大小为128KB,-s指明page大小为2048:

./mkfs.jffs2 -r /nfs4arm/rootfs/ -o /nfs4arm/rootfs_mcuzone.jffs2 -e 0x20000 -s 0x800 -n

运行开发板,首先使用NFS方式。一路cd到/usr/sbin下:

看看mtd info:

首先擦除/dev/mtd0:

在NFS环境下,可以将jffs2的映像复制到根文件系统的/usr/testapp下:

那么在板子上即可看到该文件:

下面需要将映像烧录到NAND上:

烧录完成后可以重启开发板,在u-boot下修改启动命令参数:

Boot完成后的log:

jffs2文件系统mount OK。

文件系统的情况:

六,一些事项

如果编译遇到问题可以先检查一下环境,然后就是工具链。请按照上文描述的步骤操作。

七,后记

以上的叙述中并没有补充Linux的相关知识,有问题的时候可以看Linux官网或者google。

如果有任何问题和建议,请到MCUZone论坛发帖,谢谢!

相关文档