使用的工具: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
内容如下:
#!/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
拷贝库文件
进入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
至此文件系统就做好了,可以烧进开发板运行啦