九鼎创展论坛中文版English
登录 | 立即注册 设为首页收藏本站 切换到宽版
查看: 5290|回复: 0
打印 上一主题 下一主题

x4412&ibox项目实战52-搭建ramdisk文件系统

[复制链接]
跳转到指定楼层
楼主
发表于 2014-10-22 19:31:22 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
在进行linux系统移植的时候,很多情况下我们并不需要将完整的文件系统映像烧写到开发板,这时我们可以搭建一个ramdisk文件系统,通过fastboot功能将内核和ramdisk加载到内存运行。默认在x4412源码包的uboot目录下已经提供了做好的ramdisk文件系统debug-ramdisk-uboot.img。将debug-ramdisk-uboot.img和内核映像zImage拷贝到fastboot目录,执行如下指令即可将它们加载进内存,并最终挂载ramdisk文件系统。
在开发板uboot界面输入fastboot:

DOS命令行进入fastboot目录,执行如下指令挂载ramdisk文件系统:
  1. fastboot  boot  zImage  debug-ramdisk-uboot.img
复制代码
       挂载文件系统后界面如下:
  1. Loading, please wait...
  2. depmod: can't change directory to '/lib/modules': No such file or directory
  3. Begin: Loading essential drivers... ...
  4. Done.
  5. Begin: Running /scripts/init-premount ...
  6. Done.
  7. /init: line 195: chvt: not found
  8. modprobe: can't change directory to '/lib/modules': No such file or directory
  9. modprobe: can't change directory to '/lib/modules': No such file or directory
  10. Spawning shell within the initramfs
  11. /bin/sh: can't access tty; job control turned off
  12. (initramfs):/# [    5.522081] CPU1: shutdown
  13. [    6.056947] CPU2: shutdown
  14. [    6.741858] CPU3: shutdown

  15. (initramfs):/#
复制代码
       有了这个功能,在调试时就没有必要反反复复的烧写内核和文件系统了,可以节约大量的时间。前面章节我们介绍了怎样搭建最简单的linux文件系统,我们在此基础上将它演变成ramdisk文件系统。
       第一步:参考前面章节,在ubuntu用户目录或是samba目录下新建ramdisk目录,并在该目录下创建最简单的linux文件系统;
       第二步:在samba目录下新建init文件,将一些必要的启动信息添加进去;
       第三步:在ramdisk目录下新建conf目录,在conf目录下新建arch.confinitramfs.conf文件,arch.conf文件编辑内容如下:
  1. DPKG_ARCH=arm
复制代码
       initramfs.conf文件编译内容如下:
  1. #
  2. # initramfs.conf
  3. # Configuration file for mkinitramfs(8). See initramfs.conf(5).
  4. MODULES=most
  5. BUSYBOX=y
  6. COMPCACHE_SIZE=""
  7. BOOT=local
  8. DEVICE=eth0
  9. NFSROOT=auto
复制代码
       第四步:在ramdisk目录下新建scripts目录,在scripts目录下新建functions文件,并编辑一些必要的shell脚本;
       第五步:在ramdisk所在的当前目录下新建脚本文件ramdisk.sh,编辑内容如下:
  1. #!/bin/bash
  2. # create: liuqiming
  3. # date:   2014-10-22
  4. # mail:   liuqiming@9tripod.com

  5. #准备工作,环境变量的声明
  6. SOURCE_DIR=$(cd `dirname $0` ; pwd)
  7. TOOLS_DIR=${SOURCE_DIR}/tools
  8. TARGET_DIR=${SOURCE_DIR}

  9. export PATH=/home/lqm/samba/x4412_ics_rtm_v10/uboot/tools:$PATH

  10. #打包debug-ramdisk-uboot.img
  11. echo "create debug-ramdisk-uboot.img"
  12. #第一步:判断是否存在ramdisk目录
  13. [ -e "${TARGET_DIR}/ramdisk" ] || { echo "can't find [ramdisk],please build ramdisk fs first!"; exit; }
  14. #第二步:去除默认的debug-ramdisk-uboot.img文件
  15. rm -f ${TARGET_DIR}/debug-ramdisk-uboot.img
  16. cd ${TARGET_DIR}/ramdisk
  17. #第三步:将当前目录所有文件打包到ramdisk.img
  18. find . |cpio -ov -H newc |gzip > ../ramdisk.img
  19. cd ..
  20. #第四步:使用mkimage工具添加uboot字头,打包成uboot格式的ramdisk文件
  21. echo '****** Make ramdisk image for u-boot ******'
  22. mkimage -A arm -O linux -T ramdisk -C none -a 0x41000000 -n "ramdisk" -d ramdisk.img debug-ramdisk-uboot.img
  23. rm -rf ramdisk.img
  24. echo "^_^ Create debug-ramdisk-uboot.img finished!"
  25. exit
复制代码
       注意,该脚本文件用于创建ramdisk文件系统映像文件,用到了mkimage工具,它会在编译uboot后产生,因此使用此脚本的前提条件是uboot已经正确编译通过。脚本中PATH用于声明uboot/tools目录,mkimage工具就在该目录下生成。
       第六步:执行如下指令生成ramdisk映像:
  1. ./ramdisk.sh
复制代码
       运行界面如下:
  1. lqm@ubuntu:~/samba$ ./ramdisk.sh
  2. create debug-ramdisk-uboot.img
  3. ****** Make ramdisk image for u-boot ******
  4. Image Name:   ramdisk
  5. Created:      Wed Oct 22 03:54:59 2014
  6. Image Type:   ARM Linux RAMDisk Image (uncompressed)
  7. Data Size:    1134469 Bytes = 1107.88 kB = 1.08 MB
  8. Load Address: 41000000
  9. Entry Point:  41000000
  10. ^_^ Create debug-ramdisk-uboot.img finished!
  11. lqm@ubuntu:~/samba$
复制代码
       执行完后,在当前目录将会生成目标文件debug-ramdisk-uboot.img文件。

       附:做好的ramdisk文件系统,ramdisk目录以及脚本,映像:
debug-ramdisk-uboot.img (1.08 MB, 下载次数: 12)
ramdisk.tgz (1.08 MB, 下载次数: 10)
ramdisk.sh (1.04 KB, 下载次数: 7)
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|深圳市九鼎创展科技官方论坛 ( 粤ICP备11028681号-2  

GMT+8, 2024-11-23 08:57 , Processed in 0.020816 second(s), 20 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表