Debian

帶有 Windows 8 和 Debian 8 的 HP Pavilion 15 上的 EFI 雙引導問題

  • June 20, 2019

語境

HP Pavilion 15 筆記本,我買的時候預裝了 Windows 8。昨天我對我的硬碟進行了分區,並安裝了一個全新的 Debian 8,一切都很好,這是表格:

root@debian:/# fdisk -l
...
Device          Start        End   Sectors   Size Type
/dev/sda1        2048     821247    819200   400M Windows recovery environ
/dev/sda2      821248    1353727    532480   260M EFI System
/dev/sda3     1353728    1615871    262144   128M Microsoft reserved
/dev/sda4     1615872  731095039 729479168 347,9G Microsoft basic data
/dev/sda5  1425111040 1465147391  40036352  19,1G Microsoft basic data
/dev/sda6   731095040 1419251711 688156672 328,1G Linux filesystem
/dev/sda7  1419251712 1425108991   5857280   2,8G Linux swap
....

問題

當我按下電源按鈕時,它會啟動 Windows 8 而不是 grub,而不會讓我選擇作業系統。


更多數據

我的系統啟動規格:

  • 快速啟動 -> 禁用
  • 安全啟動 -> 禁用
  • 舊版引導 -> 禁用
  • EFI 引導 -> 啟用

所以我無法選擇要啟動的作業系統,因為它會自動啟動 Win 8,但如果我按下 F9 按鈕並進入 BIOS 的“啟動順序”,則會顯示以下內容:

Boot Option Menu:
- OS boot Manager     -> if pressed starts Windows 8
- debian              -> if pressed starts Grub (that's what i want)
- Boot from EFI File  -> it starts the navigation of a folder that let you choose the .efi file
- Notebook Hard Drive -> I don't remember but I think starts Windows 8

所以這裡發生了一些奇怪的事情……看看我的efibootmgr:

root@debian:~# efibootmgr 
BootCurrent: 003D
Timeout: 0 seconds
BootOrder: 0002,3002,0003,2001,2002,2003
Boot0002* Windows Boot Manager
Boot0003* debian
Boot2001* USB Drive (UEFI)
Boot2002* Internal CD/DVD ROM Drive (UEFI)
Boot3002* Internal Hard Disk or Solid State Disk

如果我嘗試使用以下命令更改執行順序: efibootmgr -o 0003,0002

更改將被忽略,Windows 8 仍會在不提供選擇的情況下啟動。

連結中,有人說製造商對/EFI/Windows/Boot之前檢查過的事實進行了硬編碼,/EFI/debian因此這可能是一個問題,因為 efi 總是首先查找 Windows。

所以我將我的/dev/sda2(EFI 系統)掛載到一個/target文件夾以查看發生了什麼,這就是:

root@debian:/target# ls
boot  BOOTSECT.BAK  EFI

root@debian:/target/EFI# ls
Boot  debian  HP  Microsoft

root@debian:/target/EFI# ls debian
grubx64.efi

root@debian:/target/EFI# ls Microsoft
Boot

root@debian:/target/EFI# ls Microsoft/Boot/
BCD          boot.stl         es-ES  ko-KR        qps-ploc    
BCD.LOG      bootx64.efi      et-EE  lt-LT        Resources  
BCD.LOG1     bootx64.efi.grb          lv-LV       ro-RO       
BCD.LOG2                      Fonts  memtest.efi  ru-RU       
bg-BG                         en-US  <otherlanguages>
bkpbootmgfw.efi               
bootmgfw.efi                  
bootmgr.efi                  
BOOTSTAT.DAT              

連結中,有人解決了將其移動並重命名/EFI/debian/grubx64.efi為此/EFI/Microsoft/Boot/bootmgfw.efi

但我害怕:

  • 我可以在此操作後恢復 Windows 嗎?
  • 安全嗎?
  • 有人可以向我解釋一下這個問題嗎?並告訴我解決方案?

謝謝!

我解決了,這裡描述的問題,我按照所有步驟來解決。

見這裡 https://forums.linuxmint.com/viewtopic.php?f=46&t=296423&p=1648791#p1648791

並且那裡有一個指向 Ubuntu 論壇的連結

…“作業系統啟動管理器”經過硬編碼以載入 Microsoft EFI 文件,並且始終在任何其他本地 EFI 文件之前執行。…

引用自:https://unix.stackexchange.com/questions/210810