df -H

可以看到系统是装在/dev/sdb1分区上的
新建一个分区
新分区的大小即为新的系统空间的大小

这里新建了一个分区/dev/sdb3,空间为20G
运行dd命令完全拷贝源系统镜像
type : dd if=/dev/sdb1 of=/dev/sdb3 status=progress
拷贝完成后
type : e2fsck -f /dev/sdb3 检查并且修复文件系统
然后挂载上 看下/dev/sdb3分区的空间
发现只有5.3G,这是因为分区是直接dd的镜像
从/mnt上卸载
接着type :
resize2fs /dev/sdb3 20G
e2fsck -f /dev/sdb3
然后再重新挂载,可以看到分区空间已经回到了20G
配置GRUB
先说一下,直接用dd命令拷贝的镜像连分区的UUID都是一样的,所以接下来要做的就是更改/dev/sdb3的UUID,并且也要更改/etc/fstab文件,然后执行grub-mkconfig命令,该命令会自动检测磁盘分区上的存在的系统并将它加入启动项,但是不知道为什么,在/dev/sdb3分区上启动的menuentry(grub.cfg配置项),里面的root目录的UUID还是/dev/sdb1的UUID,所以还要将这个改成/dev/sdb3的UUID,不然还是会加载进入/dev/sdb1的系统
更改新分区的UUID,并修改fstab文件
type : tune2fs /dev/sdb3 -U random
修改/dev/sdb3的UUID
然后再将新的UUID写入fstab(这里用vim的可视化模式复制粘贴会很快)
生成grub.cfg文件并修改
type : grub-mkconfig -o /boot/grub/grub.cfg
然后找到该配置文件中的/dev/sdb3的menuentry

其中UUIDa1e*****是/dev/sdb3的UUID,而1ef*******是/dev/sdb1的UUID,如果这样启动.那么内核加载的还是/dev/sdb1上的,所以要将内核加载命令后面root变量中的UUID改成/dev/sdb3的
然后卸载/dev/sdb3 重启
测试
重启后在grub启动项中选择/dev/sdb3上的系统,进入

查看分区空间

可以看到空间已经到了22G
然后用dd命令弄个大文件测试下

可以看到空间确实是可以用的
本文详细介绍如何使用dd命令拷贝Linux系统分区,通过调整文件系统大小实现分区扩容,并解决UUID冲突及GRUB配置问题,确保系统顺利启动。
3730

被折叠的 条评论
为什么被折叠?



