Systemd Bootloader 未顯示(雙啟動 Windows10 / Pop!_OS)
我最近用 (Pop!_OS 20.04/Win10) 替換了我的雙啟動 (Ubuntu/Win10)。現在,當我啟動電腦時,沒有顯示啟動菜單,而是直接啟動到 Windows。這是我到目前為止所嘗試的:
我按照這裡的描述修復了 systemd-bootloader ,但是,這並沒有解決我的問題。
我插入了一個 Ubuntu Livestick(安裝了 GRUB)進入 grub 菜單。從那裡我不啟動 ubuntu,而是進入 GRUB 命令行並將引導載入程序設置為 systemd,如下所示:
chainloader (hd2,1)/efi/systemd/systemd-bootx64.efi
boot
這讓我可以啟動到 Pop!_OS(但也不顯示菜單,所以我無法從那裡啟動到 Windows)。它還表明,systemd 引導載入程序通常正在工作然後我認為問題可能出在 Windows 上,所以我啟動到 Windows,然後使用
bcdedit
. 我的 ubuntu 安裝遇到了類似的問題,我可以通過將 grub efi 文件的路徑定義為bcdedit /set {bootmgr} path \EFI\ubuntu\grubx64.efi
. 事實證明,那裡確實存在問題。
- 首先,有一條底線告訴我“指定了不存在的設備”。
- 其次,似乎為
{bootmgr}
. 目前,設備定義為“partition=C:”。但是,我要查找的 EFI 文件不在 C: 分區上,而是在 Disk1Partition1 上。問題是,我不知道這個分區叫什麼,即我需要如何在 bcdedit 條目中定義它,以便在啟動時辨識它。這是輸出bcdedit
C:\WINDOWS\system32>bcdedit Windows Boot Manager -------------------- identifier {bootmgr} device partition=\Device\HarddiskVolume2 path \EFI\systemd\systemd-bootx64.efi description Windows Boot Manager locale en-GB inherit {globalsettings} default {current} resumeobject {c9199aab-b651-11ea-8b88-3ce1a1c4ba83} displayorder {current} toolsdisplayorder {memdiag} timeout 30 Windows Boot Loader ------------------- identifier {current} device partition=C: path \WINDOWS\system32\winload.efi description Windows 10 locale en-GB inherit {bootloadersettings} recoverysequence {c9199aae-b651-11ea-8b88-3ce1a1c4ba83} displaymessageoverride Recovery recoveryenabled Yes isolatedcontext Yes allowedinmemorysettings 0x15000075 osdevice partition=C: systemroot \WINDOWS resumeobject {c9199aab-b651-11ea-8b88-3ce1a1c4ba83} nx OptIn bootmenupolicy Standard hypervisorlaunchtype Auto A device which does not exist was specified.
這是Windows的磁碟管理視窗,它顯示了我的配置。systemd-efi 文件位於 Disk1 Partition1 上。
另外,這裡有一些關於我的電腦的資訊
有沒有人知道如何解決這個問題?
提前致謝 :)
我設法在評論的幫助下解決了這個問題。謝謝你們!為了完整起見,我快速說明了我為解決此問題而採取的所有步驟:
Quickfix - 如果您在沒有解決實際問題的情況下需要快速啟動
- 插入帶有正常引導載入程序的 livestick(我使用 Ubuntu 20.04 和 GRUB)
- 一旦 livestick 中的 GRUB 啟動,按c或esc中斷引導載入過程。
- 現在,定義您要使用的引導載入程序(對我來說,它是 systemd 引導載入程序,位於我的硬碟 2 分區 1)
chainloader (hd2,1)/efi/systemd/systemd-bootx64.efi
boot
這應該可以讓您使用定義的引導載入程序進行引導。
解決問題
- 我首先根據本教程修復了 systemd 引導載入程序。(你可能需要使用上面的 quickfix 來啟動你的 linux 系統)
- 由於這並沒有解決問題,我啟動到 Windows,執行(以管理員身份)命令提示符。
- 我按照本指南安裝了我的 EFI 分區(我將它安裝在 V:)。
- 然後,我將 EFI 文件添加為 {bootmgr} 路徑,並將掛載的 EFI 分區作為設備添加到我的 bcdedit {bootmgr} 條目中
bcdedit /set {bootmgr} path \EFI\systemd\systemd-bootx64.efi
bcdedit /set {bootmgr} device partition=V:
- 然後我重新啟動(它再次直接啟動到 Windows)並看到,{bootmgr} 的 bcdedit 設備條目從partition=V:更改為partition=\Device\HarddiskVolume2
- 我再次重新啟動,它工作。所以也許我可以直接將設備設置為partition=\Device\HarddiskVolume2 …但是,這對我有用。