![Update-grub 检测 NVME 驱动器上的 Windows 10 系统。无法启动生成的条目。不是 UFI 系统](https://linux22.com/image/150827/Update-grub%20%E6%A3%80%E6%B5%8B%20NVME%20%E9%A9%B1%E5%8A%A8%E5%99%A8%E4%B8%8A%E7%9A%84%20Windows%2010%20%E7%B3%BB%E7%BB%9F%E3%80%82%E6%97%A0%E6%B3%95%E5%90%AF%E5%8A%A8%E7%94%9F%E6%88%90%E7%9A%84%E6%9D%A1%E7%9B%AE%E3%80%82%E4%B8%8D%E6%98%AF%20UFI%20%E7%B3%BB%E7%BB%9F.png)
我安装了 Ubuntu 18.04.2 LTS 和 grub 2,它从 sata SSD 驱动器启动。这是 BIOS 系统,而不是 UEFI。
我已将 Windows 10 恢复到 nvme 驱动器,并使用我的“Macrium Reflect”救援 USB 修复了其启动结构和驱动程序。 nvme 驱动器在 VirtualBox 中正常启动。所以我相信 Windows 10 磁盘配置正确。
% lsblk -no name,serial,type,tran /dev/nvme0n1
nvme0n1 S466NX0KB54472K disk nvme
└─nvme0n1p1 part nvme
我想使用 Grub 2 在此 nvme 驱动器上启动 Windows 10。
Ubuntu可以很好地看到我的nvme驱动器,并update-grub
找到Windows 10系统。这是生成的部分/boot/grub/grub.cfg
:
### BEGIN /etc/grub.d/30_os-prober ###
menuentry 'Windows 10 (on /dev/nvme0n1p1)' --class windows --class os $menuentry_id_option 'osprober-chain-4E76C42676C4111F' {
insmod part_msdos
insmod ntfs
if [ x$feature_platform_search_hint = xy ]; then
search --no-floppy --fs-uuid --set=root 4E76C42676C4111F
else
search --no-floppy --fs-uuid --set=root 4E76C42676C4111F
fi
parttool ${root} hidden-
drivemap -s (hd0) ${root}
chainloader +1
}
然而,当从 grub 启动 Windows 10 Entry 时,我收到 4 个错误:
error: no such devices 4E...111F
error: not a partition
error: device format "lvmid/ozz..." invalid must be (f|h)dN, with 0 <= N < 120.
error: invalid signature
我猜测缺少 NVME 驱动程序模块initramfs
。或者--set=root
需要不同的规格。
是这样吗?如果是这样,我该如何将其放入 grub 中?
这对我来说似乎是一个错误......
答案1
error: no such devices 4E...111F
error: not a partition
error: device format "lvmid/ozz..." invalid must be (f|h)dN, with 0 <= N < 120.
error: invalid signature
这些消息来自 GRUB,因此此时甚至还没有加载 initramfs。
问题似乎是您的系统 BIOS 无法在启动时访问 NVMe 设备(至少在传统 BIOS 模式下不能)。
由于基本上所有带有用于 NVMe 驱动器的内置 M.2 插槽的系统都足够新,可以拥有 UEFI 固件,因此一些系统固件供应商似乎选择实现 NVMe 启动支持仅在 UEFI 本机模式下。一旦你的 Linux 运行起来,它就可以很好地看到 NVMe 驱动器,因此update-grub
能够读取它,但在启动时,你的 GRUB 使用旧版 BIOS 功能来枚举系统磁盘,对于旧版 BIOS,NVMe 驱动器只是不存在。如果用于 NVMe 访问的相应 BIOS 扩展不可用,则 BIOS 会将 NVMe 驱动器视为通用 PCI/PCIe 设备,与任何磁盘设备都没有任何共同点。
您应该非常仔细地检查您的 BIOS 设置:如果有一个涉及 NVMe 启动支持的设置并且当前处于关闭状态,您应该尝试启用它。但是,如果您的 NVMe 驱动器位于附加卡上,则很可能无法在没有内置 NVMe 插槽的主板上的旧版 BIOS 下启动,除非该卡包含可提供访问所需 BIOS 例程的 BIOS 扩展 ROM NVMe 驱动器。