ArchLinux 系统迁移

此文用来迁移 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 分区并写入分区表

9. 参考:

将 Arch Linux 转移到新硬盘上
Arch Wiki