注册 登录
电子工程世界-论坛 返回首页 EEWORLD首页 频道 EE大学堂 下载中心 Datasheet 专题
daicheng的个人空间 https://home.eeworld.com.cn/space-uid-78216.html [收藏] [复制] [分享] [RSS]
日志

mini2440平台搭建之(yaffs文件系统)

已有 4322 次阅读2009-11-17 21:05 |

起步开始做简单的文件系统:

1:使用平台

    1)、系统 Red Hat Linux 9

    2)、编译器3.4.1

2:硬件设备

      Mini2440 TE2440

3:busybox-1.1.3

 

首先:

创建根文件系统的基本目录结构

可以使用脚本:

#! /bin/sh

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

     cd  root

    mkdir bin dev etc lib proc sbin sys usr home root

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

    mkdir mnt tmp var

    chmod 777 tmp

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

    mkdir var/lib   var/run var/tmp

    chmod 777 var/tmp

 dev 目录
下面的内容在内核挂载完毕文件系统后,系统会使用mdev 自动建立。
不过mdev 是调用init 进程来启动的,在使用mdev 构建“dev”目录前,init 进程需要用到“/dev/console”和“/dev/null”这两个设备文件,所以,我们需要在制作文件系统时静态创建这两个设备文件,方法如下:
#mknod console c 5 1
#mknod null c 1 3
如果不创建这两个设备文件,在文件系统启动时会出现错误信息.大概是不能初始化控制台。

etc 目录
用来存放系统的配置文件。
目录下面有如下常用的文件:
fstab
:指明需要挂载的文件系统;
group
:用户组;
inittab
init 进程的配置文件;
passwd
:密码文件;
profile
:用户环境配置文件;
mdev.conf
这里我采用了为空;
init.d 目录:启动文件目录,该目录下面有个“rcS”的文件,里面存放了系统启动时配置以及自启动加载的进程等;
sysconfig
目录:在我们的文件系统里面,该目录下面存放了名为“HOSTNAME”的文件,该文件内容为:用户名。

 

fstab:

none    /proc   proc    defaults     0 0

none    /sys     sysfs   defaults     0 0

none    /dev/pts     devpts mode=0622     0 0

tmpfs   /dev/shm   tmpfs   defaults     0 0

 

rcS:
#!/bin/sh
/bin/mount -n -t proc none /proc
/bin/mount -n -t sysfs none /sys
/bin/mount -n -t ramfs none  var
/bin/mkdir -p var/empty
/bin/mkdir -p var/log
/bin/mkdir -p var/lock
/bin/mkdir -p var/run
/bin/mkdir -p var/tmp

 

inittab  可以参考busybox中的例子 

::sysint:/etc/init.d/rcS

::respawn:-/bin/sh

tty2::askfirst-/bin/sh

::ctrlaltdel:/bin/umount –a -r

 

linuxrc:

#!/bin/sh

/bin/mount -f -t cramfs -o remount,ro /dev/mtdblock/4 /

这块是cramfs需要的,如果是yaffs,则不需要

exec /sbin/init 这个是必须的。。

编译busybox:

 

make TARGET_ARCH=arm CROSS=/usr/local/arm/3.4.1/bin/arm-linux- PREFIX=/home/rootfs/ all install

将编译完成 的linuxrc还原成原来的linuxrc

在编译busybox-1.1.3,arm-toolchains-3.4.1编译busybox-1.1.3 ,静态链接, 出现如下问题:
/opt/busybox-1.1.3/util-linux/util-linux.a(mount.o)(.text+0x5fc): In function `singlemount':
: undefined reference to `del_loop'
collect2: ld returned 1 exit status
make[1]: *** [busybox_unstripped]
错误
1
make: *** [all]
错误 2

方法:

去掉busybox-1.1.3/util-linux/mount.c下面的这么一段, 就编译成功了.

    352     // If mount failed, clean up loop file (if any).

    353

    354 /*if (rc && loopFile) {

    355         del_loop(mp->mnt_fsname);

    356         if (ENABLE_FEATURE_CLEAN_UP) {

    357             free(loopFile);

    358             free(mp->mnt_fsname);

    359         }

360     }*/

将3.4.1中arm-linux中 lib下拷贝*.so*的库文件。制作mkyaffs2image  rootfs rootfs.yaffs 其中mkyaffs2image这个工具必须支持大页的FLASH

 

 

 

评论 (0 个评论)

facelist doodle 涂鸦板

您需要登录后才可以评论 登录 | 注册

热门文章