九鼎创展论坛
标题: x4412&ibox项目实战52-搭建ramdisk文件系统 [打印本页]
作者: armeasy    时间: 2014-10-22 19:31
标题: x4412&ibox项目实战52-搭建ramdisk文件系统
在进行linux系统移植的时候,很多情况下我们并不需要将完整的文件系统映像烧写到开发板,这时我们可以搭建一个ramdisk文件系统,通过fastboot功能将内核和ramdisk加载到内存运行。默认在x4412源码包的uboot目录下已经提供了做好的ramdisk文件系统debug-ramdisk-uboot.img。将debug-ramdisk-uboot.img和内核映像zImage拷贝到fastboot目录,执行如下指令即可将它们加载进内存,并最终挂载ramdisk文件系统。
在开发板uboot界面输入fastboot:
 
在DOS命令行进入fastboot目录,执行如下指令挂载ramdisk文件系统:
 
- fastboot  boot  zImage  debug-ramdisk-uboot.img
       挂载文件系统后界面如下:
- Loading, please wait...
 
- depmod: can't change directory to '/lib/modules': No such file or directory
 
- Begin: Loading essential drivers... ...
 
- Done.
 
- Begin: Running /scripts/init-premount ...
 
- Done.
 
- /init: line 195: chvt: not found
 
- modprobe: can't change directory to '/lib/modules': No such file or directory
 
- modprobe: can't change directory to '/lib/modules': No such file or directory
 
- Spawning shell within the initramfs
 
- /bin/sh: can't access tty; job control turned off
 
- (initramfs):/# [    5.522081] CPU1: shutdown
 
- [    6.056947] CPU2: shutdown
 
- [    6.741858] CPU3: shutdown
 
-  
 
- (initramfs):/#
       有了这个功能,在调试时就没有必要反反复复的烧写内核和文件系统了,可以节约大量的时间。前面章节我们介绍了怎样搭建最简单的linux文件系统,我们在此基础上将它演变成ramdisk文件系统。
       第一步:参考前面章节,在ubuntu用户目录或是samba目录下新建ramdisk目录,并在该目录下创建最简单的linux文件系统;
       第二步:在samba目录下新建init文件,将一些必要的启动信息添加进去;
       第三步:在ramdisk目录下新建conf目录,在conf目录下新建arch.conf和initramfs.conf文件,arch.conf文件编辑内容如下:
       initramfs.conf文件编译内容如下:
- #
 
- # initramfs.conf
 
- # Configuration file for mkinitramfs(8). See initramfs.conf(5).
 
- MODULES=most
 
- BUSYBOX=y
 
- COMPCACHE_SIZE=""
 
- BOOT=local
 
- DEVICE=eth0
 
- NFSROOT=auto
       第四步:在ramdisk目录下新建scripts目录,在scripts目录下新建functions文件,并编辑一些必要的shell脚本;
       第五步:在ramdisk所在的当前目录下新建脚本文件ramdisk.sh,编辑内容如下:
- #!/bin/bash
 
- # create: liuqiming
 
- # date:   2014-10-22
 
- # mail:   liuqiming@9tripod.com
 
-  
 
- #准备工作,环境变量的声明
 
- SOURCE_DIR=$(cd `dirname $0` ; pwd)
 
- TOOLS_DIR=${SOURCE_DIR}/tools
 
- TARGET_DIR=${SOURCE_DIR}
 
-  
 
- export PATH=/home/lqm/samba/x4412_ics_rtm_v10/uboot/tools:$PATH
 
-  
 
- #打包debug-ramdisk-uboot.img
 
- echo "create debug-ramdisk-uboot.img"
 
- #第一步:判断是否存在ramdisk目录
 
- [ -e "${TARGET_DIR}/ramdisk" ] || { echo "can't find [ramdisk],please build ramdisk fs first!"; exit; }
 
- #第二步:去除默认的debug-ramdisk-uboot.img文件
 
- rm -f ${TARGET_DIR}/debug-ramdisk-uboot.img
 
- cd ${TARGET_DIR}/ramdisk
 
- #第三步:将当前目录所有文件打包到ramdisk.img
 
- find . |cpio -ov -H newc |gzip > ../ramdisk.img
 
- cd ..
 
- #第四步:使用mkimage工具添加uboot字头,打包成uboot格式的ramdisk文件
 
- echo '****** Make ramdisk image for u-boot ******'
 
- mkimage -A arm -O linux -T ramdisk -C none -a 0x41000000 -n "ramdisk" -d ramdisk.img debug-ramdisk-uboot.img
 
- rm -rf ramdisk.img
 
- echo "^_^ Create debug-ramdisk-uboot.img finished!"
 
- exit
       注意,该脚本文件用于创建ramdisk文件系统映像文件,用到了mkimage工具,它会在编译uboot后产生,因此使用此脚本的前提条件是uboot已经正确编译通过。脚本中PATH用于声明uboot/tools目录,mkimage工具就在该目录下生成。
       第六步:执行如下指令生成ramdisk映像:
       运行界面如下:
- lqm@ubuntu:~/samba$ ./ramdisk.sh
 
- create debug-ramdisk-uboot.img
 
- ****** Make ramdisk image for u-boot ******
 
- Image Name:   ramdisk
 
- Created:      Wed Oct 22 03:54:59 2014
 
- Image Type:   ARM Linux RAMDisk Image (uncompressed)
 
- Data Size:    1134469 Bytes = 1107.88 kB = 1.08 MB
 
- Load Address: 41000000
 
- Entry Point:  41000000
 
- ^_^ Create debug-ramdisk-uboot.img finished!
 
- lqm@ubuntu:~/samba$
       执行完后,在当前目录将会生成目标文件debug-ramdisk-uboot.img文件。
       附:做好的ramdisk文件系统,ramdisk目录以及脚本,映像:
 debug-ramdisk-uboot.img
(1.08 MB, 下载次数: 12)
debug-ramdisk-uboot.img
(1.08 MB, 下载次数: 12)
 ramdisk.tgz
(1.08 MB, 下载次数: 10)
ramdisk.tgz
(1.08 MB, 下载次数: 10)
 ramdisk.sh
(1.04 KB, 下载次数: 7)
ramdisk.sh
(1.04 KB, 下载次数: 7)
| 欢迎光临 九鼎创展论坛 (http://bbs.9tripod.com/) | Powered by Discuz! X3.2 |