用busybox制作yaffs2文件系统

使用的工具:busybox-1.15.2.tar.bz2(官网下载地址)

编译工具:arm-linux-gcc4.1.2


 《》创建根文件系统目录,主要包括以下目录

/bin, /etc, /dev, /home, /lib, /mnt, /opt, /proc, /root, /sbin, /sys, /tmp, /usr, /var

首先建一个名为root_2.6.31的文件夹

mkdir root_2.6.31

然后在该文件夹下创建上述的目录

mkdir bin etc dev..................


《》下载busybox1.15.2的源码,然后解压。

tar xjvf busybox-1.15.2

进入源码目录,修改Makefile

第164行,CROSS_COMPILE = arm-linux-

第190行,ARCH = arm


执行make menuconfig配置busybox


Busybox Settings ------> 

Build Options ----->

Build BusyBox as a static binary(no shared libs)    选中静态编译

Installation Options ----->

(./_install) BusyBox installation prefix   指定安装目录,我指定为上一级的rootfs目录,则输入../rootfs,那么busybox就会自动在上一级生成该目录


退出配置界面并保存,然后执行make

完成后执行make install安装busybox,安装完成后就会在上一级目录生成rootfs目录,

里面包含生成的bin linuxrc sbin usr目录


将busybox生成的这四个目录拷贝到刚开始我们建立的根文件系统目录下

cp -rf * ../root_2.6.31/


《》建立配置文件

在dev目录下创建两个设备节点

mknod console c 5 1

mknod null c 1 3


进入etc目录,建立三个文件fstab  inittab profile

和一个文件夹init.d,并在init.d目录下建立rcS文件

拷贝/etc/passwd,  /etc/group,  /etc/shadow到当前目录下。

cp  /etc/passwd ./

cp  /etc/group ./

cp  /etc/shadow ./

编辑inittab文件:

内容如下:

# /etc/inittab
::sysinit:/etc/init.d/rcS
console::askfirst:-/bin/sh
::once:/usr/sbin/telnetd -l /bin/login
::ctrlaltdel:/sbin/reboot
::shutdown:/bin/umount -a -r

编辑fstab文件:

内容如下:

proc		/proc	proc	defaults    	0	0
tmpfs		/tmp	tmpfs	defaults	0	0
sysfs		/sys	sysfs	defaults	0	0
tmpfs		/dev	tmpfs	defaults	0	0
var		/dev	tmpfs	defaults	0	0

 编辑init.d/rcS文件:

内容如下:

#!/bin/sh

PATH=/bin:/sbin:/usr/bin:/usr/sbin
runlevel=S
prevlevel=N
umask 022
export PATH runlevel prevlevel


mount -a
mkdir -p /dev/pts
mount -t devpts devpts /dev/pts
echo /sbin/mdev > /proc/sys/kernel/hotplug
mdev -s
mkdir -p /var/lock
/bin/hostname -F /etc/sysconfig/HOSTNAME

编辑profile文件:

内容如下:

# Ash profile
# vim: syntax=sh
# No core files by default
#ulimit -S -c 0 > /dev/null 2>&1
USER="`id -un`"
LOGNAME=$USER
PS1='[\u@\h \W]# '
PATH=$PATH
HOSTNAME=`/bin/hostname`
echo "Processing /etc/profile... "
echo "Done"
export USER LOGNAME PS1 PATH

新建sysconfig目录,在里面新建HOSTNAME文件,内容为:TX2440A  (这个写什么随意,只是显示在终端命令行前的提示符,可以写自己的名字 )


拷贝库文件

进入lib目录,拷贝交叉编译器的库文件到lib目录下

cp -rf /opt/toolchains/arm920t-eabi/arm-angstrom-linux-gnueabi/lib/*.so* ./


到这里,文件系统的框架已经做好了,然后制作成yaffs镜像。

使用mkyaffs2image工具制作yaffs镜像,这个工具是在yaffs2源码包中utils目录下的mkyaffs2image.c文件编译得到的,

如果使用的是大页NANDFLASH,则需要修改源码再编译。


把编译好的可执行文件复制到/usr/bin目录下,

cp mkyaffs2image /usr/bin

制作文件系统镜像:

mkyaffs2image root_2.6.31 root_2.6.31.bin


至此文件系统就做好了,可以烧进开发板运行啦

你可能感兴趣的:(用busybox制作yaffs2文件系统)