当 TrueCrypt 加密的 Windows 7 和 Ubuntu 11.10 分别安装在不同的物理驱动器上时,如何双启动它们?

当 TrueCrypt 加密的 Windows 7 和 Ubuntu 11.10 分别安装在不同的物理驱动器上时,如何双启动它们?

当 TrueCrypt 加密的 Windows 7 和 Ubuntu 11.10 分别安装在不同的物理驱动器上时,如何双启动它们?

我有两个硬盘。hd0 安装了使用 TrueCrypt 加密的 Windows 7 和 TrueCrypt 引导加载程序。hd1 安装了 Ubuntu 11.10 和 grub2 引导加载程序。

的输出fdisk -l如下:

  Device Boot      Start         End      Blocks   Id  System   
/dev/sda1   *        2048      206847      102400    7  HPFS/NTFS/exFAT
/dev/sda2          206848   976771071   488282112    7  HPFS/NTFS/exFAT

  Device Boot      Start         End      Blocks   Id  System
/dev/sdb1   *        2048   968517631   484257792   83  Linux
/dev/sdb2       968519678   976771071     4125697    5  Extended
/dev/sdb5       968519680   976771071     4125696   82  Linux swap / Solaris

我可以通过更改 BIOS 中的启动顺序成功启动任一操作系统,但不想重复执行此操作。我的选择是:

  • 将 TrueCrypt 引导加载程序添加到 grub2 配置并使用 grub2 链式加载它。
  • 启动到 TrueCrypt 引导加载程序,当按 Esc 键退出密码输入时,启动到 grub2。

我对选项 1 感到困惑,因为当按下退出键时,TrueCrypt 找不到其他可启动分区。据我了解,它应该搜索其他可启动磁盘。

我也对选项 2 感到困难,并且里面有以下内容/etc/grub.d/40_custom(然后运行update-grub2)...

menuentry "Windows 7" {
set root=(hd0,1)
chainloader +1
}

(我也尝试root=(hd0,0)root=(hd0,2)

... 我收到没有此分区的错误。我还阅读了各种资料,这些资料表明,如果不在启动 Windows 之前安装并启动 TrueCrypt 救援磁盘 ISO,则无法使用 grub2 执行此操作。这有必要吗?

我究竟做错了什么?

答案1

我可以帮你找到一个解决方法,但这很棘手,所以一定要理解它。

第一:BackUP all 第二:它需要两个物理磁盘,只有一个,我没有用到

进入棘手的部分,Boot secuence命令过程:

  • BIOS 将从一个 HDD 启动(通常是第一个)
  • 因此将 GRUB2 引导程序放在那里
  • 这样的 GRUB 将允许您从第一个磁盘上的分区启动或从第二个磁盘启动(这是棘手的部分)
  • 如果要启动 Linux,只需从同一磁盘上的另一个分区启动即可
  • 如果要启动 TrueCrypt Bootloader,只需告诉它从第二个磁盘启动,而不是从分区启动

那么,如何存档呢?很简单,按照以下步骤操作:

  • 仅将一个空白硬盘放入电脑
  • 配置 BIOS 以从其启动(仅限此时)
  • 安装 Windows 和 TrueCrypt 到它上面
  • 告诉 TrueCrypt 加密全部(仅存在一个 HDD)
  • 重启,测试 Windows 启动
  • 正确关闭电源
  • 添加第二个磁盘
  • 在第二个硬盘上创建一些分区
  • 一个用于 /boot(GRUB2 将存放在此)
  • 其余部分则按照您的意愿用于 Ubuntu /、SWAP 等...
  • 配置 GRUB2 以启动 Ubuntu 并链式加载整个第二块硬盘(注意不要告诉任何分区,只告诉整个硬盘)
  • 重启
  • 棘手:告诉 BIOS 从第二个硬盘启动(正如你所说,它让你)从现在开始永远
  • 测试启动是否运行 GRUB2
  • 测试 GRUB2 链是否正确加载第一个 HDD 引导加载程序(TrueCrypt 加载程序)但不要输入密码短语也不要让 Windows 启动,仅在要求输入密码时重新启动。
  • 如果未完成,请重新启动...并测试 GRUB2 Linux 选项...由于尚未安装 Ubuntu,因此无法启动,但不会加载 TrueCrypt,因此您会看到它有效
  • 安装 Linux 时要特别小心...不要让它更改任何分区表...只需使用现有分区将其安装在第二个磁盘上...当要求引导加载程序时,告诉它将 Grub 或 Lilo 等安装到 Linux 分区上,而不是 HDD MBR 上。

通过这个你将得到这个方案:

  • HDD0 - 带有 TrueCrypt 的 MBR,其余用于 Windows
  • HDD1 - 带有 GRUB2 的 MBR 和 /boot 分区,还有一个 /(您的 Ubuntu)分区,里面将有另一个 Grub、Lilo 或 Grub2 加载程序到 /boot,以及您想要的额外分区

诀窍是:

  • 告诉 TrueTrypt 进行加密,因为他知道一个带有自己的引导加载程序的完整硬盘。
  • 从另一个不同的 HDD 启动 GRUB2(BIOS 需要能够从第二个 HDD 启动)

因此在启动时会发生以下情况:

  • BIOS 读取 CMOS 上的配置
  • BIOS 请参阅从第二块硬盘启动
  • BIOS 读取第二个硬盘 MBR
  • GRUB2 已加载
  • GRUB2 显示菜单:启动 Windows/启动 Ubuntu
  • 如果你选择 Ubuntu,那么 GRUB2 将在 Ubuntu 根分区内加载另一个 Grub、lilo 等,其他引导加载程序将加载你的 Linux Ubuntu
  • 如果你选择 Windows,那么 GRUB2 将链式加载到第一个 HDD,就像 BIOS 从第一个 HDD 启动一样

这样:

  • TrueCrypt 对第二个启动磁盘一无所知,不依赖它
  • GRUB2 和 Linux 不会覆盖/触碰第一个磁盘上的任何内容
  • BIOS 将从第二块硬盘启动

希望足够清楚。

归档时需要注意的事项:

  • 首先,在实际物理机上执行之前,先用 VirtualBOX 进行一些测试,以便熟悉该过程
  • 其次,在纸上记录你正在遵循的步骤,这样就不会忘记任何事情

现在,我必须说无需打开电脑就可以做到这一点...两个磁盘始终保持连接状态。

想象一下:

  • 没有分区的 HDD0
  • 没有分区的 HDD1
  • 仅以正常方式在 HDD0 上安装 Windows,但不对 HDD1 进行分区
  • 安装 TrueCrypt 并指示加密整个 HDD0,它不会对 HDD1 执行任何操作
  • 测试一切正常
  • 从 LiveCD(例如 SystemRescueCD)启动,在 HDD1 上创建分区
  • 确保为 GRUB2 创建专用的 /boot 分区,与 Linux 无关,使用 512MB 空间,您还可以将 SystemRescueCD.iso 放在其中,并将 GRUB2 配置为从 iso 文件循环引导加载(有关详细信息,请参阅 SystemRescueCD 网站)
  • 将 GRUB2 安装到 HDD1 MBR 和 HDD1 /boot 分区上
  • 配置该 GRUB2 的 grub.cfg 以从 HDD1 上的 Linux 根目录启动,并链式加载到 HDD0(而不是 HDD0 上的任何分区)
  • 测试 GRUB2 是否正确启动所有选项,只需测试链加载是否正确...启动 Windows 时,TrueCrypt 将要求输入密码,只需重新启动,不要浪费时间启动 Windows 本身
  • 在 HDD1 根分区上安装 Ubuntu,并告诉它在 HDD1 根分区上安装自己的 grub,你的主 Linux Ubuntu 文件就放在那里,这样它根本不会触碰 HDD1 /boot 分区

这很棘手!!!

想法:使用另一种媒介来做实际的启动菜单,您可以在其中选择要启动的内容。

就我个人而言,在我的上网本上,我有这个链:

  • /boot 带有 GRUB2 菜单,其中包含以下启动选项:WindowsVista、Windows7、Linux Ubuntu 32bits、Linux Ubuntu 64Bits、SystemRescueCD.iso、memtext86+、软盘...等
  • 如果我选择 Linux Ubuntu 32Bits...它将加载另一个不同的 GRUB2,其中包含以下选项:返回(从 HDD MBR 启动)、内核 X、内核 X 调试、内核 Y、内核 Y 调试等...
  • 如果我选择 Linux Ubuntu 64Bits...它将加载另一个不同的 GRUB2,其中包含以下选项:返回(从 HDD MBR 启动)、内核 X、内核 X 调试、内核 Y、内核 Y 调试等...

这就是想法...在启动过程中有多个 GRUB!!

为什么不止一个?很简单...万一系统更新 Grub,它不会影响我用作启动菜单的那个,简单又有效。

现在,TrueCrypt 的问题是...如果它加密系统分区,它需要放到 MBR 上,它不允许您采用任何其他方式(RecoveryCD 除外)。

因此,如果 TrueTrypt 加密 Windows 系统分区,最好让它成为整个磁盘

嘿!Linux 也可以安装在与 Windows 相同的磁盘上以提高性能……而数据则安装在另一块磁盘上……

第一个 HDD 具有:

  • /dev/sda -> TrueCrypt 加载器 (MBR)
  • /dev/sda0 -> 由 TrueCrypt 加密的 Windows(一些 GB)
  • /dev/sda1 -> Linux Ubuntu /(一些 GB)它将保存另一个 Grub、一个名为 boot 的子文件夹和所有系统文件等...

第二块硬盘有:

  • /dev/sdb -> GRUB2 加载程序(MBR)我将其称为“BootMenu”
  • /dev/sdb1 -> /boot 用于 GRUB2 “BootMenu”(如果需要,则需要 512MB 的 SystemRescueCD.iso 文件)
  • /dev/sdb2 -> Windows 和 Linux 上显示的 NTFS 数据分区(如果未加密)

希望你能成功。

我曾这样解释过,只是认为您知道如何从 CD 启动、配置 BIOS、创建分区、安装 GRUB2 等...

这不是给新手看的。有非常先进的技术步骤,但不是 HowTo...

这只是从另一个媒体启动的想法,这些其他媒体(CD,软盘等)将包含一个启动菜单,让您可以选择从第一个 HDD 启动还是从分区启动等...换句话说 GRUB2。

希望你觉得它有用。

答案2

对此问题最简单的解决方案似乎是使用 Windows 引导程序引导至 Grub,而不是反过来。即使使用 ,Grub 似乎也无法引导至加密的 Windows 分区--force

有一个名为 EasyBCD(非商业用途免费)的工具,它会在您输入 TrueCrypt 密码后正确配置 Windows 引导加载程序以引导至 Grub。现在,我的 Windows 驱动器是 BIOS 中的第一个引导设备,Grub 是 Windows 引导加载程序中的默认引导项。您也可以轻松地将 Windows 设为默认引导项。

答案3

您可以进入启动菜单并选择您想要从中启动的硬盘。

F11在我的情况下,我在显示 POST 消息时按下该F键即可。您的情况可能有所不同。

相关内容