当 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键即可。您的情况可能有所不同。