此文用来迁移 Arch Linux 至新硬盘,可能同时适用于其他系统,请自行尝试。
本文使用 uefi 启动
1. 准备
一张刻好 Arch LiveUSB 系统的 u盘,如不作说明,以下操作皆在 Arch LiveUSB 系统上完成。涉及危险操作,做好备份
2. 初始化新硬盘
将新硬盘预先分好区。
3. 挂载
将新旧硬盘的分区按照系统的目录层次挂载好。笔者将旧硬盘挂载到 /mnt/old,新硬盘挂载到 /mnt/new
4. 使用 rsync 转移数据
rsync -qaHAXS /mnt/old/ /mnt/new
5. 重新写入分区表
genfstab /mnt/new -U > /mnt/new/etc/fstab
cat /mnt/new/etc/fstab #有必要检查一下分区表是否正确
6. 更换启动项 (GRUB)
arch-chroot /mnt/new # 进入新硬盘的系统
grub-install --target=x86_64-efi --efi-directory=esp --bootloader-id=GRUB-NEW
# esp 为新硬盘上的 efi 挂载点, bootloader-id 参数可自定义。
# 此命令会自动生成启动项,新硬盘上的旧启动文件可删除。
grub-mkconfig -o /boot/grub/grub.cfg # 更新 grub 配置文件
7. 确认启动顺序
efibootmgr
查看默认启动是否为新的。如果不是,使用
efibootmgr -o id1,id2...
更换启动顺序。
8. 重启
如果需要,重新制作 swap 分区并写入分区表