免费注册 查看新帖 |

Chinaunix

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

移植linux系统到QQ2440V3之三(利用busybox制作yaffs和jffs2文件系统) [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-06-27 21:53 |只看该作者 |倒序浏览
在前面系统移植两步之后,如果烧入到NAND FLASH,会出现下面的信息

VFS: Mounted root (jffs2 filesystem).
Freeing init memory: 144K
Warning: unable to open an initial console.
Kernel panic - not syncing: No init found.  Try passing init= option to kernel.

出现这个信息是因为还没有移植根文件系统,下面分析如何一步一步移植yaffs和jffs2文件系统
1.移植时可以参考网络上的一些文档,《Linux系统移植》和 《构建嵌入式linux系统》,可以在百度或google里面搜索下载
2.准备代码文件 :
  FHS标准,描述linux根文件系统目录结构的介绍文档,下载地址
http://www.pathname.com/fhs
  Busybox,代码下载地址
http://www.busybox.net/downloads/
下载busybox-1.7.0.tar.bz2
  Glibc库文件,可以使用制作交叉编译里面的arm-linux/lib下面的库文件
  MTD设备工具包,代码

第一步,编译安装Busybox,首先是解压文件,将busybox-1.7.0拷贝到/work/busybox目录
     $ tar xjf busybox-1.7.0.tar.bz2
     $ cd busybox-1.7.0
     $ make menuconfig

第二步,配置Busybox,进入配置,除了使用默认的配置外,下面修改几个地方
     1)设置"TAB"键,设置如下
       Busybox Settings --->
          Busybox Library Tuning --->
            
  •   Tab completion
         2)连接/编译选项,使用动态链接的Busybox,在构建根文件系统时需要在/lib目录下放置glibc的库
         文件,设置如下
           Build options --->
              [] Build BusyBox as a static binary (no shared libs)

         3)Archival Utilities选项,tar选项设置如下
           Archival Utilities --->
             
  • tar
             
  •     Enable archive creation
             
  •     Enable -j option to handle .tar.bz2 files
             
  •     Enable -X (exclude from) and -T (include from) options)
             
  •     Enable -z option
             
  •     Enable -Z option
             
  •     Enable support for old tar header format
             
  •     Enable support for some GNU tar extensions
             
  •     Enable long options

         4)Linux Module Utilities选项,要使用可加载模块,下面配置要选上
           Linux Module Utilities --->
             
  •     insmod
             
  •       Module version checking
             
  •       Add module symbols to kernel symbol table
             
  •       In kernel memory optimization (uClinux only)
             
  •       Enable load map (-m) option
             
  •          Symbols in load map
             
  •       rmmod
             
  •       lsmod
             
  •       Support version 2.6.x Linux kernels

         5)Linux System Utilities选项,支持mdev,这可以方便构造/dev目录,并且可以支持热插拔设
          备,并支持mount,unmount命令,并让mount命令支持NFS网络系统
           Linux System Utilities --->
             
  •     mdev
             
  •       Support /etc/mdev.conf
             
  •         Support command execution at device addition/removal
             
  •     mount
             
  •       Support mounting NFS file systems
             
  •     umount
             
  •       umount -a option

         6)Networking Utilities选项,增加ifconfig命令
           Networking Utilities --->
             
  •     ifconfig
             
  •       Enable status reporting output (+7k)
              [ ]      Enable slip-specific options "keepalive" and "outfill"
              [ ]      Enable options "mem_start","io_addr",and "irq"
             
  •       Enable option "hw" (ether only)
             
  •       Set the broadcast automatically

         7)Miscellanous Utilities设置
           Miscellanous Utilities --->
              [ ]    taskset

         8)Runit Utllities设置
           Runit Utllities --->
              [ ]    runsv

    第三步,编译Busybox,先修改Makefile文件如下
         175 ARCH         ?= $(SUBARCH)
         176 CROSS_COMPILE?=
         修改为
         175 ARCH         ?= arm
         176 CROSS_COMPILE?= arm-linux-
       
         然后执行make编译Busybox
         然后安装,先建如下目录/work/nfs_root/fs_mini,然后执行这个命令
         $ make CONFIG_PREFIX=/work/nfs_root/fs_mini install

         此时会在/work/nfs_root/fs_mini下生成bin,linuxrc,sbin,usr目录文件夹

    第四步,添加glibc库,由于前面设置使用的是动态库,我们这里只需要加载器和动态库,操作如下
         $ mkdir -p /work/nfs_root/fs_mini/lib
         $ cd /work/tools/gcc-3.4.5-glibc-2.3.6/arm-linux/lib
         $ cp *.so* /work/nfs_root/fs_mini/lib -d

    第五步,构建根文件系统,主要是构建各个目录和相关文件的配置
         1)构建etc目录,这里主要创建三个文件etc/inittab;etc/init.d/rcS;etc/fstab,init进程根
         据/etc/inittab文件来创建其他子程序,比如调用脚本配置IP地址,挂载其他文件系统,最后启动
         shell等
           a)创建etc/inittab文件,在/work/nfs_root/fs_mini/etc的inittab文件如下

             # /etc/inittab
             ::sysinit:/etc/init.d/rcS
             ttySAC0::askfirst:-/bin/sh
             ::ctrlaltdel:/sbin/reboot
             ::shutdown:/bin/umount -a -r

           b)创建etc/init.d/rcS文件,这是一个脚本文件,可以在里面添加自动执行命令,以下命令配置
            IP地址,挂载/etc/fstab指定的文件系统

             #!/bin/sh                 //运行时解析/bin/sh
             ifconfig eth0 192.168.1.17//用来配置IP地址
             mount -a                  //挂载etc/fstab文件指定的所有文件系统

            然后修改它的属性chmod +x etc/init.d/rcS

           c)创建etc/fstab文件,内容如下
             # device mount-point    type   options    dump   fsck    order
               proc   /proc          proc   defaults   0      0
               tmpfs  /tmp           tmpfs  defaults   0      0

         2)构建dev目录,有两种方式构建dev目录,一是静态创建设备文件,二是使用mdev创建设备文件,下
          面使用静态创建设备文件
             $ mkdir -p /work/nfs_root/fs_mini/dev
             $ cd /work/nfs_root/fs_mini/dev
             $ mknod console c 5 1
             $ mknod null c 1 3
             $ mknod ttySAC0 c 204 64
             $ mknod mtdblock0 b 31 0
             $ mknod mtdblock1 b 31 1
             $ mknod mtdblock2 b 31 2

         3)构建其他目录,比如proc,mnt,tmp,sys,root等
             $ cd /work/nfs_root/fs_mini
             $ mkdir proc mnt tmp sys root
             到这里,一个小的根文件系统就做好了,但要烧录到nand flash上,还要制作成yaffs或jffs2
           文件镜像

    第六步,制作yaffs文件镜像
         1)解压yaffs压缩包,进入里面的yaffs2文件夹,拷贝mkyaffsimage工具至/usr/local/bin目录
           下,然后执行下面命令生成镜像文件
             $ cp mkyaffsimage /usr/local/bin
             $ chmod +x /usr/local/bin/mkyaffsimage
             $ cd /work/nfs_root
             $ mkyaffsimage fs_mini fs_mini.yaffs
           在当前目录就生成了fs_mini.yaffs镜像文件

    第七步,制作jffs2文件镜像
         1)编译制作jffs2映象文件的工具,在网上下载mtd-utils-05.07.23.tar.bz2工具包和zlib压缩
           包,进行解压和安装如下
             $ tar xjf zlib-1.2.3.tar.gz
             $ cd zlib-1.2.3
             $ ./configure --shared --prefix=/usr
             $ make
             $ make install
         2)编译mkfs.jffs2
             $ tar xjf mtd-utils-05.07.23.tar.bz2
             $ cd mtd-utils-05.07.23/util
             $ make
             $ make install
         3)制作jffs2映象文件
             $ cd /work/nfs_root
             $ mkfs.jffs2 -n -s 512 -e 16KiB -d fs_mini -o fs_mini.jffs2

    到这里,内核和根文件系统都制作好了,下节介绍如何烧录到板子上,如何设置参数自动启动
             


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

    本版积分规则 发表回复

      

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

    清除 Cookies - ChinaUnix - Archiver - WAP - TOP