自从我尝试用 Xubuntu 14.04 替换预装的 Windows 7 后,我的笔记本电脑 (HP ProBook 450 G2) 出现了启动问题。BIOS 使用 UEFI 启动模式(但尝试“Legacy”启动模式并没有使情况有所改善)。
无论我怎么尝试,我都无法让它自己找到根分区的路径。它只是说:
“未找到 BootDevice 请在硬盘上安装操作系统。硬盘 - (3F0)”...
但是,我的 Xubuntu 根目录已正确安装,因为如果我每次(启动时)都通过 BIOS 启动选项正确导航,我就能设法在其上启动:
我选择“从 EFI 文件启动”,然后
“Acpi(PNP0A03,0)/Pci(1F|2)/Sata(端口 0)/HD(Part1,Sig81D20AD3-C00E-47C2-ACEC-BC1F51”
,然后"EFI"
,"ubuntu"
然后"grubx64.efi"
,然后它设法到达 grub,最后成功启动 Xubuntu。选择 shimx 也会导致在我的 xubuntu 根分区上启动。但是重新启动并让它自行运行会失败,并显示上述消息。
我听说该"secure boot"
选项必须被禁用,而且似乎确实如此。
我的分区组织如下:
/dev/sda1 fat32 121MB 启动
/dev/sda2 ext4 465GB 根
/dev/sda3 linux-交换 7MB
我尝试使用启动修复实用程序重新安装 grub,但没有任何改变。
顺便说一下,这里是来自 boot-repair 的启动信息摘要:http://paste.ubuntu.com/9595800/
启动修复总是会说"Please do not forget to make your BIOS boot on sda1/EFI/ubuntu/shimx64.efi file!"
,但我不知道还能做什么来让它启动。
我认为我的 MBR 可能已损坏,因此我使用以下 dd 命令将其删除:
dd if=/dev/zero of=/dev/sda bs=446 count=1
然后尝试用 boot-repair 再次修复启动,但是结果还是一样......
我甚至尝试修改 EFI 文件并创建新的启动项,但无济于事。之后,以下是使用 efibootmgr 的状态:
~$ sudo efibootmgr -v
BootCurrent: 0000
Timeout: 0 seconds
BootOrder: 0000
Boot0000* Notebook Hard Drive BIOS(2,0,00).......................................................................
Boot0001* Notebook Hard Drive BIOS(2,0,00).......................................................................
因此我再次尝试在 EFI 文件中创建一个新的启动条目:
~$ sudo efibootmgr -v -c -w -L ubuntu_14_04 -l \EFI\ubuntu\shimx64.efi
BootCurrent: 0000
Timeout: 0 seconds
BootOrder: 0002,0000
Boot0000* Notebook Hard Drive BIOS(2,0,00).......................................................................
Boot0001* Notebook Hard Drive BIOS(2,0,00).......................................................................
Boot0002* ubuntu_14_04 HD(1,800,100000,81d20ad3-c00e-47c2-acec-bc1f51dd12d1)File(EFIubuntushimx64.efi)
...并更改启动顺序,以在刚刚创建的新条目上启动:
~$ sudo efibootmgr -v -o 2,1,0
BootCurrent: 0000
Timeout: 0 seconds
BootOrder: 0002,0001,0000
Boot0000* Notebook Hard Drive BIOS(2,0,00).......................................................................
Boot0001* Notebook Hard Drive BIOS(2,0,00).......................................................................
Boot0002* ubuntu_14_04 HD(1,800,100000,81d20ad3-c00e-47c2-acec-bc1f51dd12d1)File(EFIubuntushimx64.efi)
但重新启动后(当然,仍然需要浏览 EFI 启动选项以使其工作):
~$ sudo efibootmgr -v
BootCurrent: 0000
Timeout: 0 seconds
BootOrder: 0000
Boot0000* Notebook Hard Drive BIOS(2,0,00).......................................................................
Boot0001* Notebook Hard Drive BIOS(2,0,00).......................................................................
Boot0002* ubuntu_14_04 HD(1,800,100000,81d20ad3-c00e-47c2-acec-bc1f51dd12d1)File(EFIubuntushimx64.efi)
这就如同我丢失了我所设定的订单一样。
有人有什么想法吗?
答案1
如果不将启动项添加到 Bootloader 中,则很难启动 Ubuntu。但由于您可以手动启动 Ubuntu,因此您可以使用另一个启动加载程序 rEFInd。如何在 Ubuntu 中安装 rEFInd:
sudo apt-add-repository ppa:rodsmith/refind
sudo apt-get update
sudo apt-get install refind
更多信息请点击这里:http://www.rodsbooks.com/refind/
答案2
这对我有用 HP UEFI 无法自动启动 Ubuntu。
我在 bios 中添加了自定义启动值 (EFI\ubuntu\grubx64.efi),现在它会自动启动到 ubuntu。
答案3
您的命令中犯了一个小错误:
sudo efibootmgr -v -c -w -L ubuntu_14_04 -l \EFI\ubuntu\shimx64.efi
因为斜杠是 bash 中的元字符,所以传递的实际值是:EFIubuntushimx64.efi
您应该将路径放在引号中或使用双斜杠,以下方法对我有用:
sudo efibootmgr -c -l "\EFI\ubuntu\shimx64.efi"
答案4
您是否尝试过在 tty 或终端中输入以下内容:
sudo apt-get purge -y --force-yes shim-signed-efi grub* shime-signed-generic
sudo apt-get install -y --force-yes shim-signed-efi shim-signed-amd64 shim-signed-generic
然后在 tty 或终端中输入以下内容:
sudo apt-get update
sudo apt-get upgrade
这样也许能很好地发挥作用。