Mac 上的 Ubuntu:执行“grub-install /dev/nvme0n1”失败

Mac 上的 Ubuntu:执行“grub-install /dev/nvme0n1”失败

我知道这是一个非常常见的问题,但如果我在这里,这意味着我已经搜索并尝试了很多道路:但没有成功。我正在尝试在 MacBookPro 13" 2019 上安装 Ubuntu,运行 MacOS BigSur,分区(也不是 VM 也不是 bootcamp)。

我是如何准备 Ubuntu live USB 的

  1. 我此时已经下载了Ubuntu的最新稳定版本:Ubuntu 20.04.2.0 LTS

  2. 然后我插入一个 4GB USB 并使用磁盘工具将其格式化为 MS-DOS (FAT)。

  3. 终于安装了蚀刻机并将 ISO 映像刻录到我的 USB 中。

  4. 按住选项键重新启动我的 Mac 并启动到我的 USB(EFI 启动)。

我是如何安装Ubuntu的

  1. 从第一个菜单中我选择了“尝试 Ubuntu”
  2. 一旦进入桌面,触摸板和键盘都不起作用,所以我插入了外部鼠标并启用屏幕键盘完成安装
  • 打开活动概述并开始输入设置。

  • 单击“设置”。

  • 单击侧栏中的辅助功能以打开面板。

  • 在“打字”部分打开屏幕键盘。

  1. 我点击桌面上的 Ubuntu 安装程序图标

  2. 所选语言

  3. 选择正常安装并勾选“安装第三方软件”

  4. 当询问要安装 Ubuntu 的分区时,选择了其他选项/else

  5. 然后我从可用空间创建了 2 个分区

    • 之一512MB,”电喷“(来自下拉菜单)
    • 之一30GB,外部4(从下拉菜单),安装到/(来自其他下拉菜单)
  6. 然后我确保安装引导加载程序的磁盘已设置为磁盘而不是具体的EFI分割我制作了(即 /dev/nvme0n1 而不是 /dev/nvme0n1p3)

  7. 点击立即安装

  8. 在grub2步骤安装失败

笔记

  • 我已经尝试取消选中“安装第三方软件”
  • 我已经尝试选择“最小安装”而不是“正常”
  • WiFi 也无法工作,所以我后来尝试了以太网电缆,网络连接现在可以工作了
  • 我完全擦除了磁盘并重新安装了 MacOS(当然我有文件的备份)

安装过程视频

观看视频。

最后错误消息的屏幕截图

错误信息 新警告消息

答案1

我在使用 macOS Big Sur 版本 11.1、配备 2 GHz 四核 Intel Core i5 处理器的 2020 MacBook Pro 上安装 Ubuntu 20.04.2.0 LTS 时遇到了完全相同的问题。经过两天的努力,我终于找到了解决方案。请注意,这是一个漫长的过程。

根据我的研究,我发现问题是由于 Mac 引导加载程序期望 EFI 分区格式化为 HFS+,而 Ubuntu 安装程序将其格式化为 VFAT(如 Rohith Madhavan 所述)这里)。

为了解决这个问题,我找到了三种可能的解决方案:

  1. 使用 Rohith Madhavan 的方法
  2. 将引导加载程序从 GRUB 替换为酶标仪
  3. 使用 Floris van Breugel 将 Ubuntu 安装在外部 SSD 上方法

选项一是七年前发布的,需要在我的 Ubuntu 安装中添加一个未签名的存储库(出于安全原因我不愿意这样做)。我不明白从 GRUB 交换到 rEFInd 的全部含义,因此我不习惯使用选项二,最后,我不希望使用外部 SSD 来降低内存访问速度,所以我不想使用选项三。

我的最终解决方案是使用选项一和选项三的一部分来将我自己的 GRUB 配置文件格式化为 HFS+,以便我可以从内部 SSD 上的分区启动 Ubuntu。

备份

虽然该过程不会给您带来任何问题,但如果发生错误,可能会擦除您的驱动器。因此,在继续操作之前备份所有内容始终是最安全的。

安装Ubuntu

  1. 打开 Mac 上的“磁盘工具”。
  2. 选择您的Apple SSD驱动器(确保选择父驱动器而不是容器)。
  3. 选择“分区”。
  4. 点击加号按钮并创建一个名为Ubuntu Boot Loader格式Mac OS Extended (Journaled)和大小为 128MB 的新分区。稍后这将作为 Ubuntu 引导加载程序的位置。
  5. 再次点击加号按钮,创建另一个名为Ubuntuwith format 的新分区MS-DOS (FAT),并为其分配您希望 Ubuntu 安装具有的内存大小(我建议不小于 50GB)。
  6. 从 下载 Ubuntu这里
  7. 插入 USB 并转到“磁盘工具”。从这里找到 USB,点击Erase,选择格式MS-DOS (FAT)并选择方案,GUID Partition Map然后点击Erase
  8. 使用蚀刻机将该 ISO 文件闪存到 USB 上。请注意,这将擦除整个 USB(请参阅更多细节)。
  9. 重新启动计算机,点击Cmd+R重新启动。这将使您进入恢复模式。
  10. 登录您的帐户,进入菜单位置Utilities,选择下拉菜单中的第一项,然后将设置更改为No SecurityAllow booting from external drive
  11. 关闭你的电脑。
  12. 插入可启动 USB 驱动器,然后按住 键打开计算机Option
  13. 选择 EFI 启动驱动器(应为黄色)。它可能会向您显示一条警告语Update Required。点击Update选项。这将重新启动您的计算机。确保Option在它重新打开时按住。然后再次点击EFI启动。
  14. 按照步骤一到五进行操作这里
  15. Installation Type页面上选择Something Else
  16. 找到MS-DOS (FAT)您创建的分区并点击减号。
  17. 选择Free Space并点击加号。
  18. 通过选择您想要的 GB 数来创建您的 Linux 内存空间,选择Ext4 Journaling File System、检查Format the partition并将安装点设置为/
  19. 选择Free Space并点击加号。
  20. 创建 Linux 交换空间,使用剩余内存并选择swap格式。
  21. 在下面Device for boot loader installation选择格式化内存所在的分区ext4
  22. Install Now
  23. 继续安装过程。您将再次看到grub-install /dev/nvme****失败的警告,但不用担心。只需点击重新启动即可。系统会要求您移除 USB,然后点击Enter

现在,您的计算机上将安装 Ubuntu,但如果没有帮助,您的 GRUB 引导加载程序将无法打开它。

进入Ubuntu

  1. 重新启动计算机并Option在启动时按该键。
  2. 选择 EFI 启动驱动器(这是您的 Ubuntu 安装)。
  3. 您应该会看到一个 GRUB 终端。
  4. 请按照以下步骤操作罗希斯·马达万概述:

在 grub 控制台中输入 ls

grub> ls

(memdisk) (hd0) (hd0,msdos) (hd1) (hd2) (hd2,gpt3) (hd2,gpt2) (hd2,gpt1)

您可能不会得到与此完全相同的结果,但您将有一些类似的选项。

现在,找到包含用户主目录的分区。

grub> ls (hd2,gpt2)/home

rohith/

继续尝试,直到找到为止。

最后一步的结果有两部分:(hdX,gptY)。您需要保留 hdX 部分,但浏览所有 gptY 选项以查找 /boot/grub 目录。

grub> ls (hd2,gpt2)/boot/grub

unicode.pf2 [...] grub.cfg

现在您想将其设置为您的根目录以执行进一步的命令。

grub> set root=(hd2,gpt2)

正确启动的唯一方法是使用驱动器的 UUID。为拿到它,为实现它 -

grub> ls -l (hd2,gpt2)

记下 UUID。您必须在下一步中手动输入。

grub> linux /boot/vmlinuz .efi.signed root=UUID=〈the UUID from above〉

GRUB 控制台可以完成制表符补全,因此如果您只需键入 vmlinuz 部分并按 Tab,然后按 。再次按 Tab 键,您将不必键入整个文件名。确保 efi.signed 部分存在。

现在,设置初始 RAM 磁盘

grub> initrd /boot/initrd〈...tab here!...〉

您应该能够使用命令启动

grub> boot

您现在将进入 Ubuntu 安装状态,就好像一切都已正确安装一样。但每次重新启动时都必须重复此过程。要解决此问题,您可以执行以下操作。

如果您遇到问题:

确认您之前收到的 UUID 位于发行版的 grub.cfg 中 /boot/efi/EFI/ 下(例如 /boot/efi/EFI/ubuntu/grub.cfg)中的行search.fs_uuid SYSTEM-PARTITION-UUID-HERE root。如果不,复制粘贴包含当前值的行并在前面添加注释行 (#),然后在新行上将 替换SYSTEM-PARTITION-UUID-HERE为 ubuntu 分区的 UUID。

永久修复 GRUB 问题

在这里,您需要将 Ubuntu 安装默认创建的 VFAT 引导加载程序重新格式化为 HFS+。这可以通过使用 GRUB 创建您自己的引导加载程序配置来完成。我使用的方法与 Floris van Breugel 所做的相同(但在我的内部 SSD 而不是外部 SSD 上)。

  1. 按照从标题开始的说明进行操作Making Ubuntu bootable part 1操作一路走到尽头Turn SIP back on (for security)。唯一的变化是您应该引用的磁盘是您的内部Ubuntu Boot Loader分区(您不需要带有此分区的外部驱动器。
  2. Option在启动过程中按住 键重新启动计算机。您现在将拥有两个 EFI 启动驱动器。进入最左边的那个。它应该说你需要安装更新才能工作。点击Update
  3. 重新启动期间再次按住该Option键,然后选择中间的 EFI 启动驱动器。这将再次带您进入 GRUB 屏幕。等待一两分钟,然后它应该会带您进入 Ubuntu 加载屏幕。

你们都完成了。您现在应该能够启动 Ubuntu 和 MacOS。

希望这对你有用。

答案2

长话短说...

这可能是也可能不是一个“答案”——我将把它留给你来决定。你应该知道我没有尝试在配备 T2 的 Mac 上安装 Ubuntu,但我相信这是可以完成的。我不会尝试与您讨论所有细节。我将尽力为您指明正确的方向并尝试澄清任何困惑点。作为回报,我会问一件事:如果这个“答案”帮助您在 2019 MBP 上成功安装 Ubuntu,我希望您能够针对我的 GitHub 页面提交拉取请求与您的安装过程。

基础因为我的安装过程是Ubuntu SE 上的这个答案。请注意,它引用了rEFIndSourceForge 网站您可以在其中找到下载、安装说明和支持论坛。

我的 Mac 与众不同,而且我在 GitHub 上记录的安装过程反映了 2018 年 Mac Mini 和我的 2011 年 MBP 之间的一些差异。你的 2019 MBP、我的 2011 MBP 和 2018 Mac Mini 之间还会有其他差异。希望您能在所有这些来源之间找到足够的共同点来实现您的目标。

新型 Mac 中的 T2 芯片可以支持在基于 Intel 的新型 Mac 上安装 Linux1,2。唯一的美中不足据我所知,对于最新型号的 Mac,目前有没有适用于专有 PCIe SSD 芯片的 Linux 驱动程序苹果使用。详细信息在这里

这意味着什么?这意味着 Linux 必须安装在外部驱动器上。这可以通过USBC 转 SATA 适配器。该适配器宣传为 10 Gbps;我发现它比 PCIe SSD 慢,但并不令人反感。

USBC 转 SATA 适配器

对我来说,安装过程很艰难。由于每年操作系统升级,Apple 的文档永远过时,Ubuntu 的文档具有误导性,我不想这样做我的MBP。作为“保险”,我买了一个新的 SSD 来安装,以防出现问题。我相信如果你决定放弃这个任务,会有恢复程序,但你需要在其他地方找到该指导。在开始之前,您绝对应该进行良好且完整的备份 - 并知道如何进行恢复。

如果所有这些听起来令人沮丧,也许您应该重新考虑。就我而言,我觉得这个风险值得冒。根据苹果最近的历史和 Mac 的当前趋势,我的评估是,苹果将在不久的将来使我的硬件不再适合用途,因此没有什么可失去的。他们似乎非常热衷于进行彻底的改革,但我们不知道这会给我们作为用户带来什么。

希望这有用。

答案3

您的安装介质似乎未在 efi 模式下启动,您可以运行此命令来验证它是否在 efi 模式下启动。

[ -d /sys/firmware/efi ] && echo "UEFI mode" || echo "Legacy mode

如果您在传统模式下尝试使用不同的工具创建 USB 介质,有几个创建 uefi 启用安装介质的教程,然后在安装之前再次验证启动模式。

您可以使用以下命令来检查是否比上面的命令更容易阅读。

test -d /sys/firmware/efi && echo efi || echo legacy

或更长但更容易理解

if test -d /sys/firmware/efi;then echo efi;else echo legacy;fi

相关内容