内核版本: Linux-3.0.1 (飞凌光盘提供)
交叉编译器版本:cross-4.2.2-eabi (飞凌光盘提供的)
操作系统平台: Linux -- ubuntu 10 .4
开发板平台: Arm -- OK6410
使用的工具: busybox-1.20.0
STEP 1:
在ubuntu中新建一个目录,rootfs,然后在rootfs目录下创建根文件系统目录,主要包括以下目录:
/etc,/dev,/home,/lib,/mnt,/opt,/proc,/root,/sys,/tmp,/var.
建一个名为 rootfs 的文件夹 mkdir rootfs
在该文件夹下创建以上目录 mkdir etc dev home lib mnt opt proc root sys tmp var
注:暂不需要建bin, sbin,usr 目录,在下面安装busybox时会自动创建这些目录。
STEP 2:
获 取 busybox-1.20.0 源 码 , 在http://www.busybox.net/downloads/ 找到busybox-1.20.0.tar.bz2这个压缩包,下载,解压:tar xjvf busybox-1.20.0.tar.bz2
解压完成之后,可以不需要在Makefile中修改CROSS_COMPILE ?= ,可以make menuconfig 中进行配置。
执行#make menuconfig 进行配置 busybox
在Busybox Settings ---> Build Options ---> 下选择Build with Large File Support (for accessing files > 2 GB) ,如果选择Build BusyBox as a static binary (no shared libs) 则为静态链接库。
在Cross Compiler prefix 中设置交叉编译,如下图所示。
在Busybox Settings --->下选择Installation Options ("make install" behavior) --->(/rootfs) BusyBox installation prefix来设置安装路径。
我的rootfs是建在更目录下的,所以安装路劲为/rootfs。这个可根据自己实际目录设置。
在 Editors ---> 中选择编辑器,可根据自己的需要来选择。我选了patch,其他的都没选择。
在 Networking Utilities --->设置需要的网络服务。在今后需要用到telnet 服务,必须确保与telnet相关的被选择。
在Save Configuration to an Alternate File中设置如图所示,就是配置完成之后生成 .config文件。执行make 的时候用到。
其他的配置可以根据自己需要来配置,也可以保持默认状态。
配置完后,执行#make ,在执行make之前必须确保交叉编译工具安装上,交叉工具必须与编译内核的交叉工具一致。在编译busybox时,可能会出错,google和百度能解决出错所有问题。
Make完成之后,执行make install,此时在rootfs目录下就多/bin /sbin /usr linuxrc 目录和文件。
Step 3
在 dev 目录下,创建两个设备节点:
#mknod console c 5 1
#mknod null c 1 3
在etc 目录下,添加文件:
拷贝 Busybox-1.20.0/examples/bootfloopy/etc/* 到/rootfs/ect/目录下。
# cp –r busybox-1.20.0/examples/bootfloopy/etc/* /rootfs/ect/
包括文件:fstab init.d inittab profile
进入etc 目录
拷贝/etc/passwd, /etc/group, /etc/shadow 到当前目录下。
# cp /etc/passwd ./
# cp /etc/group ./
# cp /etc/shadow ./
修改 inittab 文件:
内容如下:
::sysinit:/etc/init.d/rcS
::respawn:-/bin/sh
::askfirst:-/bin/sh
::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
/bin/hostname WFJ6410
mount -a
mkdir /dev/pts
mount -t devpts devpts /dev/pts
echo /sbin/mdev > /proc/sys/kernel/hotplug
mdev -s
mkdir -p /var/lock
修改 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='[$USER@$HOSTNAME]# '
PATH=$PATH
HOSTNAME=`/bin/hostname`
echo "Processing /etc/profile... "
echo "Done"
export USER LOGNAME PS1 PATH
拷贝库文件:
进入 lib 目录,拷贝交叉编译器的库文件到 lib 目录下
cp -f -a /usr/local/arm/4.2.2-eabi/lib/*.so* ./
在lib目录下就多了很多文件。
到这里,文件系统的框架已经做好。可以通过飞凌提供的Yaffs2文件系统制作工具来制作yaffs2文件。我的开发板是2G的,所以我使用mkyaffs2image-nand2g来制作。把mkyaffs2image-nand2g 考跟目录下执行./mkyaffs2image-nand2g rootfs rootfs.yaffs2即可生成rootfs.yaffs2文件。
下载到OK6410A开发板运行,如下图所示。