需求
手头多余了一块闲置的 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 后,就能正常重启
来源:oschina
链接:https://my.oschina.net/u/2248663/blog/4483339