在传统双启动中切换引导加载程序顺序 MBR:在 VeraCrypt 之前切换 GRUB

在传统双启动中切换引导加载程序顺序 MBR:在 VeraCrypt 之前切换 GRUB

如何在 BIOS 系统上将 GRUB 的顺序切换为 VeraCrypt 之前,以便 Ubuntu 可以再次使用全盘加密访问?


执行了下列操作:

  1. 在单个磁盘上安装 Windows 10 Pro N
  2. 在同一磁盘上安装双启动 Ubuntu 20.04,并安装 GRUB 引导加载程序
  3. 在 Windows 上安装 VeraCrypt 并执行完整的系统磁盘加密
    • 全盘加密会安装 VeraCrypt 引导加载程序,它位于主引导记录 (MBR) 上的 GRUB 引导加载程序前面,这意味着 Ubuntu 的 GRUB 引导加载程序不再可用/被跳过。在 VeraCrypt 引导加载程序中,可以执行以下操作之一:
      • ESC,但不会转到 GRUB,这表明 Windows 10 安装已损坏,因为它已加密
      • 正确输入密码,直接跳过 GRUB 引导加载程序,成功加载 Windows 10,并导致 Ubuntu 20.04 不再可访问/启动,因为 GRUB 引导加载程序被跳过

  4. 尝试切换引导加载程序,以便 GRUB 加载程序位于 Veracrpyt 之上bcdedit
    BcdEdit /enum
    
      Windows Boot Manager
      --------------------
      identifier              {bootmgr}
      device                  partition=\Device\HarddiskVolume1
      description             Windows Boot Manager
      locale                  en-US
      inherit                 {globalsettings}
      default                 {current}
      resumeobject            {f1c50cdb-e01f-11ea-8662-d17332f8934a}
      displayorder            {current}
      toolsdisplayorder       {memdiag}
      timeout                 30
    
      Windows Boot Loader
      -------------------
      identifier              {current}
      device                  partition=C:
      path                    \Windows\system32\winload.exe
      description             Windows 10
      locale                  en-US
      inherit                 {bootloadersettings}
      recoverysequence        {f1c50cdd-e01f-11ea-8662-d17332f8934a}
      displaymessageoverride  Recovery
      recoveryenabled         Yes
      allowedinmemorysettings 0x15000075
      osdevice                partition=C:
      systemroot              \Windows
      resumeobject            {f1c50cdb-e01f-11ea-8662-d17332f8934a}
      nx                      OptIn
      bootmenupolicy          Standard
    
    • 我还没有确定 GRUB 引导程序是否在这里,因为我认为currentVeraCrypt 引导程序指向 Windows 引导程序
      resumeobject {f1c50cdb-e01f-11ea-8662-d17332f8934a}
      
      我想如果我能找到 GRUB 引导加载程序的对象 ID,我就可以从中引用它resumeobject,或者创建一个新的 GRUB 引导加载程序条目添加到前面current,但尚未确定如何使用bcdedit来创建新条目,将 GRUB 引导加载程序移到前面。

答案1

尝试从 Linux(而不是 Windows)端解决问题。这通常更直接。

  1. 启动 Ubuntu。如果您的引导加载程序出现问题,您可以使用实时 CD 上的引导加载程序。需要具备一些 GRUB 命令的基础知识,但您始终可以启动实时 CD 引导加载程序并使用它来启动您的 HDD Linux 安装。
  2. 备份 MBR 并将其存储在文件系统中易于访问的某个位置。确保将其存储在未加密的分区中……我会使用进行备份。给备份文件起一个合理的名字。类似这样的veracrypt.mbr命令
  3. 修复您的 GRUB。这很容易从您的 Linux 安装内部完成。互联网上有多篇文章解释了如何修复。此时,GRUB 第 1 阶段将写入 MBR。
  4. veracrypt.mbr手动将第 2 步中创建的chainload 条目添加到 grub.cfg 中

完成这些步骤后你将得到以下结果:

  • MBR 将包含 GRUB 第 1 阶段。VeraCrypt 中的恶意内容将被清除
  • 你将能够从 GRUB 启动你的 Linux
  • GRUB 将包含一个条目,允许您链式加载 VeraCrypt

如果您想稳妥行事,那么在继续执行步骤 3(将 MBR 中的 VeraCrypt 引导加载程序替换为 GRUB 第 1 阶段)之前,您可以尝试在 Live CD 上从 GRUB 测试您的设置,看看它是否有效。只需启动 Live CD 引导加载程序,进入命令模式,然后尝试从那里链式加载您的 veracrypt.mbr。记下对您有效的命令序列。然后继续执行步骤 3...

相关内容