在 Dell XPS 8920(UEFI 固件、一个 0.5TB SSD 和一个 2TB HDD)上通过擦除磁盘并成功安装安装 Ubuntu 16.04 后,未找到可启动设备。
查看 gparted(显示 Libparted 警告,块大小为 2048,但 Linux 说它是 512 字节),分区如下所示:
Linux 正确安装在 SSD 中(/dev/nvme0n1p1 EFI 分区,启动标志)
/dev/sda1 在某种程度上是 Microsoft 的保留分区,由于我已删除 Windows,因此它不仅不应该存在,而且如果系统希望从这里启动,还可能造成一些麻烦。
另外,浏览许多其他类似的博客后,我注意到我无法通过 BIOS 访问 shimx64.efi 启动文件。
计算机是否尝试从 sda1 启动并失败,因为我在 SSD 上安装了 Linux 和/或因为 sda1 上仍然有一个不需要的 Microsoft 保留分区?有人有什么想法吗?
更新:从 USB 在 ubuntu live 上运行启动修复后,我得到以下摘要: http://paste.ubuntu.com/25673811/
更新2#已解决
问题已暂时解决:在 SSD 上安装 ubuntu 后,我再次安装它,这次是在 HDD 上。此安装显示成功,但实际上并非如此,因为 /sda1 中没有启动文件,仅在 /sda2 中安装了操作系统。不仅如此,之前的安装尚未删除,它在 SSD 上仍然完整。
我将启动文件从 SSD 移出(全部从 /nvme0n1p1/EFI/ubuntu 移至 /sda1/EFI/ubuntu,并将 grubx64.efi 放入 /sda1/EFI/Boot),现在 Ubuntu 可以正确启动了!
到目前为止的发现: - Linux 安装有故障(未正确擦除磁盘,未在 HDD 上正确安装 ubuntu)。 - BIOS 无法读取/找到 SSD 上的启动文件。 - BIOS 可以读取/找到 /sda1 上的启动文件,并在 SSD 第二分区上启动 Linux。
我怀疑 BIOS 可以读取 sda1 上的启动文件,这些文件指向 SSD 中安装的操作系统(如预期)。这意味着安装在 sda2 上的操作系统毫无用处。但是,当擦除 sda2 中的操作系统时,一切都不再起作用,这表明这也是必要的。我无法解释这种行为。有什么想法吗?
答案1
我在使用东芝电脑时也遇到过类似的问题。EFI
要求磁盘上首先有一个系统保留分区,然后在内部驱动器上再有一个 EFI 分区。
它还要求在内部驱动器上使用默认媒体路径。将 /efi/ubuntu/shimx64.efi 复制到 efi/boot/ 并将其重命名为 bootx64.efi。
如果您不使用安全启动,则可以复制并重命名 efi/ubuntu/grubx64.efi。
答案2
不幸的是,Boot Repair 在处理显示为设备的 NVMe 磁盘方面做得很差/dev/nvme*
,就像您的磁盘一样。这意味着您的 Boot Info Script 输出缺少几个关键细节。话虽如此,它显示的内容看起来应该是启动,假设 NVMe 磁盘上有合理的内容。不过,我确实有一些意见和建议:
- 检查你的 ESP- 你的EFI 系统分区 (ESP)似乎位于您的 NVMe 磁盘上,因此 Boot Repair 提供的相关信息非常少。(
/dev/nvme0n1p2
但似乎位于 。)引导加载程序驻留在 ESP 上,因此您可能需要手动检查它以查看它是否包含应包含的文件。具体来说,它应该包含一个名为 的目录,其中EFI/ubuntu
包含名为 、 和 的文件shimx64.efi
。grubx64.efi
(grub.cfg
请注意,ESP 使用不区分大小写的 FAT32。)可能还会在EFI/Microsoft
和/或中保留剩余的 Windows 引导文件EFI/BOOT
。 - 修复或重新创建 ESP 的文件系统-- Windows 8 及更高版本使用称为“快速启动”和“休眠”的功能,当 Windows“关闭”时,这些功能会使文件系统处于不一致的状态。这些功能可能会导致文件系统损坏,在某些情况下,这可能会导致 EFI 无法从 ESP 读取文件,即使其他操作系统可以读取这些文件。有时在 ESP 上运行文件系统检查和修复可以解决这些问题。您可以使用 ,从 Ubuntu 紧急启动实用程序执行此操作
dosfsck
,如sudo dosfsck -a /dev/nvme0n1p2
。在极端情况下,可能需要备份 ESP 中的所有文件(使用tar
、zip
或cp
),使用 创建一个新文件系统mkdosfs
,然后恢复文件。如果您采取这种极端措施,则需要/etc/fstab
在安装中进行编辑以再次安装 ESP。 - 彻底清除并重新安装-- 由于您刚刚安装了 Ubuntu,您可以尝试重新安装它,但这次,请更好地清除 NVMe 磁盘。(根据 Boot Info 输出,有迹象表明原始 ESP 存在。)使用
gdisk
、sgdisk
、parted
或 GParted,您可以删除全部上的分区/dev/nvme0n1
,然后使用分区工具创建新分区或让 Ubuntu 安装程序执行此操作。此操作将确保 ESP 是最新的,没有剩余的 Windows 文件或文件系统损坏,并且磁盘上没有其他奇怪的分区。(有时 OEM 会在磁盘上放置额外的分区并通过其中一个分区启动。这种配置的残余可能会给您带来问题。) - 尝试 rEFInd-- 你可以尝试使用我的rEFInd 启动管理器启动磁盘。您可以下载 USB 闪存驱动器或 CD-R 映像,准备启动介质,然后使用它启动。这应该可以让您启动到 Ubuntu。如果可行,您可以将 PPA 或 Debian 软件包版本安装到硬盘上。这可能会解决一些奇怪的问题;或者即使安装到硬盘上没有帮助,您也可以暂时使用 USB 驱动器启动,同时进一步调查问题。另一方面,阻止 GRUB 启动的任何东西也可能影响 rEFInd,特别是当您将其安装到硬盘上时。
- 将固件设置重置为默认值-- 如果您可以在固件设置实用程序中找到一个选项来将其所有选项重置为默认值,您可以尝试此操作;但是,这可能需要重新创建 Ubuntu 启动项。通常,Boot Repair 可以做到这一点,但我不确定这是否适用于您的 NVMe 磁盘。因此,您需要手动执行此操作或完全重新安装 Ubuntu,如前所述。
- 升级固件-- 某些 EFI 存在错误,无法正常启动,Windows 除外。固件更新(在制造商的网站上可能称为“BIOS 更新”)可能帮助解决此类问题。因此,值得检查一下。话虽如此,戴尔在这方面的表现通常高于平均水平,而且制造商很少发布可能产生您报告的症状的错误类型的错误修复程序。
- 使用 NTFS- 你的
/dev/sda
计算机由 Microsoft 保留分区和 NTFS 分区组成。如果您已从计算机中完全删除 Windows,则应该不是在任何内部磁盘上使用 NTFS。原因是没有好的 Linux NTFS 维护工具,因此什么时候(笔记:什么时候,不是如果) NTFS 分区损坏,则需要进行额外的修复。如果 Windows 已安装在 NVMe 磁盘上,则删除它不会影响您的/dev/sda
HDD,因此 Windows 的残留是可以理解的 - 但这是您应该纠正的问题。但请注意,Microsoft 保留分区和 NTFS 分区都不太可能成为您当前启动问题的原因。我提到这一点是因为这是您在系统启动后应该纠正的问题;您不应该调查或纠正它以修复启动问题。另一方面,如果您的 NTFS 分区位于您在 Ubuntu 和 Windows 计算机之间移动的外部磁盘上,则使用 NTFS 的问题就小了,因为您可以使用 Windows 计算机修复它。
如果以上建议均无帮助,您可能需要进一步了解一些背景知识,因为这样您就深入 EFI 的怪异领域了:
- Adam Williamson 的博客文章介绍了 EFI 的工作原理—— 本页描述了 EFI 模式启动背后的理论。
- Superuser.com 上关于 BIOS 和 EFI 启动之间的区别的问答—— 这提供了前面内容的基础,但更加简洁。
- 我的关于在 EFI 系统上安装 Linux 的页面—— 与 Adam Williamson 的博客相比,此页面对 EFI 模式启动进行了更实用的介绍。
- 我的 Linux EFI 引导加载程序页面—— 本页介绍了 Linux 系统的 EFI 引导加载程序选择。
- Ubuntu 社区 wiki 中有关 UEFI 的条目-- 这个页面有点脱节,但却是针对 Ubuntu 的 EFI 及其问题最具体的介绍。
答案3
“sda1” 将是您的 USB 设备。由于 Linux 未启动,您是否从 USB 启动?
我怀疑问题是您的引导加载程序配置不正确,或者无法访问 SDD。拔下 USB 并重新启动。在启动时反复按 F12 键(我不确定什么时候是按下它的“正确时间”)进入引导加载程序选项菜单。您应该进入引导加载程序菜单。从那里,您应该能够选择您的启动设备。
此链接可能会有帮助。您已经拥有 SDD 访问权限,因此大部分内容不适用,但请确保为您的 SATA 操作选择了 AHCI。