免费注册 查看新帖 |

Chinaunix

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

成功使用busybox制作yaffs根文件系统 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-09-23 16:47 |只看该作者 |倒序浏览

  前段时间把linux2.6.14内核给移植成功了,接下来就研究下移植yaffs文件系统。以前看过有关移植ramdisk的文章,里面介绍了busybox这个很强大的工具。相信大家也很清楚它的作用了,就不多说了。既然要使用busybox,那么就要面对一个挺头痛的问题,就是busybox与交叉编译器版本的问题。而且据说编译busybox的交叉编译器版本必须与编译内核的版本一至才能挂载上内核。所以个人建议采用前人所编译成功的组合,以下是在网上搜索的一些组合:
busybox1.1.3+arm-linux-3.3.2
busybox1.2.2.1+arm-linux-3.3.2
busybox-1.2.2.1+arm-linux -3.4.1
busybox-1.1.3+arm-linux -3.4.1
busybox-1.5.1+arm-linux -4.1.2
我个人所采用的是busybox-1.10.1+arm-linux -3.4.1, busybox-1.10.1是最新的版本。
Busybox的配置与编译
>Make menuconfig ,进入配置界面。一定要把以下给选上:
Busybox setting -> build option ->
  • build busybox as a static binary 生成为静态库
    Init Utilities ->
  • init
                         
  • Support reading as inittab file
    Shells à choose your default shell(ash) -> (X) ash 如果没选上这个,就不会生成sh
    然后>make install
    使用arm-linux -3.4.1去编译busybox-1.10.1也不是一帆风顺的。最先遇到一个编译错误,提示是由于Miscoellaneous Utilities -> taskset出问题。具体的出错信息由于没保存,就不公布了。我的解决方法是把Miscoellaneous Utilities -> taskset给去掉,再继续编译。在快完成的时候又出现下面的错误:
    ……
    :undefined reference to ‘query_module’
    Modutils/lib.a(insmod.o)(.text.insmod_main+0xc38):In function ‘insmod_main’:
    :undefined reference to ‘create_moudle’
    Collect2:ld returned 1 exit status
    Make: *** [busybox_unstripped[] Error 1
    看来是与模块单元有关的哦,没理由叫我把模块功能给屏蔽掉吧~~!后来经测试,发觉解决办法为把模块中与linux 2.4.*相关的给去掉。
    Linux Module Utilities à []Support version 2.2.x to 2.4.x Linux kernels
    修改后再编译,没其它意外的话,在Busybox的目录下就会生成_install目录。

    建立根文件系统
      把Busybox目录下生成的_install拷贝到用户文件夹里(为了方便工作),并改文件名(我改为myroot)。目前myroot文件夹里只有/bin /sbin /usr 3个文件夹,并不能构成linux文件系统所需要的内容。因此,新创建以下文件夹:dev etc home home/user lib mnt opt proc tmp var 。
    创建设备文件,我觉得可以先在/dev里创建需要的设备文件,也可以在Init.d/rcS添加创建脚本,让在初始化时再创建设备文件。而我选择的就是后者,所以把/dev文件夹留空就可以了。
    创建初始化文件,其中包括了最重要的三个文件:/etc/Inittab、/etc/Init.d/rcS和/etc/Fstab。
    /etc/Inittab文件:
    #System initialization .
    ::sysinit:/etc/init.d/rcS
    ::askfirst:/bin/sh

    注意:如果::askfirst:后面不是/bin/sh的话,需要用户名和密码才能登陆到系统。

    fstab文件
    none    /proc   proc   defaults     0   0
    none       /dev/pts devpts  mode=0622  0   0
    tmpfs   /dev/shm  tmfs   defaults     0   0

    Init.d/rcS文件
    #! /bin/sh
    PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/bin:
    runlevel=S
    prevlevel=N
    umask 022
    export PATH runlevel prevlevel

    #Charactor modules
    /bin/mknod /dev/pts/0 c 136 0
    /bin/ln -s /dev/v4l/video0 /dev/video0
    /bin/ln -s /dev/fb/0 /dev/fb0
    /bin/ln -s /dev/vc/0 /dev/tty1
    /bin/ln -s /dev/scsi/host0/bus0/target0/lun0/part1 /dev/sda1

    /bin/mount -t proc none /proc
    /bin/mount -t tmpfs none /tmp
    /bin/mount -t tmpfs none /var

    /bin/mkdir -p /var/lib
    /bin/mkdir -p /var/run
    /bin/mkdir -p /var/log

    /sbin/ifconfig lo 127.0.0.1
    /sbin/ifconfig eth0 192.168.0.27 up

    目前可以说一个最基本的根文件系统已经准备好了。
    制作yaffs文件系统
      只须执行以下程序:
    >mkyaffsimage myroot myroot.img
    所创建出的myroot.img就为yaffs文件系统镜像文件。


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

    本版积分规则 发表回复

      

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

    清除 Cookies - ChinaUnix - Archiver - WAP - TOP