【树莓派】制作树莓派最小镜像:img裁剪瘦身
2017-02-09 10:27
281 查看
制作树莓派镜像,可以参考这篇文章:http://blog.csdn.net/talkxin/article/details/50456282
摘录部分要点内容如下(如果作者不允许转载,请联系即删除):
一、查看当前系统所占容量
用Win32DiskImager来制作镜像时是将sd卡正卡全部做成镜像,是因为无法读取到linux分区的原因,所以我们在制作镜像前,先要确定我们当前系统所占用了多少系统空间,即备份镜像的大小。
可以看到,树莓派是有两个分区,所以boot【size】+linux【Used】+分区损耗【因为格式转换,所以会损耗5%~10%】=镜像实际大小,所以若used使用百分比超过50%那么就无法在sd中创建此镜像。
二、安装需要的软件
dosfstools:fat32分区格式化工具
dump:dump&restore备份工具
parted&kpartx:虚拟磁盘工具
三、生成空白img
根据一里面系统所占用的空间,生成空白的img。
这也是错误比较多的地方,有人不理解原文中
此处注意
dd命令中【1k=1024b;1KB=1000b;1M=1024kb;1MB=1000kb】
摘录部分要点内容如下(如果作者不允许转载,请联系即删除):
一、查看当前系统所占容量
用Win32DiskImager来制作镜像时是将sd卡正卡全部做成镜像,是因为无法读取到linux分区的原因,所以我们在制作镜像前,先要确定我们当前系统所占用了多少系统空间,即备份镜像的大小。
#查看当前系统所占用的空间
df-lh
可以看到,树莓派是有两个分区,所以boot【size】+linux【Used】+分区损耗【因为格式转换,所以会损耗5%~10%】=镜像实际大小,所以若used使用百分比超过50%那么就无法在sd中创建此镜像。
二、安装需要的软件
dosfstools:fat32分区格式化工具
dump:dump&restore备份工具
parted&kpartx:虚拟磁盘工具
sudoapt-getinstalldosfstoolsdumppartedkpartx
三、生成空白img
根据一里面系统所占用的空间,生成空白的img。
#df为磁盘占用空间
sudoddif=/dev/zeroof=raspberrypi.imgbs=1Kcount=$df
这也是错误比较多的地方,有人不理解原文中
count=2500参数的意义,此参数是用dd命令创建一个大约2.5G的空白镜像,若不使用第一步来算出实际镜像大小的话,制作出来的镜像就会出错
此处注意
dd命令中【1k=1024b;1KB=1000b;1M=1024kb;1MB=1000kb】
四、分割虚拟磁盘
我们已将空白的img创建完毕,现在需要通过parted将磁盘分为boot与root区
通过
sudofdisk-l/dev/mmcblk0得知
第一个分区为boot分区,采用FAT32格式,由sector8192开始到sector12879
第二个分割区采用EXT4,由sector122880开始到空白img结尾。
sudopartedraspberrypi.img--script--mklabelmsdos
sudopartedraspberrypi.img--script--mkpartprimaryfat328192s122879s
sudopartedraspberrypi.img--script--mkpartprimaryext4122880s-1
五、挂载虚拟磁盘并格式化
loopdevice:执行losetup连接img文件的loopdevice
device:执行完kpartx后,虚拟磁盘代号。
partBoot:由device加上p1组合而成的FAT32虚拟磁盘分区。
partRoot:由device加上p2组合而成的EXT4虚拟磁盘分区。
首先建立虚拟磁盘并分区
loopdevice=`sudolosetup-f--showraspberrypi.img`
device=`sudokpartx-va$loopdevice|sed-E's/.*(loop[0-9])p.*/\1/g'|head-1`
device="/dev/mapper/${device}"
partBoot="${device}p1"
partRoot="${device}p2"
然后格式化虚拟磁盘分区
#boot分区用fat32进行格式化
sudomkfs.vfat$partBoot
sudomkfs.ext4$partRoot
六、开始备份
boot分区为fat32格式,可以直接利用cp命令直接拷贝
sudomount-tvfat$partBoot/media
sudocp-rfp/boot/*/media/
sudoumount/media
linux分区为ext4格式,需要利用dump&restore备份
#跳过raspberrypi.img不备份
sudochattr+draspberrypi.img
sudomount-text4$partRoot/media/
cd/media
sudodump-h0-0uaf-/|sudorestore-rf-
cd
sudoumount/media
这里原文中也有一点bug,用dump进行磁盘备份时,会将之前创建的空白img一并备份进去,通过chattr跳过raspberrypi.img
七、备份完毕,卸载虚拟磁盘
此时,已将所有数据备份至空白img,此时就可以卸载虚拟磁盘,将img拷贝出保存了。
然后利用Win32DiskImager或者df命令即可将该raspberrypi.img恢复至sd卡上。
sudokpartx-d$loopdevice
sudolosetup-d$loopdevice
这里是整理后的脚本,编辑sudovibackup.sh,复制以下内容,sudochmod777backup.sh,然后sudo./backup.sh就可以在当前脚本目录中生成树莓派的SD卡镜像了。
也可以参考如下shell脚本:
#!/bin/sh
sudoapt-getinstall-ydosfstoolspartedkpartxrsync
df=`df-P|grep/dev/root|awk'{print$3}'`
dr=`df-P|grep/dev/mmcblk0p1|awk'{print$2}'`
df=`echo$df$dr|awk'{printint(($1+$2)*1.2)}'`
sudoddif=/dev/zeroof=raspberrypi.imgbs=1Kcount=$df
sudopartedraspberrypi.img--script--mklabelmsdos
start=`sudofdisk-l/dev/mmcblk0|awk'NR==10{print$2}'`
start=`echo$start's'`
end=`sudofdisk-l/dev/mmcblk0|awk'NR==10{print$3}'`
end2=$[end+1]
end=`echo$end's'`
end2=`echo$end2's'`
sudopartedraspberrypi.img--script--mkpartprimaryfat32$start$end
sudopartedraspberrypi.img--script--mkpartprimaryext4$end2-1
loopdevice=`sudolosetup-f--showraspberrypi.img`
device=`sudokpartx-va$loopdevice|sed-E's/.*(loop[0-9])p.*/\1/g'|head-1`
device="/dev/mapper/${device}"
partBoot="${device}p1"
partRoot="${device}p2"
sudomkfs.vfat$partBoot
sudomkfs.ext4$partRoot
sudomount-tvfat$partBoot/media
sudocp-rfp/boot/*/media/
sudoumount/media
sudomount-text4$partRoot/media/
cd/media
sudorsync-aP--exclude="raspberrypi.img"--exclude=/media/*--exclude=/sys/*--exclude=/proc/*--exclude=/tmp/*/./
cd
sudoumount/media
sudokpartx-d$loopdevice
sudolosetup-d$loopdevice
其余参考:
【树莓派】制作树莓派所使用的img镜像(一):
相关文章推荐
- 制作树莓派最小镜像-img裁剪瘦身
- 制作树莓派镜像img,并在其他新板上使用,实现批量克隆树莓派板
- 【树莓派】制作树莓派所使用的img镜像(一)
- 【树莓派】制作树莓派所使用的img镜像(二)
- 制作system.img(yaffs2) 镜像
- 制作/解压android ramdisk.img镜像
- 用 WinImage 制作 大IMG软盘镜像
- 树莓派镜像制作
- 制作img镜像文件的5种方法
- 树莓派Raspberry Pi备份SD卡系统、浏览挂载IMG分区镜像文件
- centos5.4裁剪笔记(4)-制作boot镜像
- 制作DOS下可执行的的IMG镜像文件
- 制作树莓派的镜像
- WINXP终极瘦身、优化、封装全攻略 万能WinXP Ghost镜像制作指南
- 制作img镜像文件的5种方法
- android:制作system.img(yaffs2)镜像
- openStack 镜像制作,镜像裁剪一般步骤
- 【转】android: 制作system.img(yaffs2) 镜像
- 制作ubuntu16.04最小docker镜像
- 树莓派镜像裁剪