OpenWrt 等一些操作系统刷完 img 到 SD 卡后, 16G 的 SD 卡,只用了一点点,经常需要“扩容”。之前的做法比较傻,就是重建分区,每次还要敲很多命令,还要把删除分区的起始扇区记录下来。
现在有了这段简单的代码,三行核心的代码就把这个工作自动化了,无需关心 SD 卡容量是 8G 还是 16G 还是更多,反正既然烧了,就是整张卡都是用在操作系统上了。
代码里的 DISK 就是类似 /dev/sdb 这样的, PART 就是分区 /dev/sdb2 这样的。 这里默认是第二分区。分区文件系统格式默认是 ext2/3/4 而不是其他。
burn () { fdisk -l ${DISK}>> /dev/null 2>&1 || (echo "could not find device $DISK - please check the name" && exit 1) # 烧写 dd if=$IMG of=${DISK} bs=4M [ $? != 0 ] && echo "烧写出错了!" && exit 10 MAXSIZEMB=$(printf %s\\n 'unit MB print list' | parted | grep "Disk ${DISK}" | cut -d' ' -f3 | tr -d MB) echo "[ok] ${PART} Will change to ${MAXSIZEMB} MB " parted ${DISK} resizepart 2 ${MAXSIZEMB} [ $? != 0 ] && echo "扩展分区出错了!" && exit 2 e2fsck -y ${PART} resize2fs ${PART} [ $? = 0 ] && echo "文件系统扩展成功" }
本站的文章和资源来自互联网或者站长的原创,按照 CC BY -NC -SA 3.0 CN协议发布和共享,转载或引用本站文章应遵循相同协议。如果有侵犯版权的资 源请尽快联系站长,我们会在24h内删除有争议的资源。欢迎大家多多交流,期待共同学习进步。