无法在 Acer Aspire ES1-533 上安装 Ubuntu

Sla*_*k90 11 uefi system-installation efibootmgr

我买了这台电脑,想在上面安装 Ubuntu。问题是我已经超过3周没有成功。计算机附带功能非常有限的 UEFI。它无法切换到 旧版,也没有选择 UEFI 文件作为受信任执行的选项。唯一可以做的是启用/禁用安全启动

现在关于问题。我首先尝试在自动模式下安装 Ubuntu,然后也在其他东西中手动分区。在这两种情况下,将grub2安装到 /dev/sda时安装都会崩溃,并且计算机挂起。

然后我决定使用ubiquity -b 在没有引导加载程序的情况下进行安装。这运行良好,安装完成没有任何麻烦。最后,我尝试使用grub-install手动安装引导加载程序。在这里,我来到了同一点 - 计算机挂起。

这里 grub-install 冻结

所以问题是当 efibootmgr 尝试在 UEFI 中注册新条目时。我也通过运行这个来确认它:

_sudo efibootmgr -c -d /dev/sda -p 1 -w -L ubuntu_ 
Run Code Online (Sandbox Code Playgroud)

之后它再次挂起。

我的想法如何使其工作如下:

在没有引导加载程序的情况下安装 Ubuntu,在不尝试向 UEFI 注册新条目的情况下手动安装引导加载程序,将引导加载程序从/EFI/ubuntu/ 移动/EFI/BOOT/并将其重命名为bootx64.efi。然后我几乎可以肯定它会起作用。

是否有人能够就如何提供建议:

  1. 执行grub-install而不尝试通过efibootmgr注册新的 UEFI 条目,以便它通过并且不会使计算机冻结?

  2. 我应该将/EFI/ubuntu/ 中的哪些文件复制到/EFI/BOOT,我应该将哪些文件重命名为bootx64.efi

  3. 如果这不是好的方法,那么更好的解决方案是什么。

感谢您的任何建议。

Sla*_*k90 14

这个问题可以解决如下:

  1. 在测试模式下启动 Ubuntu Live DVD/USB 并打开终端

  2. 通过以下方式运行安装过程而不安装引导加载程序:

    sudo ubiquity -b
    
    Run Code Online (Sandbox Code Playgroud)
  3. Continue testing安装完成后按。

  4. 挂载新安装的文件系统/mnt

    sudo mount /dev/sda2 /mnt
    sudo mkdir /mnt/boot/efi
    sudo mount /dev/sda1 /mnt/boot/efi
    for i in /dev /dev/pts /proc /sys; do sudo mount -B $i /mnt$i; done
    
    Run Code Online (Sandbox Code Playgroud)

(哪里sda2是根分区,sda1是EFI系统分区)

  1. 通过以下方式加载 eivars:

    sudo modprobe efivars
    
    Run Code Online (Sandbox Code Playgroud)
  2. 重新安装grub-install64 位版本

    sudo apt-get install --reinstall grub-efi-amd64
    sudo grub-install --no-nvram --root-directory=/mnt
    
    Run Code Online (Sandbox Code Playgroud)
  3. 将 root 更改为/mnt并更新 grub

    sudo chroot /mnt
    update-grub
    
    Run Code Online (Sandbox Code Playgroud)
  4. 移动并重命名已安装的引导加载程序

    cd /boot/efi/EFI
    cp -R ubuntu/* BOOT/
    cd BOOT
    cp grubx64.efi bootx64.efi
    
    Run Code Online (Sandbox Code Playgroud)
  5. 重新启动系统。

可在此处找到更多详细信息:

宏碁社区讨论

  • 当我这样做时: sudo mount /dev/sda2 /mnt sudo mkdir /mnt/boot/efi 它给了我一个错误并说这些要么正在使用中要么不存在。如何检查这些文件夹的等价物是什么?另外在安装 Ubuntu 时,我应该选择自定义分区吗?当你这样做时,你的分区看起来如何? (2认同)

Rod*_*ith 5

首先,我强烈建议您提交关于您的问题的错误报告,如此处所述不能保证这会产生积极的结果,但如果没有错误报告,开发人员就不太可能修复问题。

其次,您说您手动使用以下命令尝试使用固件注册 GRUB:

sudo efibootmgr -c -d /dev/sda -p 1 -w -L ubuntu
Run Code Online (Sandbox Code Playgroud)

但是,该命令缺少一个重要参数:-l {filename}. 另外,我以前从未将其视为-w必需选项,因此可能应该将其删除。总的来说,您的命令应该是:

sudo efibootmgr -c -d /dev/sda -p 1 -L ubuntu -l \\EFI\\ubuntu\\grubx64.efi
Run Code Online (Sandbox Code Playgroud)

如果您确定该文件已安装,并且您希望能够在安全启动激活的情况下启动,请更改grubx64.efi为。鉴于主操作系统安装正在冻结,我怀疑此更改是否会有所帮助,但值得一试。shimx64.efishimx64.efi

至于剩下的,我相信--no-nvram到选项grub-install应该保持它试图通过更新NVRAM变量efibootmgrman页面上没有提到这个选项,但我相信这是一个有效的选项。

您可能还想查阅我关于 Linux 的 EFI 引导加载程序的页面,尤其是它关于如何安装引导加载程序的子页面。这些将为您提供有关这些操作的“具体细节”如何进行的一些背景知识。您甚至可能想使用 GRUB 2 以外的其他东西作为引导加载程序。

要使用默认文件名启动,您应该将所有内容复制/boot/efi/EFI/ubuntu/boot/efi/EFI/BOOT并重命名grubx64.efibootx64.efi该目录中。或者,您可以使用后备文件名安装其他内容。对此的一个主要警告是,如果计算机已经在启动 Windows(或某些其他操作系统),这可能不起作用。在这种情况下,您可能需要“劫持”Windows 引导加载程序,方法是将其替换为 GRUB 2(或任何您想使用的版本)并将 Windows 引导加载程序移到别处。