s3c2440上 移植yaffs2文件系统

busybox-1.15.2

编译器:arm-linux-gcc 4.3.2

平台:某开发板(s3c2440)

宿主:redhat 9.0

 

得到源码 busybox-1.15.2.tar.bz2

在任意目录解压源码,在任意目录制作文件系统框架~!~!~!

我是在用户模式下 家目录中解压的源码和制作的文件系统框架~!~!如图:

这里你能看到我是在家目录 kevin下的源码 busybox-1.15.2.tar.bz2 和制作的文件系统框架 rootfs。。

进入rootfs中你看到:

其中 linuxrc 是后期编译busybox得到的。。

好了,基本的前期任务算是完成了。

下面开始源码的编译:

#cd #vi Makefile

ARCH            ?= arm                  164行

CROSS_COMPILE   ?= arm-linux-           190行

# make menuconfig

展示如下图:

其中的选项大部分是默认的:

这里我们只需该Busybox Setting 目录下的内容。(若需要可以根据自己的情况选配其他选项)

  进入 Busybox Setting :

这里第一项保持默认(再次申明 若需要可以根据自己的情况选配)

进入第二项:(Build Options):

按照图中选择  退出配置下一项:

进入Busybox Library Tuning 选项:

 

其他默认 选上 vi-style line deiting commands

        Fancy shell prompts

这两项,从名字上您也能才到这两项是干什么的吧,,不明白的自己百度吧。。。。

 

配置完毕::退出保存。。。。

 

执行 #make

make完毕  接着执行 #make install

 

ok,,你会在busybox-1.15.2目录中看到_intall 目录。。

这个目录(_intall)中就是我们要用到的内容。。把这个目录的内容完全复制到你做的根文件系统框架中去。。在这里我的是rootfs。。

 

 

开始制作文件系统::

 

进入rooffs/dev目录,创建两个设备节点:

#mknod console c 5 1

#mknod null c 1 3

进入rootfs/etc目录,复制 busybox-1.15.2/example/bootfloop/etc/下的全部文件到此目录下。。

cp -r

复制宿主机下的 /etc/passwd     grop    shadow  到  此目录下。。

把passwd中的第一行:root:x:0:0:root:/root:/bin/bash中的bash改为ash

修改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/rcS文件:

#!/bin/sh
                                                                               
PATH=/bin:/sbin:/usr/bin:/usr/sbin
runlevel=S
prevlevel=N
umask 022
export PATH runlevel prevlevel
mount -a
mkdir /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 "hello kevin ...."
                                                                               
echo "Done"
                                                                               
export USER LOGNAME PS1 PATH

在此目录下新建sysconfig目录。。新建HOSTNAME文件  内容自定。将来作为主机名。。

注意以上都在/etc目录操作的。。。

 

现在该目录

到/usr下建立share目录复制主机相应目录下的zoneinfo到此目录。。

在/etc下建立localtime 并建立软链接。。。。

 

ln -s /usr/share/zoneinfo/Asia/Hong_Kong /etc/localtime

改目录到/lib下,

这个很重要,因为应用程序会用到库文件。所以自己想吧。。。。。

复制编译器中的lib目录下的内容。。

这里我复制两处的内容。给出目录。

toolchian/4.3.2/arm-none-linux-gnueabi/libc/armv4t/lib

toolchian/4.3.2/arm-none-linux-gnueabi/libc/lib

不过有的不需要,我也不知道哪几个不需要所以就都复制过来了。。。

 

ok  大功告成  用mkyaffs2image工具制作吧,,

mkyaffs2image rootfs roofs.bin

 

 

 

最终,烧到nandflash后文件系统虽挂载上了,但就是进步了文件系统。。呵呵。。

这里注意一下这几个文件

 

/etc 下的 inittab  profile  和/etc/init.d/下的rcS  还有 根目录下的 linuxrc文件 等的权限为了方便都chmod 777 **   

posted on 2011-09-28 17:18  深蓝工作室  阅读(7774)  评论(0编辑  收藏  举报