Yaffs2根文件系统移植

时间:2020-11-29 16:09:49

         Yaffs2根文件系统移植

一、创建文件夹

1.创建主工作文件夹【mkdir arm2410

2.【cd arm2410

3.创建内核移植文件夹【mkdir rootfs

二.自动生成根文件系统文件夹结构【rootfs】文件夹

 1.进工作目录[cd rootfs]

 2.编辑生成脚本文件[gedit mkrootfs.sh] 将以下内容拷贝到弹出的窗口中,注意保存!!

#! /bin/sh

    echo "creatint rootfs dir......"

    mkdir rootfs

    cd rootfs

    echo "making dir : bin dev etc lib proc sbin sys usr"

    mkdir bin dev etc lib proc sbin sys usr #必备的8个目录

    mkdir usr/bin usr/lib usr/sbin lib/modules

# Don't use mknod ,unless you run this Script as root !

# mknod -m 600 dev/console c 5 1

# mknod -m 666 dev/null c 1 3

    echo "making dir : mnt tmp var"

    mkdir mnt tmp var

    chmod 1777 tmp

    mkdir mnt/etc mnt/jffs2 mnt/yaffs mnt/data mnt/temp

    mkdir var/lib var/lock var/log var/run var/tmp

    chmod 1777 var/tmp

    echo "making dir : home root boot"

    mkdir home root boot

    echo "done"

3.设置脚本文件可执行权限【chmod 777 mkrootfs.sh并执行./mkrootfs.sh

三、安装busybox工具(我用的是busybox-1.13.3 ,也可以使用其他版本)

1. 解压缩工具包【tar jxvf busybox-1.13.3.tar.gz

2.修改Makefile文件[gedit Makefile] ,修改以下两项

ARCH  ?= arm  

CROSS_COMPILE ?= arm-linux-  (已修改)

3. 【make defconfig】

4.配置make menuconfig

General Configuration应该选的选项

---Show terse applet usage messages

·  Show verbose applet usage messages

--- Support for SUID/SGID handling

·     Runtime SUID/SGID configuration via /etc/busybox.conf  

Build Options应该选的选项

·  Build BusyBox as a static binary (no shared libs)   //静态链接

同时去掉

·  Build with Large File Support (for accessing file>2GB)

【这个选项是一定要选择的,这样才能把busybox编译成静态链接的可执行文件,运行时才独立于其他函数库.否则必需要其他库文件才能运行,在单一个linux内核不能使他正常工作】

Busybox library tuning应该选的选项

   *fancy shell prompts

   *username completion

Installation Options应该选的选项

·  Don't use /usr

(./_install) BusyBox installation prefix

注:(A) Build BusyBox as a static binary (no shared libs) 方式进行编译时,所需的库已经与程序静态地链接在一起,这些程序不需要额外的库就可以单独运行,但是自己编写的程序在文件系统上运行必须采用静态编译,否则会报诸如:bin/sh: hello :not found的错误。

静态编译如:

arm-linux-gcc –static hello.c –o hello

(B)如果选择Build shared libbusybox方式进行编译时,要将交叉编译的动态库或符号链接复制到对应的目录中,否则程序不能运行。同时在配置时应去掉Build shared libbusybox目录下的两项:如下 

Build shared libbusybox>

Produce binary for each applet,linked against libbusybox

Produce additional busybox binary linked against libbusybox

5.另外,这两个不选

Miscellaneous Utilities ---> 
[ ] taskset 
Runit Utilities ---> 
[ ] runsv 

6.make

7.make install

8.打开安装文件夹【cd _install

9.拷贝文件到【rootfs】文件夹【cp –rf  *  ../../rootfs/

10.以root身份建立节点文件 /dev/console, /dev/null

11.打开驱动程序文件夹【cd dev

 12.【mknod -m 600 console c 5 1

   【mknod -m 666 null c 3 1

    【cd ..

四、配置etc文件夹

1. 打开etc文件夹【cd etc

2.将busybox工具生成的配置文件模板拷贝到etc文件夹:【cp -r ../../ busybox-1.15.2/examples/bootfloppy/etc/* ./

以下文件可用gedit指令打开,修改后注意保存呢!!!

3.修改profile文件: 

#!/bin/sh
#/etc/profile:system-wide .profile file for the Bourne shells
echo
echo -n "Processing /etc/profile......"
# Set search library path
export LD_LIBRARY_PATH=/lib:/usr/lib
# set user path
export PATH=/bin:/sbin:/usr/bin:/usr/sbin
#Set PS1

echo "Set PS1 in /etc/profile"
export PS1="[\u@\h\W]\$" 
echo "Done!"

4.修改inittab文件:

::sysinit:/etc/init.d/rcS
::respawn:-/bin/sh
::restart:/sbin/init 
::shutdown:/bin/umount -a -r
::shutdown:/sbin/swapoff –a

5.修改fstab文件:

proc /proc proc defaults 0 0
none /tmp ramfs defaults 0 0

none /var ramfs defaults 0 0
mdev /dev ramfs defaults 0 0
sysfs /sys sysfs defaults 0 0

6.修改初始化脚本init.d/rcS

#! /bin/sh
echo "----------mount all"
/bin/mount -a

echo "----------Starting mdev......"
/bin/echo /sbin/mdev > /proc/sys/kernel/hotplug
mdev -s

echo "********************************************************"
echo " S601 2410 Rootfs 2011.11 "
echo " Love Linux ! ! @@ Love S601 ! ! "
echo "********************************************************"

五、创建登录账户

1.【cd …/etc

2.【cp /etc/group ./

3.【cp /etc/passwd ./

4.【cp /etc/shadow ./

六、填加静态库

1.【tar zxvf arm920t-eabi.tgz

2.【cp /opt/toolchains/arm920t-eabi/arm-angstrom-linux-gnueabi/lib/*.so* rootfs/lib

七、安装yaffs文件格式制作工具

1.【tar zxvf mkyaffs2image.tgz

2.【cp usr/sbin/mkyaffs2image-128M /usr/sbin

3.【mkyaffs2image-128M rootfs rootfs.bin

八.编译好后,生成rootfs.bin 

(注:将Vivi,内核,和制作的Yaffs2根文件系统下载到目标板后,启动系统到操作界面,关于user名字,添加自己喜欢的用户名,操作如下:

cd /etc/init.d/

gedit rcs

只需要在rcS中添加

/bin/hostname -F /etc/hostname

然后再/etc目录下vi hostname ,编辑你想要的用户名并保存,后重启系统