2017年(111)
分类: LINUX
2017-06-23 19:27:29
原文地址:用busybox制作Ramdisk 作者:好喜儿
Ramdisk的制作并使用分四部分
一.内核编译选项的设置
二.Busybox制作根文件目录
三.制作ramdisk
四.在uboot中下载并使用ramdisk
实验硬件平台:
Sep6200
一.内核编译选项的设置
打开配置菜单,修改两个配置项,分别是:
a):General setup-->选择 Initial RAM filesystem and RAM disk...... 项
b):Device Drivers-->Block devices-->选择 RAM block
device support 项
二. Busybox制作根文件目录
a)创建根文件系统目录:
#cd转入到你的工作目录。
#mkdir rootfs
#cd rootfs
#mkdir bin dev etc lib proc sbin sys usr mnt tmp var
#mkdir usr/bin usr/lib usr/sbin lib/modules
b)创建最基本的设备文件:
#cd dev
#mknod -m 666 console c 5 1
#mknod -m 666 null c 1 3
c)安装/etc配置文件
从网上找的最小系统的etc配置文件直接解压到制作的根文件系统里
操作如下:
#tar etc.tar.gz -C /xxx/rootfs
xxx表示你要制作的rootfs所在的目录
d)编译busybox,并安装到rootfs
参考《busybox编译步骤》
Ps:编译安装的时候遇到问题是缺少某些头文件,从unicore的linux内核相关的目录拷过来就好,遇到错看log排查。
三.制作ramdisk
1、dd if=/dev/zero of=/dev/ram0 bs=1k count=4096
说明:if:从文件读取;of:输出到文件;bs:每次读入读出的比特数;
count:仅读取指定的区块数,4096=4M;
(把/dev/null看作"黑洞". 它非常等价于一个只写文件. 所有写入它的内容都会永远丢失. 而尝试从它那儿读取内容则什么也读不到. 然而, /dev/null对命令行和脚本都非常的有用)
(像/dev/null一样, /dev/zero也是一个伪文件, 但它实际上产生连续不断的null的流(二进制的零流,而不是ASCII型的). 写入它的输出会丢失不见, 而从/dev/zero读出一连串的null也比较困难, 虽然这也能通过od或一个十六进制编辑器来做到. /dev/zero主要的用处是用来创建一个指定长度用于初始化的空文件,就像临时交换文件.)
2.mke2fs -vm0 /dev/ram0 4096
说明:将RamDisk格式化成ext2文件系统格式,大小为4M,-v 执行时显示详细信息,-m<百分比值> 指定给管理员保留区块的比例,预设为5%
3、mount /dev/ram0 /sdcard 说明:mount RamDisk,将根文件系统拷贝到/home/bobo/haibo目录下
4.将之前busybox做的东西拷到/sdcard这个文件夹
5.umount /sdcard
6. gzip -c9 /dev/ram0 > ramdisk.gz (-c 将输出写到标准输出上,并保留原有文件 -9表示搞压缩比)
五.在uboot中下载并使用ramdisk
修改uboot启动参数
set bootargs root=/dev/ram0 rw console=ttyS0,115200 initrd=0x41000000,0x800000 mem=216mb init=/init
(tftp或dnw)将ramdisk.gz下载到0x41000000,uimage下载到0x40008000
bootm 0x40008000