Sla*_*k90 11 uefi system-installation efibootmgr
我买了这台电脑,想在上面安装 Ubuntu。问题是我已经超过3周没有成功。计算机附带功能非常有限的 UEFI。它无法切换到 旧版,也没有选择 UEFI 文件作为受信任执行的选项。唯一可以做的是启用/禁用安全启动。
现在关于问题。我首先尝试在自动模式下安装 Ubuntu,然后也在其他东西中手动分区。在这两种情况下,将grub2安装到 /dev/sda时安装都会崩溃,并且计算机挂起。
然后我决定使用ubiquity -b 在没有引导加载程序的情况下进行安装。这运行良好,安装完成没有任何麻烦。最后,我尝试使用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。然后我几乎可以肯定它会起作用。
是否有人能够就如何提供建议:
执行grub-install而不尝试通过efibootmgr注册新的 UEFI 条目,以便它通过并且不会使计算机冻结?
我应该将/EFI/ubuntu/ 中的哪些文件复制到/EFI/BOOT,我应该将哪些文件重命名为bootx64.efi?
如果这不是好的方法,那么更好的解决方案是什么。
感谢您的任何建议。
Sla*_*k90 14
这个问题可以解决如下:
在测试模式下启动 Ubuntu Live DVD/USB 并打开终端
通过以下方式运行安装过程而不安装引导加载程序:
sudo ubiquity -b
Run Code Online (Sandbox Code Playgroud)Continue testing安装完成后按。
挂载新安装的文件系统/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系统分区)
通过以下方式加载 eivars:
sudo modprobe efivars
Run Code Online (Sandbox Code Playgroud)重新安装grub-install64 位版本
sudo apt-get install --reinstall grub-efi-amd64
sudo grub-install --no-nvram --root-directory=/mnt
Run Code Online (Sandbox Code Playgroud)将 root 更改为/mnt并更新 grub
sudo chroot /mnt
update-grub
Run Code Online (Sandbox Code Playgroud)移动并重命名已安装的引导加载程序
cd /boot/efi/EFI
cp -R ubuntu/* BOOT/
cd BOOT
cp grubx64.efi bootx64.efi
Run Code Online (Sandbox Code Playgroud)重新启动系统。
可在此处找到更多详细信息:
首先,我强烈建议您提交关于您的问题的错误报告,如此处所述。不能保证这会产生积极的结果,但如果没有错误报告,开发人员就不太可能修复问题。
其次,您说您手动使用以下命令尝试使用固件注册 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变量efibootmgr。man页面上没有提到这个选项,但我相信这是一个有效的选项。
您可能还想查阅我关于 Linux 的 EFI 引导加载程序的页面,尤其是它关于如何安装引导加载程序的子页面。这些将为您提供有关这些操作的“具体细节”如何进行的一些背景知识。您甚至可能想使用 GRUB 2 以外的其他东西作为引导加载程序。
要使用默认文件名启动,您应该将所有内容复制/boot/efi/EFI/ubuntu到/boot/efi/EFI/BOOT并重命名grubx64.efi到bootx64.efi该目录中。或者,您可以使用后备文件名安装其他内容。对此的一个主要警告是,如果计算机已经在启动 Windows(或某些其他操作系统),这可能不起作用。在这种情况下,您可能需要“劫持”Windows 引导加载程序,方法是将其替换为 GRUB 2(或任何您想使用的版本)并将 Windows 引导加载程序移到别处。
| 归档时间: |
|
| 查看次数: |
56953 次 |
| 最近记录: |