Solus/Windows 10 雙啟動停止工作,GRUB 不會自動修復
我有一個系統設置,可以使用 Solus Linux 雙啟動 Windows 10;但是,在我的一個輔助驅動器出現問題後(最終將其刪除,Windows 在沒有它的情況下執行良好),嘗試在 GRUB 中啟動 Windows 產生了一個我不記得的錯誤,我不得不通過終端更新 Solus讓它正確啟動(如果我沒記錯的話)。現在,Solus 啟動得很好,但是 Windows 根本沒有出現在 GRUB 中,在研究和嘗試解決方案幾個小時後,我感覺就像把頭撞在磚牆上一樣。我見過推薦並嘗試過但不起作用的東西:
- **嘗試通過執行
os-prober
和自動修復它update-grub
。**起初,我收到一條錯誤消息WARNING: Failed to connect to lvmetad. Falling back to device scanning.
。一旦我通過重新啟動 lvmetad 服務解決了這個問題,它什麼也不會輸出,GRUB 會說它更新了它的配置,但仍然沒有 Windows。- **嘗試手動添加 Windows 10 啟動項。**主要遵循本指南,我努力尋找
fs-uuid
但最終設法得到它。不過,我始終無法hints_string
正常工作,總是收到錯誤消息grub-probe: warning: unknown device type nvme0n1.
。此外,我在我的 Windows 安裝中找不到/EFI/Microsoft/Boot/bootmgfw.efi
我應該擁有的,而是在我嘗試訪問它不存在的其他位置時找到bootmgfw.efi
位於並收到錯誤。/Windows/Boot/EFI/bootmgfw.efi
儘管有這些障礙,我還是繼續努力並將以下內容作為手動條目添加到 中/etc/grub.d/40_custom
,但結果error: invalid signature
令人失望。# Microsoft Windows 10 menuentry "Windows 10" { insmod part_gpt insmod ntfs insmod search_fs_uuid insmod chain search --no-floppy --fs-uuid --set=root 2E6E49286E48E9E3 chainloader /Windows/Boot/EFI/bootmgfw.efi }
- **嘗試從可啟動的 Windows 10 USB 執行啟動修復。**按照這個建議的答案,我啟動到我的 Windows 10 安裝程序 USB,轉到“修復您的電腦”,選擇“啟動修復。”,並被告知 Windows 無法找出問題所在,只是提示“關閉” ”。
在這一點上,我已經筋疲力盡了。我覺得我在網上找到的東西繞著圈子跑,我真的想不出還有什麼可以起作用的。我不是 Linux 專家。我在終端的東西上有點像樣,但我不太了解這些東西是如何工作的,試圖自己從零開始修復它。儘管 Solus 使用起來很可愛,但它仍然有我遇到的一些問題(儘管這些與這裡的大問題無關),我仍然非常希望擁有一台能夠執行 Windows 的強大台式電腦所以僅僅放棄我的 Windows 分區並不是我想要接受的。任何事情都將不勝感激,非常感謝您。
作為參考,如果它有幫助,這是
fdisk -l
與我的引導驅動器相關的輸出:Disk /dev/nvme0n1: 476.94 GiB, 512110190592 bytes, 1000215216 sectors Disk model: INTEL SSDPEKNW512G8 Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disklabel type: dos Disk identifier: 0x313ff715 Device Boot Start End Sectors Size Id Type /dev/nvme0n1p1 2048 499578836 499576789 238.2G 7 HPFS/NTFS/exFAT /dev/nvme0n1p2 999153664 1000210431 1056768 516M 27 Hidden NTFS WinRE /dev/nvme0n1p3 499578880 957210623 457631744 218.2G 83 Linux /dev/nvme0n1p4 957210624 999153663 41943040 20G 82 Linux swap / Solari Partition table entries are not in disk order.
此外,我很確定 Windows 會根據我在
setupact.log
按照本指南找到它後找到的輸出以傳統模式啟動。
您遵循的指南適用於 UEFI 系統。Windows 作業系統將引導方法的選擇與分區系統的選擇聯繫起來,因此,您的磁碟是 MBR 樣式的分區(
Disklabel type: dos
在您的fdisk -l
輸出中表示)意味著您的 Windows 將以舊版 BIOS 樣式引導。這基本上意味著您必須在
/etc/grub.d/40_custom
條目中修復三件事:
- 替換
insmod part_gpt
為insmod part_msdos
。- 如果該
search
行上的 UUID 指的是/dev/nvme0n1p1
分區,那不是 Windows 引導載入程序所在的位置。現代 Windows 將其放入具有分區 ID 的“系統”分區中27
- 在您的情況下,它是/dev/nvme0n1p2
. 找出它的 UUID(用lsblk -o +UUID
orblkid
),然後把它放在search
行而不是目前的行上。- 替換
chainloader /Windows/Boot/EFI/bootmgfw.efi
為chainloader +1
。(這意味著:載入由上search
一行選擇的分區的第一個塊,並執行它。)進行這些更改後,
update-grub
以 root 身份執行,然後再次嘗試引導 Windows。