Chromebook 无法启动 Ubuntu 版本 (Bay Trail) (Acer CB3-531)

Chromebook 无法启动 Ubuntu 版本 (Bay Trail) (Acer CB3-531)

我有一台 Chromebook,并已成功安装了 Gallium OS。(是的,我知道,也是基于 Ubuntu 的)这是唯一可以开箱即正确启动操作系统的版本。

我尝试过的所有其他 Ubuntu 版本(Ubuntu、Ubuntu Mate、Ubuntu Budgie)在安装后都遇到了同样的问题。它们都提供了 GRUB 命令行。

当我进入 BIOS 时,我可以浏览 EFI 文件,当我启动位于其中的文件时,EFI/Ubuntu/Grubx64.efi操作系统就会启动。但我不想手动执行此操作。

如何解决此 EFI / Grub 问题并让 Ubuntu 在我的 Chromebook 上启动和运行?

  • 安装在MMCBLK0上的硬盘。
  • MMCBLK0p1 是 EFI(Fat32)(启动标志设置)。
  • MMCBLK0p2 是 ext4。
  • 所有分区前面都有2048kb的可用空间。

答案1

不幸的是,Boot Repair 输出不完整,因为该实用程序尚未正确支持 eMMC 和类似的高级 SSD 类型,它们在 Linux 中显示为和/dev/mmcblk0相关文件名,而不是传统/dev/sda风格的文件名。因此,我仍然不了解一些重要因素,例如.efiESP 上存储的 EFI 程序(带扩展名)到底是什么(/boot/efi在 Ubuntu 中)。

也就是说,您的启动信息摘要中有一个关于问题原因的非常重要的线索:

=================== efibootmgr -v
Timeout: 3 seconds
BootOrder: 0000,0001
Boot0000* EFI eMMC Device   PciRoot(0x0)/Pci(0x17,0x0)/Msg(29,00)/Ctrl(0x0)
Boot0001* EFI Internal Shell MemoryMapped(11,0x830000,0xc0ffff)/FvFile(c57ad6b7-0515-40a8-9d21-551652854e37)

由此可见禁止ubuntu驶入。通常,已安装的 Ubuntu 将包含指向 的条目EFI/ubuntu/shimx64.efi;但是,您的系统中缺少此 NVRAM 条目。(该efibootmgr实用程序显示和操作计算机基于 NVRAM 的 EFI 启动管理器条目的内容。)相反,计算机EFI eMMC Device默认启动 。这是大概启动EFI/BOOT/bootx64.efi文件,我猜是 GRUB 条目不完整或不正确。至少有三种方法可以解决此问题:

  • 创建正确的 NVRAM 条目- 这应该有已经由 Ubuntu 安装程序完成,因此您的计算机固件可能有缺陷并忘记了正确创建的条目。另一方面,Ubuntu 安装期间也可能出现问题,阻止安装程序创建此条目。因此,值得尝试手动执行此操作。为此,请键入sudo efibootmgr -c -d /dev/mmcblk0 -p 1 -l \\EFI\\ubuntu\\shimx64.efi -L ubuntu。如果您随后键入sudo efibootmgr -v,您应该会看到新ubuntu条目,并且当您重新启动时,它应该启动到 GRUB 并显示一个菜单。如果您得到相同的老行为,并且如果sudo efibootmgr -v在您使用解决方法启动后显示该ubuntu条目已消失,那么您的固件(或可能是 NVRAM 硬件)肯定有缺陷。可能值得从制造商处寻找固件更新并重试,或者如果您在退货期内,甚至将计算机退回商店以获得退款。
  • 使用该fbx64.efi程序-- 该程序已安装在最近的一些 Ubuntu 安装中,但它安装后并没有什么用。要使其有用,请按照以下步骤操作:

    1. 键入以备份ESP 上的sudo mv /boot/efi/EFI/BOOT /boot/efi/EFI/BOOT-backup现有目录。EFI/BOOT
    2. 键入sudo mkdir /boot/efi/EFI/BOOT在 ESP 上创建一个新的后备目录。
    3. 键入sudo cp /boot/efi/EFI/ubuntu/shimx64.efi /boot/efi/EFI/BOOT/bootx64.efi以将 Shim 从EFI/ubuntuESP 上的目录复制到,并在新位置EFI/BOOT使用后备文件名 ( )。bootx64.efi
    4. 键入sudo cp /boot/efi/EFI/ubuntu/fbx64.efi /boot/efi/EFI/BOOT要复制到ESP 上的fbx64.efi后备目录 ( )。EFI/BOOT
    5. 在您的主目录中创建一个名为 的文本文件boot.txt。它应该只有一行,内容为grubx64.efi,ubuntu,,This is the boot entry for ubuntu
    6. 键入sudo iconv -t UCS-2 < ~/boot.txt > ~/BOOT.CSV。这会将您创建的文件转换为文件fbx64.efi可以读取的格式
    7. 键入sudo cp ~/BOOT.CSV /boot/efi/EFI/ubuntu要复制BOOT.CSVEFI/ubuntuESP 上的目录。

    此过程的要点是,程序在运行时扫描ESP 上fbx64.efi的每个子目录,查找名为 的文件。如果找到,它会使用这些文件为文件中描述的引导加载程序重新生成 NVRAM 条目。完成后,将运行新引导顺序中的第一个条目。因此,如果作为后备引导加载程序运行(它将在步骤 1-4 中复制时作为后备引导加载程序运行),并且如果您创建合适的文件,即使您的 NVRAM 条目经常丢失,Ubuntu 的 GRUB 也应该从其正常位置启动。这不如拥有一个可以正常工作的 EFI 引导管理器好,但它比使用下一个选项要好,但需要注意的是,此过程比下一个过程更繁琐。一个重要的警告是,如果 ESP 有EFIBOOT.CSVBOOT.CSVfbx64.efiBOOT.CSV其他 BOOT.CSV文件,其中一个文件可能会在启动顺序中排在第一位,这可能会导致进程出错。因此,如果您遇到问题,您可能需要搜索此类文件,如果您认为它们可能导致问题,则可能需要删除或重命名它们。

  • 使用后备文件名——如果上述方法不起作用,您可以复制有效的 GRUB 以使其正常工作,如下所示:

    1. 键入以备份ESP 上的sudo mv /boot/efi/EFI/BOOT /boot/efi/EFI/BOOT-backup现有目录。EFI/BOOT
    2. 键入sudo cp -r /boot/efi/EFI/ubuntu /boot/efi/EFI/BOOT以将工作的 Ubuntu 引导加载程序放入EFI/BOOT目录中。
    3. 键入sudo mv /boot/efi/EFI/BOOT/shimx64.efi /boot/efi/EFI/BOOT/bootx64.efi将 Shim 重命名为后备文件名,以便它默认启动。

    第三种方法存在危险:如果我的诊断有误,或者shimx64.efiESPEFI/ubuntu目录中缺少或有缺陷,则此过程将导致计算机无法启动。在这种情况下,您需要使用紧急系统来逆转该过程,以将系统恢复到当前的半工作状态。此外,第三种方法将使您永远运行当前安装的 Shim 和 GRUB,除非您手动干预;您将不是通过 Ubuntu 软件包管理器安装更新。出于这些原因,通过第一种方法按顺序获取 NVRAM 条目是首选解决方案 —— 但考虑到您问题的性质,我并不希望这可行。

如果您正在尝试使用不同的发行版,请注意,每个安装都可能需要grub.cfg在与 Shim 和 GRUB 相同的目录中(EFI/ubuntuEFI/BOOT在 ESP 上)有自己的文件。因此,如果您使用第三个修复程序安装新的发行版,则至少需要移动grub.cfg。如果您安装不相关的发行版,则可能需要完全重做第三个修复程序。

相关内容