Linux 下的分区迁移
普通分区迁移
- free space -> 新建ext4分区
- 分区数据拷贝(按字节复制)
1 | sudo dd if=/dev/sda0 of=/dev/sda1 bs=64M |
- 检查分区完整性
1 | sudo e2fsck -f /dev/sda1 |
- 修改文件系统大小
dd
按字节复制,会把文件系统的所有信息都复制到新分区,因此新分区的大小显示依旧是原有分区大小。
1 | sudo resize2fs /dev/sda1 |
- 在新的分区的
/etc/fstab
内修改UUID:
grub引导时按照uuid寻找根目录,而
dd
按字节拷贝后的分区与根分区具有完全相同的uuid,grub引导时会出现错误。
设置随机uuid
1 | sudo tune2fs -U random /dev/sda1 |
或
1 | uuidgen | xargs sudo tune2fs /dev/sda1 -U |
- 设置自动挂载:修改
/etc/fstab
1 | UUID=8f418dae-a22c-43ef-b46e-87b075bbeaec /opt ext4 defaults 0 2 |
重启,验证。
对于根分区
- 修改grub,重建引导(需要在 Live CD或者 Live USB 上进行)
boot-repair修改默认os-boot分区时,不能在当前os运行时修改
在 Live CD / Live USB 上下载boot-repair:(先配好网络)
1 | sudo add-apt-repository ppa:yannubuntu/boot-repair |
启动boot-repair
,选择Advanced Options
,修改os-default-boot
到目标分区/dev/sda1
,重启,验证。