JFFS2文件系统的制作

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

使用新的busybox-1.13.3制作jffs2文件系统

由于之前使用的文件系统中的busybox是1.5版本,结果很多工具都没有完善,这一次,在上下载了当前的最新稳定版本,busybox-1.13.3来制作,总算搞定了,但也出现了一些问题,贴出我的过程跟大家分享一下,也给有需要的人一点帮助,希望如此。

全文如下:

2009-3-26

陈纪煌

今天尝试了移植新的文件系统,使用的是busybox-1.13.3稳定版本

由于之前所使用的版本是busybox-1.5.0,结果发现很多东西无法支持,比如nfs无法挂在,并且clear等工具无法正常使用

所以下了一个新的版本进行尝试

1.解压该包

tar xf busybox-1.13.3.tar.bz2

cd busybox-1.13.3

2.修改Makefile

找到

CROSS_COMPILE ?=

修改为CROSS_COMPILE ?=arm-linux-

找到

ARCH ?= $(SUBARCH)

修改为

ARCH ?= arm

3.进行默认配置

make defconfig

4.对配置信息进行修改

make menuconfig

检查Miscellaneous Utilities--->

taskset 是否已经去除

同时设置如下:

Busybox Settings --->

Build Options --->

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

()Cross Compiler prefix=/usr/local/arm/3.4.1/bin/

Installation Options --->

[*]Don't use /usr

BusyBox installation=${PROJECT}/rootfs/rootfs_1.13

这几个设置对于之前做过相关工作的人来说是比较熟悉的,都很容易知道为何如此做。make

make install

编译出错

修改networking/interface.c 818行改为.type = -1

这样编译就能通过。我使用gcc来编译是能通过的,但是用arm-linux-gcc编译就无法通过,应该是编译起的函数库的问题。因为报错信息是关于网络协议中一个宏的定义,就好像socket中的AF_INET差不多。

编译结束后,在${PROJECT}/rootfs/下建立rootfs_1.13文件夹

并在其中建立如下路径

mkdir bin sbin lib etc dev mnt usr/bin usr/sbin usr/lib proc sys -p

并执行make install则将busybox安装

5.加入运行需要的库文件

写了一个脚本,把这个放在/usr/local/arm/3.4.1/arm-linux/lib/下执行,目的是将一些程序运行时需要的函数库复制到目标文件系统的lib路径下

=========以下是脚本内容===================

#!/bin/bash

#You should put this file cp.sh in $(CROSS-COMPILE)/lib/

ROOTFS_LIB=${PROJECT}/rootfs/rootfs_1.13/lib/

for file in libc libcrypt libdl libm libpthread libresolv libutil

do

cp $file-*.so ${ROOTFS_LIB}

cp -d $file.so.[*0-9] ${ROOTFS_LIB}

done

cp -d ld*.so* ${ROOTFS_LIB}

#end script

=============脚本结束========================

6.在${PROJECT}/rootfs/rootfs_1.13/etc/下建立如下文件或者路径

vi fstab

内容是:

proc /proc proc defaults 0 0

sysfs /sys sysfs defaults 0 0

vi priflie

内容是:

#!/bin/sh

#You should put this file profile into your $(CONFIG_PREFIX)/etc/

echo "Set seaech library in /etc/profile"

export LD_LIBRARY_PA TH=/lib:/usr/lib

echo "Set user path in /etc/profile"

export PA TH=/bin:/sbin:/usr/bin:/usr/sbin

alias ll='ls -l'

/sbin/ifconfig eth0 218.192.161.80 netmask 255.255.255.0

/sbin/ifconfig lo 127.0.0.0

echo "Configure net done"

mkdir init.d

cd init.d

vi rcS

内容是

#!/bin/sh

/bin/mount -a

这样就差不多大功告成了

7.制作jffs2文件系统

使用mkfs.jffs2

mkfs.jffs2 -r rootfs_1.13/ -o rootfs.jffs2 -p -l -n -e 0x8000 -m size

生成的文件rootfs.jffs2就是要烧写的文件系统

8.烧写过程

将生成的rootfs.jffs2放到tftpd服务路径下,我的是在/tftpboot/

启动u-boot

tftp 0x30008000 rootfs.jffs2

*****************************************************

nand erase 0x600000 0x3a00000

这里清除哪里就跟板的设置有关了

nand write 0x30008000 0x600000 xxxxx

xxxxx表示你下载的rootfs.jffs2的大小,16进制表示,当然,肯定是比0x3a00000小了

9.启动后,总是出现如下提示

can't open /dev/tty2: No such file or directory

相关文档
最新文档