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

内核版本: 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 中设置交叉编译,如下图所示。

OK6410上构建自己的根文件系统 - 星空海洋 - 星空海洋的博客

 

OK6410上构建自己的根文件系统 - 星空海洋 - 星空海洋的博客

 

在Busybox Settings  --->下选择Installation Options ("make install" behavior)  --->(/rootfs) BusyBox installation prefix来设置安装路径。

OK6410上构建自己的根文件系统 - 星空海洋 - 星空海洋的博客

 

我的rootfs是建在更目录下的,所以安装路劲为/rootfs。这个可根据自己实际目录设置。

在 Editors  --->  中选择编辑器,可根据自己的需要来选择。我选了patch,其他的都没选择。

OK6410上构建自己的根文件系统 - 星空海洋 - 星空海洋的博客

 

在 Networking Utilities  --->设置需要的网络服务。在今后需要用到telnet 服务,必须确保与telnet相关的被选择。

OK6410上构建自己的根文件系统 - 星空海洋 - 星空海洋的博客

 

在Save Configuration to an Alternate File中设置如图所示,就是配置完成之后生成 .config文件。执行make 的时候用到。

OK6410上构建自己的根文件系统 - 星空海洋 - 星空海洋的博客

 

其他的配置可以根据自己需要来配置,也可以保持默认状态。

配置完后,执行#make ,在执行make之前必须确保交叉编译工具安装上,交叉工具必须与编译内核的交叉工具一致。在编译busybox时,可能会出错,google和百度能解决出错所有问题。

Make完成之后,执行make install,此时在rootfs目录下就多/bin /sbin /usr  linuxrc 目录和文件。

OK6410上构建自己的根文件系统 - 星空海洋 - 星空海洋的博客

 


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开发板运行,如下图所示。

OK6410上构建自己的根文件系统 - 星空海洋 - 星空海洋的博客

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值