记一次成功的 linux 系统迁移

允我心安 提交于 2021-02-16 09:53:19

需求

手头多余了一块闲置的 SSD,可以把用了4年的笔记本的机械硬盘替换升级。笔记本装的是 Linux 系统,选择手动迁移分区。

成功之路

原始磁盘是 MBR 的 UEFI 引导,根目录是 ext4 分区, efi 分区是 vfat。 迁移后的磁盘是 GPT 的 UEFI 引导盘,根目录是 xfs 分区, efi 分区是 vfat, boot 分区是 vfat (fat32)。

  • 进入 live-cd ,建立好 SSD 上的分区后,通过 rsync 完成数据迁移。
  • 挂载好三个分区,确认位置层次正确后,通过 manjaro-chroot 进入 SSD 上的系统。
  • 修改 /etc/fstab 使其指向正确的物理位置,(使用 UUID 代替设备路径,通过 blkid 查看 UUID)
  • 更新 efi ,grub-install --target=x86_64-efi --efi-directory=/boot/efi
  • 更新 grub, grub-update 最后,更换物理磁盘,启动系统。

踩坑

分区格式支持

新磁盘采用了 XFS 分区,在数据转移前在系统上安装好 XFS 格式支持包,否则转移好会无法启动系统。

gpt 启动盘分区要求

gpt 如果需要制作成引导盘,必须要一个 8mb 左右未格式化的分区,标记 bios-grub,作为 efi 分区。

boot 分区不是必须的,我这里单独分出来并没有什么显著作用,徒增操作步骤。boot 分区可以是 fat32,ext2 等,这里只测试了fat32

复制数据需要保持权限

rsync -avP source target

EFI 分区更新

live-cd 需要从 uefi 启动才能更新 efi 分区,我原来使用的是 WinSetupFromUSB 制作的多合一启动盘,只有 win 系统是 uefi 启动的,后面单独找了一个 U盘 ,dd 了一个 manjaro iso, 才从 uefi 启动。[1]

启动挂载 根目录,boot,efi 三个分区,使用 manjaro-chroot 就可以进入系统,使用 chroot 则还需要挂载 sys ,dev, run,proc 等分区,使用 mount -B挂载

无法进入桌面

新系统无法进入桌面,开机后直接一长串 [FAILED] ,NetWork,UserManager 启动失败,后者 failed to start user manager for UID 120 gdm 启动失败,直接导致不能进入桌面。

这里可以通过 ctrl + alt + F[num] 进入 tty 界面操作,wifi 联网太麻烦,插上网线直接完成联网。 最先怀疑是程序出错,通过 pacman -Qnq|pacman -S - 完成所有程序的重装,还是没有解决。 接着开始仔细研究逐个排除问题,从 Systemd-Networkd, gdm 到 dbus ,发现是 dbus log 指出是权限出错,然而通过 chmod 改成 777 依然还是这个问题。 后面试着新建一个用户,登录的时候直接遇到 su: /bin/bash: Permission denied。搜索一番,终于找到了罪魁祸首,发现根目录权限居然是750。[2],将根目录修改为 755 后,就能正常重启

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!