ArchLinux 系统迁移

Written By Lindsay On Apr 13, 2020

此文用来迁移 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