利用shell脚本自动化制作ramdisk.image.gz

制作过程涉及到多条命令,而且参数复杂,
为了方便执行,而且避免错误,
最好先把需要执行的各条命令,写成一个脚本,然后直接运行这个脚本。
脚本操作,这是好的习惯。

(1)制作ramdisk.image.gz
# cd ~/ramdisk
# dd if=/dev/zero of=./ramdisk16M.image bs=1024 count=16384
以dd命令建立一个了一个16384KB文件系统映象,存于./ramdisk16M.image文件中,并以/dev/zero对它进行初始化。用这种方式对文件系统进行初始化,稍后当我们使用gzip命令压缩整个映象时,将让文件系统中未使用的部分获得最大压缩比。

# mke2fs -F ramdisk16M.image -L “ramdisk” -b 1024 -m 0
# tune2fs ramdisk16M.image -i 0
# chmod 777 ramdisk16M.image
大小可以按照需要自己调整,但是最好不要超过32M;此外文件系统的大小最好和内核配置的大小相同,以避免发生匹配错误。
RAMDISK: incomplete write (7883 != 19371) [ 2.782665] write error [ 2.837734]
解决方法有两个:
(a)设置Default Ram disk size和count一致;
(b)设置bootargs,设置ramdisk_size和ramdisk镜像文件一致

# mkdir ramdisk_tmp
# sudo mount -o loop ramdisk16M.image ramdisk_tmp/
创建ramdisk目录,将ramdisk16M.image 挂载到该目录下

# sudo cp -R /home/devel/_rootfs/* ramdisk_tmp
将_rootfs目录下的内容全部拷贝到ramdisk下。
cp的参数一定是R而非r。

# sudo umount ramdisk_tmp/
这个镜像文件的内容就是_rootfs目录下的内容了。将其卸载。

#gzip -v9 ramdisk16M.image
根文件系统镜像文件ramdisk16M.image 制作完成,将其压缩。生成ramdisk16M.image.gz文件。

# mkimage -n ‘uboot ext2 ramdisk’ -A arm -O linux -T ramdisk -C gzip -d ramdisk16M.image.gz uramdisk.image.gz
使用mkimage命令为ramdisk.img.gz添加一些头部信息,生成uramdisk.image.gz,否则uboot将提示ramdisk格式错误。

(2)uramdisk.image.gz去头
两种方法。
一是在windows中,利用HEX EDITOR,手动删除64bytes的头。
另一种是在ubuntu下,建立shell脚本删除。
# dd if=./uramdisk.img of=./ramdisk.img.gz skip=64 bs=1

(3)解压ramdisk.image.gz并修改
# gunzip ramdisk.image.gz
# mkdir ramdisk_tmp
# mount –o loop ramdisk.image ./ramdisk_tmp
# cd ./ramdisk_tmp
++++
do what you want
++++
# cd …
# umount ./ramdisk_tmp
# gzip –v9 ramdisk.image /*生成ramdisk.gz压缩文件
# mkimage -n ‘uboot ext2 ramdisk’ -A arm -O linux -T ramdisk -C gzip -d ramdisk.image.gz uramdisk.image.gz

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值