在进行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)
ramdisk.tgz
(1.08 MB, 下载次数: 10)
ramdisk.sh
(1.04 KB, 下载次数: 7)
|