将非 UEFI Ubuntu/Windows 从 SATA SSD 移至 NvMe SSD

将非 UEFI Ubuntu/Windows 从 SATA SSD 移至 NvMe SSD

这个问题已经解决了,但没有任何解决方案有效。我时不时更换笔记本电脑。我甚至有一个 Clonezilla 映像,我会将其恢复到新映像。到目前为止,这种方法运行良好。

我以非常优惠的价格买到了一台翻新的 Latitude 5480。它有一个我甚至都没用过的机械驱动器。我把它换成了运行良好的 SSD 驱动器。

映像(因此是磁盘)具有双启动功能。从配置了 GRUB 的 Ubuntu 启动,以启动 Ubuntu 或 Linux。分区表是 GPT。

第一个分区安装了 Ubuntu,接下来是 Linux 交换分区,然后是可启动的 Windows 分区。没有“保留的 Microsoft 分区”很多人问我为什么这样安装,因为最常见的是先安装 Windows。答案很简单:Windows 占用硬盘空间,而 Ubuntu 不占用硬盘空间。事实上,我安装了一个新版本的 Delphi,需要 20 GB。如果分区设置反了,Delphi 就装不下了。

因此,我买了一个新的 M.2 NVME 磁盘并将整个磁盘克隆到它。两个操作系统都无法启动。出现 GRUB 菜单。Ubuntu 一段时间后进入“恐慌”模式,Windows 只是挂起,有时会抱怨无法访问启动设备。笔记本电脑配置为 UEFI,安全启动已关闭(据我所知,安全启动意味着 UEFI,但 UEFI 并不一定意味着安全启动)

我的猜测是,由于两个操作系统都是在 preNVMe 时安装的,因此都没有所需的驱动程序或配置。

我不想从头开始安装(特别是 Windows),但我被困在这里。据我所知,UEFI 需要在 OS 安装时创建一些文件。

我如何将此非 UEFI 磁盘迁移到新磁盘?

我检查了这些答案,但没有人解决过
将 Windows 10 从 SSD(UEFI/GPT)移至 m.2 NVMe PCH PCIE(或 PCH SATA)
将窗口从 SATA SSD 移至 NvMe SSD

答案1

由于两个操作系统都安装在 SATA 磁盘上,因此均未配置为加载 NVMe 驱动程序在正确的时间– 引导加载程序能够使用 BIOS 功能加载操作系统内核,但操作系统无法本地检测 NVMe 磁盘(当然也无法以常规方式加载驱动程序然而因为根分区无法访问)。

对于 Windows,“StorNvme”驱动程序必须标记为“启动启动” - 据称只需在安全模式下启动 Windows 就可以自动执行此操作,但我必须sc在克隆之前手动执行此操作:

  1. 从 SATA SSD 启动 Windows,
  2. 跑步sc config stornvme start= boot
  3. 关闭并将 SATA SSD 的 Windows 分区克隆到 NVMe。
  4. (确保 SATA SSD断开连接至少在您第一次启动 NVMe Windows 时。)

对于 Linux,初始化内存文件系统需要重建档案以包含所需的模块。

  1. 从 SATA SSD 启动 Ubuntu,
  2. 添加nvme至 /etc/initramfs-tools/modules,
  3. 跑步update-initramfs -u -k all
  4. 关闭并将所有 Linux 分区从 SATA SSD 克隆到 NVMe,
  5. 此时不再需要 /etc/initramfs-tools 条目(一旦您从 NVMe 启动,update-initramfs 就会知道它需要包含“nvme”模块)。

据我所知,UEFI 需要在安装操作系统时创建一些文件。

它们都可以在以后创建。手动创建一个“EFI 系统分区”(在两个操作系统之间共享),克隆其旁边的各个 Windows 和 Linux 分区,然后使用bcdbootWindows 和grub-installLinux 重建引导加载程序。

答案2

这可能并不适合所有人。这取决于您是否能够同时插入 SSD 和 NVMe
1.- 同时插入 SSD 和 NVMe
2.- 从 SSD 启动
3.- Windows 将识别 NVMe 磁盘并添加所需的驱动程序
4.- 以防万一,尝试格式化或访问 NVMe 磁盘
5.- 将 Windows 分区克隆到 NVMe,现在它应该可以启动了

“据我所知,UEFI 需要在操作系统安装时创建一些文件”这是不正确的。这些文件是安全启动(这需要 UEFI,但反之则不然)

已安装驱动程序

相关内容