(放弃本方案,sd卡文件太大了,制做效率低,改用 https://www.cnblogs.com/Baron-Lu/p/11403375.html)html
系统装在sd上,挂了,修复两天都没搞定,想一想安装ros,编译工程的繁琐,一把辛酸泪!坚决先去制做备份镜像文件吧。node
没找到香蕉派的镜像制做方法,树莓派倒不少,参考了 http://www.fendou.info/raspberry-pi-sd-card-backup-and-recovery/comment-page-1/ ,惋惜作出来用不了,不过折腾了两天,也算是积累了失败的经验。ide
今天开始用回几年前的老方法,dd命令,简单可靠,惋惜有点慢,镜像文件太大了,并且不必定能烧到新的sd卡上(一样大小的sd卡,空间大小仍是有差别的!坑).Anyway,先备份,数据无价嘛,备份好再解决体积问题。oop
第一步:dd 制做镜像orm
1.df -h 查看sd卡的设备挂载点,个人是sdb1,sdb2,结果以下htm
/dev/sdb2 6.7G 4.7G 1.7G 74% /media/robot/BPI-ROOT
/dev/sdb1 256M 13M 244M 5% /media/robot/BPI-BOOTblog
2.运行dd制做镜像,32G大小,时间会比较久raspberry-pi
sudo dd if=/dev/sdb of=/home/robot/bpi.imgit
第二步:拷贝一下刚刚生成的bpi.img,预防万一嘛io
第三步:缩小bpi.img体积
1.查看loop设备状况
losetup -l
2.挂载img文件到一个空闲的loop设备号
sudo losetup /dev/loop0 /home/robot/bpi.img
3.查看img中的分区sudo fdisk -l /dev/loop0
结果以下:
Disk /dev/loop0: 29.6 GiB, 31719424000 bytes, 61952000 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0xed35698e
Device Boot Start End Sectors Size Id Type
/dev/loop0p1 204800 729087 524288 256M c W95 FAT32 (LBA)
/dev/loop0p2 729088 14940159 14211072 6.8G 83 Linux
4.挂载root分区/dev/loop0p2
sudo losetup -o $[729088 *512] /dev/loop3 /home/robot/bpi.img
5. 查看并缩小root分区的文件系统大小
sudo e2fsck -f /dev/loop3
结果以下:
e2fsck 1.42.13 (17-May-2015)
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
BPI-ROOT: 206956/1890720 files (0.1% non-contiguous), 1333945/7652864 blocks
6.修改文件系统大小
sudo resize2fs /dev/loop3 1500000
返回:
resize2fs 1.42.13 (17-May-2015)
Resizing the filesystem on /dev/loop3 to 1500000 (4k) blocks.
The filesystem on /dev/loop3 is now 1500000 (4k) blocks long.
7.fdisk分区情形
sudo fdisk -l /dev/loop0
Disk /dev/loop0: 29.6 GiB, 31719424000 bytes, 61952000 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0xed35698e
Device Boot Start End Sectors Size Id Type
/dev/loop0p1 204800 729087 524288 256M c W95 FAT32 (LBA)
/dev/loop0p2 729088 14940159 14211072 6.8G 83 Linux
8.重建分区,分区开始分区必定不能变,结束分区得大于文件系统。
9.最后一步:
dd if=/dev/loop0 of=/home/pi/my.img bs=4M count=xxx
size=bs*count 。注意大小要大于分区大小。