您的位置:首页 > 其它

OK6410上构建自己的根文件系统

2012-12-19 16:26 239 查看
内核版本: 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开发板运行,如下图所示。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: