blog-site

git clone git://git.lin.moe/blog-site.git

 1---
 2title: "ArchLinux 系统迁移"
 3date: 2020-04-13T00:00:00+08:00
 4---
 5
 6>此文用来迁移 Arch Linux 至新硬盘,可能同时适用于其他系统,请自行尝试。  
 7>本文使用 uefi 启动
 8
 9
10## 1. 准备
11一张刻好 Arch LiveUSB 系统的 u盘,如不作说明,以下操作皆在 Arch LiveUSB 系统上完成。涉及危险操作,做好备份
12<!-- More -->
13
14## 2. 初始化新硬盘
15将新硬盘预先分好区。
16
17## 3. 挂载
18将新旧硬盘的分区按照**系统的目录层次**挂载好。笔者将旧硬盘挂载到 /mnt/old,新硬盘挂载到 /mnt/new
19
20## 4. 使用 rsync 转移数据  
21```
22rsync -qaHAXS /mnt/old/ /mnt/new
23```
24
25## 5. 重新写入分区表  
26
27```
28genfstab /mnt/new -U > /mnt/new/etc/fstab
29
30cat /mnt/new/etc/fstab    #有必要检查一下分区表是否正确
31```
32
33## 6. 更换启动项 (GRUB)
34```
35arch-chroot /mnt/new    # 进入新硬盘的系统
36
37grub-install --target=x86_64-efi --efi-directory=esp --bootloader-id=GRUB-NEW
38# esp 为新硬盘上的 efi 挂载点, bootloader-id 参数可自定义。
39# 此命令会自动生成启动项,新硬盘上的旧启动文件可删除。
40
41grub-mkconfig -o /boot/grub/grub.cfg    # 更新 grub 配置文件
42```
43
44## 7. 确认启动顺序
45```
46efibootmgr
47```
48查看默认启动是否为新的。如果不是,使用 
49```
50efibootmgr -o id1,id2...
51```
52更换启动顺序。
53
54## 8. 重启
55如果需要,重新制作 swap 分区并写入分区表  
56
57
58### 9. 参考:  
59[将 Arch Linux 转移到新硬盘上](https://rapiz.me/2020/migrate-arch/)  
60[Arch Wiki](https://wiki.archlinux.org/index.php/Migrate_installation_to_new_hardware#Copy_the_system_to_a_new_drive)