安装 Linux 后如何恢复 Windows 10 MBR?

WoJ*_*WoJ 4 windows boot grub multi-boot windows-10

我初始安装了 Windows 10

然后我在双启动中安装了 Linux,并grub管理启动选项(Ubuntu、Windows 10)。

一切都按预期工作。

有没有办法恢复 Windows 启动管理器,以便它用于决定启动选择(并默认启动 Windows)?然后我会考虑扩展它以启动 Ubuntu。

注意:我不是想简单地将 Windows 10 设置为启动默认值,grub我希望最终grub与 Windows 启动管理器交换。

Cli*_*ong 5

你需要先了解一些东西。默认情况下,Windows 10 不使用主引导扇区。现代 Linux 发行版也没有。在任何正常情况下,Grub 2 引导加载程序都不会覆盖 Windows 10 引导加载程序。它们可以在 EFI 分区上完美共存。在这种情况下,由您的 BIOS 引导顺序决定启动哪个引导加载程序。

恐怕 Keltari 的回答假定您使用的是 MBR 分区表......这不太可能。公平地说,你的问题似乎做出了同样的假设。因此,在做任何其他事情之前,我建议您检查 BIOS 中的启动选项,看看 Windows 10 是否仍然没有列为选项。如果没有……那么是的……坏事发生了。

在某些情况下,对 Windows 10 引导加载程序的访问会被切断。

  1. Window 10 以 MBR 模式安装。然后安装了Linux。
    • 如果 Windows 10 是由制造商在您的计算机上安装的,则情况并非如此。
    • 这只会以两种方式合理地发生......
      1. 您安装 Windows 10 作为对先前 Windows 安装的升级,而该 Windows 安装又安装在至少可追溯到Windows Vista的先前 Windows 安装之上。如果你已经这样做了,你真的需要重新安装 Windows 10。
      2. 硬盘驱动器配置为 MBR/DOS 样式分区(而不是 GPT),并且您选择在安装 Windows 10 时不擦除驱动器并重新启动。如果将硬盘从旧计算机迁移到当前计算机,通常会发生这种情况。
  2. 您在 Linux 安装过程中删除/格式化了 EFI 分区。这将是一个错误。这样做没有任何好处,而且您会丢失存储在那里的现有引导加载程序。
  3. 分区方案在Linux 安装过程中从GPT 转换为MBR。在这种情况下,您的 Windows 10 引导加载程序仍然位于您将其留在 EFI 分区上的位置。

在#1 或#2 的情况下:

您需要从 Windows 10 安装盘恢复引导加载程序。如果您的计算机没有附带 Windows 10 安装盘,则您需要购买一张。可以从 Microsoft 网站合法下载 Windows 10 ISO 。然后,您可以使用 Linux 中的刻录实用程序将 ISO 映像应用到空白 DVD-R。如果您的计算机在保修期内,您可以从制造商处获得 Windows 10 安装 DVD...但请确保您清楚您想要的是 Windows 10 安装盘而不是系统恢复盘。

从 Windows 10 DVD 启动(通过“传统”启动或“UEFI”启动...分别用于 MBR 分区表或 GTP 分区表)。当您进入安装欢迎屏幕时,说Install Now继续并忽略该Install Now按钮并单击Repair your computer

  • Choose An Option菜单中选择Troubleshoot
  • Troubleshoot菜单中选择Advanced
  • Advanced菜单中选择Startup Repair

然后可能会或可能不会要求您输入用户名和密码来登录。如果它确实出现,这是一件好事……这意味着 Windows 修复肯定找到了您的 Windows 10 安装。如果它没有出现,那就没什么大不了的。无论哪种方式,它都应该开始尝试各种自动诊断和修复程序。在完美的世界中,这将恢复 Windows 10 引导加载程序。

如果您的系统使用 MBR,那么它将替换 Grub 2 引导加载程序。如果您的系统仍在使用 EFI 引导,它不会删除 Grub 2 引导加载程序……它会在它旁边安装。在后一种情况下,您可能仍需要输入 BIOS 并更改引导顺序,以便您的 BIOS 启动 Windows 10 引导加载程序。

如果这不起作用,那么解决方案总是会涉及更多。您可以将计算机交给专业技术人员,也可以将其擦除并从头开始重新安装 Windows 10。

在#3的情况下:

在转换为 GPT 之前,您需要特别确定这是发生了什么。您还需要先备份任何重要数据,因为这是名为Data Loss and Corruption的邪恶怪物的领域。花点时间...只需按两次错误的按键即可清除您的数据

首先,您需要确定磁盘驱动器的设备名称。找到并打开您发行版的终端应用程序。它可能被称为 xTerm 或 gTerm 之类的东西。进入终端提示符后,键入lsblk. 这将显示如下内容:

NAME   MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sda      8:0    0  28.3G  0 disk
??sda1   8:1    0   953M  0 part /boot
??sda2   8:2    0     1K  0 part
??sda3   8:3    0  23.4G  0 part /
??sda5   8:5    0     4G  0 part [SWAP]
sdb      8:16   0 149.1G  0 disk
??sdb1   8:17   0 149.1G  0 part /mnt/storage
Run Code Online (Sandbox Code Playgroud)

找到/和/或的挂载点/boot。挂载点对应于分区(或其他某种形式的磁盘资源逻辑划分)。如果您查看每个挂载点的名称标题,您将看到该逻辑磁盘的device-name. 如果您按照上面列出的连接线使用 Type,disk您会找到device-name物理磁盘的 。在device-name对物理磁盘是我们需要的。不管它是什么,或者是否看起来像上面的那个,只要记住它。

现在,在相同的终端类型上gdisk/dev/device-name,您将其替换device-name为我们使用lsblk命令找到的终端类型并/dev/在其之前键入。鉴于上面的示例,您将键入gdisk /dev/sda. 如果您收到有关权限或访问的错误,则需要以超级用户(可能是“root”)身份运行该命令。如何做到这一点也因发行版而异……但您可以尝试将sudosu放在gdisk命令前面。喜欢sudo gdisk /dev/sda。从这里开始,我假设您使用sudo但只是替换适合您的发行版的工具。

运行 gdisk 后,您应该看到:

GPT fdisk (gdisk) version 0.6.14

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


***************************************************************
Found invalid GPT and valid MBR; converting MBR to GPT format.
THIS OPERATION IS POTENTIALLY DESTRUCTIVE! Exit by typing 'q' if
you don't want to convert your MBR partitions to GPT format!
***************************************************************


Command (? for help): 
Run Code Online (Sandbox Code Playgroud)

这很重要。如果您没有看到有关无效 GTP 和有效 MBR 的消息,请在此处停止。这不是给你的指南。重新考虑#1 和#2。

如果您确实看到此消息并且您确定 Windows 10 是在 UEFI 模式下安装的,请按p键,然后按Enter打印出分区表。您正在寻找类型为 的分区EFI System

如果没有,那么......那很糟糕,事情变得不那么简单了。您需要调整分区大小以为新的 EFI 分区腾出空间,然后创建 EFI 分区,对其进行格式化Fat32,然后将分区类型设置为EFI System。而且那么你需要按照上一节为好。我不会教你使用 gdisk 之类的东西来调整分区大小……在最好的时候,这很可怕,我想成为键盘上的那个。但是,您可以使用 gui 工具gparted轻松且相对安全地完成它。

无论哪种方式,首先您需要将分区表转换回 GPT。按w键,然后按Enter键将更改写入硬盘驱动器。

这是不归路。您应该看到以下内容:

Command (? for help): w

Final checks complete. About to write GPT data. THIS WILL OVERWRITE EXISTING
PARTITIONS!!

Do you want to proceed, possibly destroying your data? (Y/N): 
Run Code Online (Sandbox Code Playgroud)

再按yEnter重新写入分区表。您的数据不应受到损害。如果您之前看到过 EFI 分区,此时您应该可以简单地重新启动到 Windows。如果没有,您还有更多工作要做。