我有一台全新的 2020 Mac mini(Intel i3 四核芯片)。我的安装(专用 Ubuntu 无双启动)失败,并出现著名的问题;
执行“grub-install /dev/nvme0n1”失败。这是一个致命错误。
我通过启动恢复模式并选择“无安全性”和“允许从外部驱动器启动”绕过了 T2 芯片。因此,当我打开 Mac mini 并按下 Alt 键时,它会显示两个图标来选择启动,硬盘驱动器和闪存驱动器。我的闪存驱动器有ubuntu-20.04-桌面-amd64.iso它已被我正在使用的 Ubuntu 14.04 LTS 笔记本电脑上的启动盘创建器制作成可启动的 USB。
无论我做什么,安装都会失败,并且 Mac mini 随后启动到功能有限的旧版 Grub 2.04。
我无法遵循这个好建议在 Mac Mini 2018 上安装 Ubuntu 18.04因为我无法以那种方式安装 rEFInd。
我已尝试了多个 Matt Gadient(传奇)可启动 iso 版本。
我已使用 gparted 将整个驱动器重新格式化为 gpt 并且基本上从头开始,但找不到任何可以让安装程序完成的分区组合(除了在没有 EFI 分区时强制安装,在这种情况下安装程序不会失败,但显然 Mac mini 无法启动任何东西)。
我尝试了这些页面上的几个手动 grub 安装选项,但最常见的错误是 /cow 正忙,无法卸载。
当我使用 boot-repair 启动时,程序会运行,但不会检测到任何东西。如果我从该程序中终端并 lsblk,它甚至不会显示 nvme0n1 驱动器。
那么,有什么想法可以让安装程序正常工作或如何手动安装 grub 吗?
答案1
好的,这就是对我有用的方法。
从 USB 上的 20.04 iso 让安装程序完成它的工作。
它将创建一个带有 /boot/efi 的小分区,并使用 / 占用驱动器的其余部分,
正如您所知,Ubuntu 现在使用交换文件,因此不需要交换分区。
正如我上面的问题所示,安装程序似乎会失败。
执行“grub-install /dev/nvme0n1”失败。这是一个致命错误。
重启后,你将获得一个受限的 grub 终端。
完整说明如下这里但以下是 rohiths 回答的基本内容;
在 grub 控制台上;
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〈...tab here!...〉.efi.signed root=UUID=〈the UUID from above〉
GRUB 控制台可以进行制表符补全,因此如果您只输入 vmlinuz 部分并按制表符,然后再次按 . 和制表符,则不必输入整个文件名。确保 efi.signed 部分存在。
现在,设置初始 RAM 磁盘
grub> initrd /boot/initrd〈...tab here!...〉
你应该能够使用以下命令启动
grub> boot
这将重新启动并让您进入登录屏幕,就像您已经完美安装并重新启动一样。如果您有互联网连接,您可以在此时将系统更新到最新版本,但在修复 grub 之前请勿重新启动。注意,启动分区不正确,引导加载程序实际上需要重新格式化为 FAT32,并使用挂载点 /boot/efi 和标志 (boot,esp),这可以通过 gparted 轻松完成。
根据 rohiths 的回答,系统最初无法启动,因为 Mac 引导加载程序希望 EFI 分区格式化为 HFS+(典型的 Mac 文件系统),而 Ubuntu 安装程序实际上将其格式化为 VFAT。但这在我的计算机上并不正确。
所以现在您可以使用 boot/efi 挂载新分区并重新安装 grub,检查您的配置并更新 grub,然后您可以重新启动。
答案2
我在 Mac min 上安装 Ubuntu 20.04/10 时遇到了同样的问题。为了解决这个问题,我从 USB 启动到 Ubuntu Live,然后在终端中使用此命令修复 grub。首先弹出任何外部驱动器。
sudo mkdir -p /mnt/drive
sudo mount /dev/nvme0n1p2 /mnt/drive
sudo mount /dev/nvme0n1p1 /mnt/drive/boot/efi
sudo mount --bind /dev /mnt/drive/dev
sudo mount --bind /dev/pts /mnt/drive/dev/pts
sudo mount --bind /proc /mnt/drive/proc
sudo mount --bind /sys /mnt/drive/sys
sudo cp /etc/resolv.conf /mnt/drive/etc/resolv.conf
sudo chroot /mnt/drive
su - <your username>
sudo update-grub
答案3
对我来说,有一个更简单的解决方案可以解决此错误。使用时请自担风险。分区时请小心!备份所有数据。
我使用安装加密的 luks ext4。 双重启动
- 为 ubuntu 创建一个分区(例如使用 macos)
- 从 USB 启动进入 ubuntu live 22.04
- “尝试 Ubuntu”
- 安装 Ubuntu没有引导加载程序使用
ubiquity -b
- 点击“其他”
- 删除你在 macos 中创建的分区,这样它就会显示“可用空间
- 创建一个 1GB 的 ext4 分区并将其映射到 /boot
- 为剩余的可用空间创建一个加密分区并映射到 /
- 点击安装
- 再次从 USB 重启进入实时模式
- 手动安装 GRUB
以下是我手动安装的方法(当然要确保分区名称与您的相匹配!):
sudo cryptsetup luksOpen /dev/nvme0n1p4 my_encrypted_volume
sudo mount /dev/mapper/my_encrypted_volume /mnt
sudo mount --bind /dev /mnt/dev &&
sudo mount --bind /dev/pts /mnt/dev/pts &&
sudo mount --bind /proc /mnt/proc &&
sudo mount --bind /sys /mnt/sys
sudo mount /dev/nvme0n1p3 /mnt/boot
sudo mount /dev/nvme0n1p1 /mnt/boot/efi
sudo cp /etc/resolv.conf /mnt/etc/resolv.conf
sudo chroot /mnt
apt-get install grub-efi
grub-install --uefi-secure-boot --target=x86_64-efi --efi-directory=/boot/efi boot-directory=/boot --bootloader-id=GRUB --no-nvram --removable
sudo update-grub