Partition

更新啟動分區表後無法啟動到 Windows

  • August 21, 2020

我一直看到一些關於我的硬碟驅動器格式化和/或分區的錯誤消息(即文件描述符錯誤、幻數不匹配錯誤),並且在 gdisk 中四處尋找時,我看到 GPT 分區中有錯誤我的 EFI 系統分區。我的 EFI 分區是 500MB,驅動器是 500GB,但 gdisk 說我的 EFI 分區是 800GB。我認為載入備份 GPT 表(通過 gdisk > r > c > w)不會有任何危害,所以我將備份 GPT 表寫為主表,然後重新啟動。

重新啟動後,沒有檢測到作業系統。我從現場 USB 啟動,並重新安裝了 grub。這導致許多“grub-install.real:警告”消息表明存在不正確的嵌套分區“hostdisk//dev/nvme0n1,gpt1,msdos2”。重新啟動後,未檢測到作業系統。

我重新啟動並通過 gparted 執行自動修復/檢查分區(右鍵點擊>檢查)。這導致了一些似乎相關的消息:

FSINFO sector has bad magic number(s):  
  Offset 0: 0x20494645 != expected 0x4161525  
  Offset 484:0x000000000 != expected 0x61417272  
  Offset 510: 0x0000 != expected 0xaa55  
  Auto-correcting it 

在此之後,gdisk 輸出對 GPT 不滿意:

Caution! After loading partitions, the CRC doesn't check out!  
Warning! Main partition table CRC mismatch! Loaded backup partition table  
instead of main partition table!  

Warning! One or more CRCs don't match. You should repair the disk!

Partition table scan:  
 MBR: MBR only  
 BSD: not present  
 APM: not present  
 GPT: damaged  

但是 grub 現在沒有顯示不正確的嵌套分區錯誤。更新 grub 後,我重新啟動到 linux,但似乎無法修復 Windows。

我目前無法訪問任何 Windows 修復磁碟(此外,我的電腦沒有 CD 驅動器),但我確實有 Windows 恢復和映像分區。

背景資訊:具有 Windows 10 和 Linux Mint 雙引導設置的戴爾 XPS 15。

選擇引導修復輸出:

no valid partition table found
"blkid" output: ________________________________________________________________

Device           UUID                                   TYPE       LABEL

/dev/nvme0n1                                                       
/dev/nvme0n1p1   DE6C-05EA                              vfat       ESP
/dev/nvme0n1p2                                                     
/dev/nvme0n1p3   AADCA51FDCA4E6B3                       ntfs       OS
/dev/nvme0n1p4   1422A1A622A18CF4                       ntfs       WINRETOOLS
/dev/nvme0n1p5   02AEA20EAEA1FA75                       ntfs       Image
/dev/nvme0n1p6   9bfef4c0-4af2-4758-adb9-bb1c08256462   ext4       LinuxMint
/dev/nvme0n1p7   2c2ca336-a7eb-429b-b6ed-12b83750ed73   swap       

ls -l /dev/disk/by-id輸出:

total 0
lrwxrwxrwx 1 root root 13 Jul 23 15:22 nvme-PM951_NVMe_SAMSUNG_512GB__S29PNXAG917208 -> ../../nvme0n1
lrwxrwxrwx 1 root root 15 Jul 23 15:22 nvme-PM951_NVMe_SAMSUNG_512GB__S29PNXAG917208-part1 -> ../../nvme0n1p1
lrwxrwxrwx 1 root root 15 Jul 23 15:22 nvme-PM951_NVMe_SAMSUNG_512GB__S29PNXAG917208-part2 -> ../../nvme0n1p2
lrwxrwxrwx 1 root root 15 Jul 23 15:22 nvme-PM951_NVMe_SAMSUNG_512GB__S29PNXAG917208-part3 -> ../../nvme0n1p3
lrwxrwxrwx 1 root root 15 Jul 23 15:23 nvme-PM951_NVMe_SAMSUNG_512GB__S29PNXAG917208-part4 -> ../../nvme0n1p4
lrwxrwxrwx 1 root root 15 Jul 23 15:23 nvme-PM951_NVMe_SAMSUNG_512GB__S29PNXAG917208-part5 -> ../../nvme0n1p5
lrwxrwxrwx 1 root root 15 Jul 23 15:22 nvme-PM951_NVMe_SAMSUNG_512GB__S29PNXAG917208-part6 -> ../../nvme0n1p6
lrwxrwxrwx 1 root root 15 Jul 23 15:22 nvme-PM951_NVMe_SAMSUNG_512GB__S29PNXAG917208-part7 -> ../../nvme0n1p7
lrwxrwxrwx 1 root root 13 Jul 23 15:22 nvme-eui.00253843591b4338 -> ../../nvme0n1
lrwxrwxrwx 1 root root 15 Jul 23 15:22 nvme-eui.00253843591b4338-part1 -> ../../nvme0n1p1
lrwxrwxrwx 1 root root 15 Jul 23 15:22 nvme-eui.00253843591b4338-part2 -> ../../nvme0n1p2
lrwxrwxrwx 1 root root 15 Jul 23 15:22 nvme-eui.00253843591b4338-part3 -> ../../nvme0n1p3
lrwxrwxrwx 1 root root 15 Jul 23 15:23 nvme-eui.00253843591b4338-part4 -> ../../nvme0n1p4
lrwxrwxrwx 1 root root 15 Jul 23 15:23 nvme-eui.00253843591b4338-part5 -> ../../nvme0n1p5
lrwxrwxrwx 1 root root 15 Jul 23 15:22 nvme-eui.00253843591b4338-part6 -> ../../nvme0n1p6
lrwxrwxrwx 1 root root 15 Jul 23 15:22 nvme-eui.00253843591b4338-part7 -> ../../nvme0n1p7

標準錯誤消息:

File descriptor 9 (/proc/3448/mounts) leaked on lvs invocation. Parent PID 26812: bash
File descriptor 63 (pipe:[39653]) leaked on lvs invocation. Parent PID 26812: bash

附加資訊:

引導修復日誌 2017-07-23__15h21:

boot-repair version : 4ppa40
boot-sav version : 4ppa40
glade2script version : 3.2.3~ppa1
boot-sav-extra version :
File descriptor 9 (/proc/3448/mounts) leaked on lvs invocation. Parent PID 5297: /bin/sh
Warning: failed to translate partition name
Warning: failed to translate partition name
boot-repair is executed in installed-session (Linux Mint 18.1 Serena, serena, LinuxMint, x86_64)
CPU op-mode(s):        32-bit, 64-bit
BOOT_IMAGE=/boot/vmlinuz-4.8.0-58-generic root=UUID=9bfef4c0-4af2-4758-adb9-bb1c08256462 ro quiet splash crashkernel=384M-:128M vt.handoff=7
nvme0n1 (nvme0n1) has unknown type. Please report this message to boot.repair@gmail.com
nvme0n1 (nvme0n1) has unknown type. Please report this message to boot.repair@gmail.com
mount: /dev/nvme0n1 is already mounted or /mnt/boot-sav/nvme0n1 busy
mount /dev/nvme0n1 : Error code 32
mount -r /dev/nvme0n1 /mnt/boot-sav/nvme0n1
mount: /dev/nvme0n1 is already mounted or /mnt/boot-sav/nvme0n1 busy
mount -r /dev/nvme0n1 : Error code 32

1 disks with OS, 2 OS : 1 Linux, 0 MacOS, 1 Windows, 0 unknown type OS.

mount: /dev/nvme0n1 is already mounted or /mnt/boot-sav/nvme0n1 busy
mount /dev/nvme0n1 : Error code 32
mount -r /dev/nvme0n1 /mnt/boot-sav/nvme0n1
mount: /dev/nvme0n1 is already mounted or /mnt/boot-sav/nvme0n1 busy
mount -r /dev/nvme0n1 : Error code 32
Windows not detected by os-prober on nvme0n1p3.

更新:解決方案:

啟動 Windows 10 恢復 USB 後,我注意到 EFI 分區被diskpart.

重新啟動到 ubuntu 後,我還注意到 windows 保留分區 2 似乎有問題。我從分區中複製了 EFI 文件,將驅動器格式化為 ext4,然後返回到 fat32,然後重新復製文件。這修復了保留分區 2 上的錯誤標誌,並且 Windows 在重新啟動時完美啟動。

我認為您首先閱讀了這個論壇

  1. 您可以使用帶有 EFI 的 Windows 10 Installation Pendrive 恢復 Windows 啟動。
  2. 然後,您只能在 Windows 上啟動。
  3. 在具有管理權限的 Windows 中鍵入以下命令。
bcdedit /set {bootmgr} path \EFI\ubuntu\grubx64.efi

您必須修改它以適合您的系統,因此在嘗試恢復 Windows 引導之前,您必須在紙上寫下您的 EFI 安裝位置。

  1. 然後,您可以使用 Linux mint 啟動。
  2. (它可能是可選的)將 EFI 引導位置移動到其他位置。請參閱本文以了解與您的問題相關的內容。
grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=mint

(但是,上面的文章說 Mint 和 Ubuntu 雙啟動之間的崩潰)

文章說;

完成安裝後,如果您碰巧禁用了 Windows 8 的啟動功能並且它只能啟動到 Ubuntu,請不要擔心。在 Ubuntu 中啟動後,通過打開終端並鍵入以下內容在 Ubuntu 中安裝 Boot-Repair:sudo add-apt-repository ppa:yannubuntu/boot-repair

sudo apt-get update sudo apt-get install boot-repair boot-repair Boot Repair 會提到我們有一些 GRUB 錯誤,我們有一個 EFI 系統並且 Ubuntu 很糟糕。由於 Ubuntu 搖擺不定(如果 Ubuntu 不搖擺,它就不起作用!^^),只需點擊應用,啟動修復即可修復所有問題。現在重新啟動,您應該可以並排看到 Windows 8 和 Ubuntu。對於罕見的引導問題、分區或在較新主機板上使用舊硬碟驅動器的情況,您的解決方案可能是檢查 FixParts,它可以解決未對齊的分區和其他分區類型問題。

第二條說;

不幸的是,這仍然不能解決 Ubuntu/Mint 案例中的問題,因為正如我上面提到的,似乎有一些硬編碼的東西指向名稱“ubuntu”。實際發生的是它似乎可以工作,這意味著創建了新的 EFI 引導目錄,並且看起來它包含正確的文件……事實上,當您將引導配置更改為指向這個新目錄時,系統看起來像它的作品。

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