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,重启,验证。
对于 swap 分区
- 将要移动到的目标分区格式化为 swap 分区格式
- 图形界面:Disk 直接 edit partition
- 命令行:fdisk 创建 swap 分区
mkswap /dev/sda创建 swap- 将新分区的 UUID 更新到
/etc/fstab中的 swap 项