免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1033 | 回复: 0
打印 上一主题 下一主题

基于s3c2440 yaffs2 文件系统的移植 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-07-27 14:21 |只看该作者 |倒序浏览

platform: s3c2440 + linux2.6.18 + yaffs2

首先在开发平台的上创建 rootfs 及 根目录下的一些必要的文件.
1.  创建必须的文件夹及设备文件
# mkdir rootfs
# cd rootfs
# mkdir bin dev etc lib mnt proc sbin sys root
# mkdir  /etc/var
# mkdir  /etc/tmp

# ln  -s /etc/var /var
# ln  -s /etc/tmp /tmp

2.   创建设备文件系统
从 Linux-2.6.18开始,负责旧版本的设备管理系统devfs已被废除,但新
版本的udev是一个基于用户空间的设备管理系统。在内核启动时并不能
自动创建设备节点,固需手动创建console和null两个启动过程必须的设
备节点。我们将采用busybox中内置的mdev,一个简化的udev版本.
# mknod -m 660 dev/console c 5 1
# mknod -m 660 dev/null        c 1 3

3.      建立动态运行库
# cp -rfd /usr/local/arm/4.0.3/arm-linux/lib/*  rootfs/lib/
拷贝经过交叉编译的库文件,参数-d,保持库文件的链接关系。
# rm -rf rootfs/lib/*.a  
删除所有的静态库文件。
注:/usr/local/arm/4.0.3/ 为交叉编译工具链的存放目录。
# arm-linux-strip rootfs/lib/*
移除所有的符号信息, 压缩库空间。
注:用arm-linux-gcc.3.4.1版本编译的时候可能不能通过,建议用4.0.3版本的。

4.      交叉编译busybox
解压缩tar -zxf busybox1.4.1.tar
解压后修改Makefile,指明交叉编译器:
     ARCH            ?= arm
    CROSS_COMPILE  ?= /usr/local/arm/4.0.3/bin/arm-linux-
在解压后的busybox 1.4.1目录里执行 make menuconfig,选择系统需要用到的命令或工具。
值得注意的是 shell 的选择,在 Choose your default shell (none) 这一项回车后选择ash, 否则,编译后会提示找不到shell,使系统无法启动。
还需选中以下两个选项:
Shell  --->
   
  •    Standalone shell
       
  •    Command line editing
        ...
       
       
  •      Tab completion         
       
  •        Username completion
      
       其中Tab comletion选项是用于输入命令后按 Tab 键自动补齐的.


    Busybox settings --->
       Build option  --->
          
  • Build BusyBox as a static binary (no shared libs)

    Init Utilities  --->
       
  •    init
       [ ]   debugging aid
       
  •    Support reading an inittab file
       [ ]   Support running commands with a controlling-tty
       
  •    Be _extra_ quiet on boot
       [ ]   Support dumping core for child processes (debugging only)
       
  •    Support running init from within an initrd (not initramfs)
       
  • poweroff, halt, and reboot
       
  • mesg

    Linux System Utilities  --->
       
  • mdev
       
  •    Support /etc/mdev.conf
       [ ]     Support command execution at device addition/removal




    必须选择 mdev 选项, 否则不能启用udev。
    执行 make install进行编译,编译完后,会出现_install目录,包含bin、sbin、usr三个目录和一个linuxrc文件。
    linuxrc是linux启动后第一执行的文件(由u-boot传给linux的启动参数决定,在kernel的boot option 的目录),其作用是执行相应的初始化工作。但u-boot编译生成的仅是一个指向/bin/busybox的链接文件。由于我们需要作一些初始化工作,如启动web服务器,加载特定驱动程序等,我们将自行编写linuxrc这个文件。bin、sbin、usr这三个目录里除了bin/busybox一个文件外,其余都是指向busybox的链接文件。我们将bin、sbin、usr这三个目录和linuxrc这个链接文件拷贝到rootfs的目录下,基本的文件系统制作完成。

    如果找不到linuxrc文件,可以自建一个:
    # ln -s /arm/busybox linuxrc


    5.      etc目录制作
    a)        添加 fstab 文件,添加 必须的挂靠目录
            none        /proc      proc   defaults   0 0
    none        /dev/pts   devpts mode=0622  0 0
    tmpfs       /dev/shm   tmpfs  defaults   0 0
    /dev/sda1   /mnt/flash  vfat  defaults   0 0

    b)        添加 init.d/rcS 文件 添加自动执行部分
    #! /bin/sh
    PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/lib:
    runlevel=S
    prevlevel=N
    umask 022
    export PATH runlevel prevlevel
    #
    #Trap CTRL-C &c only in this shell so we can interrupt subprocesses.
    #
    trap ":" INT QUIT TSTP
    /bin/mount -t proc  none  /proc
    /bin/mount -t tmpfs none  /root
    /bin/mount -t tmpfs none  /tmp
    /bin/mount -t tmpfs none  /var
    /bin/mount -t tmpfs none  /dev
    /bin/mount -t sysfs none  /sys
    /bin/mkdir -p /var/lib
    /bin/mkdir -p /var/run
    /bin/mkdir -p /var/log
    /bin/mknod -m 660 /dev/console c 5 1
    /bin/mknod -m 660 /dev/null   


    本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u3/100239/showart_2008929.html
  • 您需要登录后才可以回帖 登录 | 注册

    本版积分规则 发表回复

      

    北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
    未成年举报专区
    中国互联网协会会员  联系我们:huangweiwei@itpub.net
    感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

    清除 Cookies - ChinaUnix - Archiver - WAP - TOP