如何将搭载全磁盘加密(full disk encryption)Ubuntu 20.04的旧Intel平台硬盘迁移至AMD新平台并成功启动
如何将搭载全磁盘加密(full disk encryption)Ubuntu 20.04的旧Intel平台硬盘迁移至AMD新平台并成功启动
这种跨硬件平台迁移加密Ubuntu系统的情况我碰到过好多次,核心问题其实是旧系统的启动镜像(initramfs)和引导程序(GRUB)只适配了Intel的硬件,没法识别新的AMD组件。咱们一步步来修复,操作起来并不复杂:
第一步:准备Ubuntu 20.04启动盘
先制作一个Ubuntu 20.04的U盘启动盘,用它进入「Try Ubuntu」试用模式——我们需要通过这个环境来修复旧硬盘里的系统。
第二步:挂载旧硬盘的加密分区
进入试用模式后,打开终端,按以下步骤操作:
- 先识别你的加密分区:执行
lsblk或者sudo fdisk -l,找到标注类型为crypto_LUKS的分区,比如/dev/sda3(具体设备名根据你的硬盘情况调整)。 - 解锁加密分区:执行
sudo cryptsetup luksOpen /dev/xxx cryptroot,把/dev/xxx换成你找到的加密分区设备名,然后输入原来的加密密码。 - 激活逻辑卷(Ubuntu全加密默认用LVM):先扫描卷组
sudo vgscan,然后激活卷组sudo vgchange -ay。 - 挂载根分区:找到根逻辑卷(一般是
/dev/mapper/ubuntu--vg-root),挂载到/mnt:sudo mount /dev/mapper/ubuntu--vg-root /mnt。 - 挂载Boot分区:找到你的Boot分区(比如
/dev/sda2),挂载到/mnt/boot:sudo mount /dev/sda2 /mnt/boot;如果是UEFI启动的系统,还要挂载EFI分区(比如/dev/sda1)到/mnt/boot/efi:sudo mount /dev/sda1 /mnt/boot/efi。
第三步:进入Chroot环境修复系统
Chroot能让我们直接操作旧硬盘里的系统:
- 先挂载必要的系统目录,确保Chroot环境正常:
sudo mount --bind /dev /mnt/dev sudo mount --bind /proc /mnt/proc sudo mount --bind /sys /mnt/sys - 进入Chroot:
sudo chroot /mnt
第四步:重新生成适配AMD硬件的initramfs
旧系统的initramfs里没有AMD的硬件驱动,这是没法启动的关键:
- 先重新安装当前内核,确保包含AMD的模块:
apt install --reinstall linux-image-$(uname -r) - 重新生成所有内核版本的initramfs:
update-initramfs -u -k all,这一步会把AMD的驱动打包进启动镜像里。
第五步:修复GRUB引导程序
新主板的引导环境和旧Intel平台不同,需要重新安装GRUB:
- 如果是UEFI模式:执行
grub-install /dev/sda(这里/dev/sda是你的旧硬盘设备名,不是分区!),然后更新GRUB配置:update-grub - 如果是BIOS模式:同样执行
grub-install /dev/sda,再运行update-grub
第六步:收尾并重启
- 退出Chroot环境:
exit - 依次卸载所有挂载的分区:
sudo umount /mnt/boot/efi # 如果挂载了EFI分区才执行 sudo umount /mnt/boot sudo umount /mnt/dev sudo umount /mnt/proc sudo umount /mnt/sys sudo umount /mnt - 关闭加密映射:
sudo cryptsetup luksClose cryptroot - 拔掉U盘,重启电脑,选择旧硬盘作为启动项,现在应该就能正常进入加密密码输入界面了!
小提示
如果碰到卷组识别失败的情况,先检查加密分区是否正确解锁;如果GRUB安装报错,确认你的启动盘启动模式(UEFI/BIOS)和旧系统一致。
备注:内容来源于stack exchange,提问作者ttyty
相关产品推荐
相关产品推荐

