如何从Truecrypt及其引导加载程序(Windows XP分区旁边的多重引导)链接Ubuntu 10.04的GRUB2?


9

我希望Truecrypt像往常一样要求Windows XP的密码,但是要使用标准的[ESC]选项,即通过Escape键选择密码,我希望它为(未加密的)Ubuntu安装找到grub。

我已经在东芝NB100上网本的120Gb硬盘上安装了Windows XP,然后进行了分区以为Ubuntu 10.04腾出空间,并在Windows XP安装后进行了安装。

当我加密Windows XP时,Truecrypt会覆盖主引导记录(MBR)中的grub条目,我相信(?)并且无法再在XP和Ubuntu之间进行选择。所以我需要恢复它。

我已经在Ubuntu论坛和其他地方相当广泛地搜索了答案,但是还没有找到涵盖所有可能情况,场景和错误消息的完整答案,或者他们谈论的是旧版GRUB,而不是GRUB2。Ubuntu 10.04使用GRUB2。

我的设置:

分区:

  1. Windows XP,NTFS(将使用Truecrypt加密),40Gb
  2. / boot(Ext4,1Gb)
  3. Ubuntu交换,4Gb
  4. Ubuntu /(root)-主文件系统(20gb)
  5. NTFS共享,55Gb

我知道Truecrypt引导加载程序在引导时会替换GRUB,因为我已经在另一台笔记本电脑上尝试过了。

我希望引导加载程序屏幕看起来像通常的样子:

TrueCrypt的

输入密码:

(或[ESC]跳过)

密码是WindowsXP的密码,然后按[ESC]来找到要从中启动的Ubuntu grub

在此先感谢您的帮助。

问题的关键领域是如何在按下逃逸键时指示Truecrypt,以及如何在按下esc键时使True引导加载程序可以看到Grub / Ubuntu。也称为链接。

Answers:


6

这很容易。分区磁盘,安装Windows和Ubuntu。在Windows分区上使用TrueCrypt,它将加密Windows,但未加密Ubuntu。

然后,您可能会发现只能引导到Windows,然后再通过TrueCrypt引导程序进行引导。听起来您已经在那里。

假设您的磁盘为sdasda1并且已启用Windows 和Linux sda2(假设是,您的磁盘看起来不会sda2)。TrueCrypt将安装在MBR上sda并覆盖GRUB。

使用Ubuntu发行版CD引导实时CD,然后将chroot插入您的预安装系统。像这样:

sudo su -
mkdir -p /mnt/ubuntu
mount /dev/sda2 /mnt/ubuntu
mount --bind /proc /mnt/ubuntu/proc
mount --bind /dev /mnt/ubuntu/dev
chroot /mnt/ubuntu

然后安装GRUB引导加载程序,但要安装sda2,而不是sda

grub-install /dev/sda2 --force

然后,当您重新启动时,您仍然会得到TrueCrypt加载程序,询问您从sda-> 引导sda1到Windows 的密码。但是,当您按ESCAPE键时,您将可以选择绕过并直接引导进入Linux,sda2而不是MBR。

可是等等

在执行此操作之前,请注意以下几点:如果您grub-install弄错了,并覆盖了sdaMBR,或者如果您执行了一次内核升级而触发GRUB覆盖了MBR,那么您会发现需要重新安装TrueCrypt引导程序才能恢复进入Windows。如果您不准备,这将是一个巨大的麻烦。

我建议您在使用GRUB之前,先从Linux内部备份TrueCrypt引导程序。这样,当您中断TrueCrypt并只能进入Linux时,可以轻松地将其写回。

备份您的TrueCrypt引导加载程序:

dd if=/dev/sda of=~/truecrypt.mbr count=1 bs=512
dd if=/dev/sda of=~/truecrypt.backup count=8 bs=32256 # Just in case

还原您的TrueCrypt引导加载程序(我称之为restore-truecrypt.sh):

sudo dd if=~/truecrypt.mbr of=/dev/sda count=1 bs=512
sudo dd if=~/truecrypt.backup of=/dev/sda count=8 bs=32256
sudo grub-install /dev/sda2 --force

我在方便的shell脚本中同时拥有这两组命令。当我不小心更改启动程序时(发生这种情况),我不想四处寻找命令或阅读信息man

哦,还有关于兼容性的一句话。当我写“ GRUB”时,我指的是GRUB 1或2。就我个人而言,我是在10.04和Windows 7上使用GRUB 2来实现的,但是在GRUB,Windows和Linux的较早版本中工作得很好。


非常感谢@fitzpatrick的回答。有更多时间我会检查一下。我对自己努力使它运转起来感到不知所措,所以我当然是您的确切方向:)在这里,我将告诉您我的发现是什么。
therobyouknow 2010年

备份到底是什么“ dd if = / dev / sda of =〜/ truecrypt.backup count = 8 bs = 32256”?TC标头?谢谢!
stefan.at.wpf 2012年

此外,sda2是/ boot分区吗?
stefan.at.wpf 2012年

好的sda2是根分割,该死的,我的被加密了……
stefan.at.wpf 2012年

dd命令正在复制磁盘的前32Kb:基本上是完整的引导扇区。在上面给出的示例中,没有单独的启动分区,nix安装位于单个分区上。在RedHat早期,我曾经使用过Linux桌面上的单独分区作为工具。如今,有了大磁盘,我认为您可以在大多数情况下为您的服务器节省繁琐的工作!
艾丹·菲茨帕特里克

2

对于这个问题,我将接受的答案是我自己的。答案是接受我不能*做到这一点,我将接受一种选择:

  1. 使用在Windows XP(加密的系统驱动器分区)主机Ubuntu中运行的虚拟化/ VM Ware应用程序,例如VirtualBox,VMWare或Parallels。因此,我必须先启动Windows,然后运行此应用程序,然后从中启动到Ubuntu。一些评论者列出了此方法的缺点之一,因为您必须启动两次(首先是XP,然后是Ubuntu)才能进入Ubuntu。但是,我要说的是,它实际上比普通的BIOS启动的双引导程序有一个优势,因为您实际上使两个操作系统同时运行。例如,如果您想在多个平台上快速测试应用程序或网页,那就太好了。

  2. 将辅助硬盘驱动器或SD卡(例如8gb,16Gb)用于Ubuntu,并从BIOS(一次性)启动中选择以从中启动Ubuntu。

*不能=真的意味着我已经花了足够的时间(三天中大约6个小时,离开了我的头脑,搜索了重新刷新的论坛),并且不准备再花更多的时间。因此,我不能因为懒惰和依赖别人而受到指责。不能=也意味着:不能在此刻。我可能会再来一次。

以下是一些其他人可能会有用的参考:

以上所有内容都提供了一些见识,但没有给出涵盖所有可能情况或grub版本的最终完整答案。

我已经在超级用户,ubuntuforums和truecrypt论坛上发布了相同的问题:

我这样做的理由是,这些论坛的读者不一定会阅读其他论坛,它们会有一些重叠,但可能会漏掉一些重要的建议。

背景思想和学习(如果有兴趣!)

实际上,我很高兴地说我每天都打电话给它,并提出了替代方案,尽管我确实让它变得更好,并继续为赢得和解决我的问题而奋斗。但是,接受不能(轻松)完成并且有替代方案的做法令我欣慰。现在我可以继续处理更重要的事情!我已经在没有加密的桌面上双重启动Windows 7和Ubuntu 10.04-这是一个非常简单的过程。有了其他选择,我离我最初的答案并不遥远。实际上,目前我在笔记本电脑上使用的Ubuntu不如Windows那样多,因此我不会错过太多。我也有MacBookPro,所以Windows风扇绝对比其他任何操作系统都强大!

从另一个用户的角度来看,这就是为什么我希望使用Ubuntu进行truecrypt加密Windows双重引导的原因:

http://blog.mfabrik.com/2008/07/15/perfect-dual-boot-crypted-hard-disk-setup-with-truecrypt-and-luks/

“我有一台用于Symbian和Web开发的工作笔记本电脑。我必须能够同时启动Vista和Linux。由于客户端的隐私,如果笔记本电脑丢失,则必须对两个操作系统进行加密。即使我不使用Windows,积极地,其Web浏览器数据可能包含用于客户端系统的已存储密码,并且意外泄漏它们将是灾难性的。”

Grub2比grub更复杂,有些人可能会这样争论。我在Windows XP 10.04之前的Ubuntu(GRUB不是GRUB2)上取得了成功:

http://www.howtoforge.com/forums/showthread.php?p=184776#post184776

我说比较复杂,因为现在存在更多的设置文件,它们分散在更多目录中,并且在它们之间具有引用,现在是一些机器生成的文件,建议不要编辑它们,例如,引导菜单,这里有一种脚本语言可供学习和使用。进行更改时运行的脚本解释器。目前,它对我来说太复杂了,它仅用于启动操作系统,而不是登月火箭!


我尚未考虑的一个选项是使用Ubuntu Alternate CD / .ISO映像-在此处下载:releases.ubuntu.com/lucid如果您在Ubuntu论坛(上面的链接)上查看了我发布的问题副本,您会看到受访者提到此内容的帖子。关键点在于,它为您提供了将GRUB放在哪里的选择(并将正式且正确地进行,而不是像我所做的那样手动猜测),并且张贴者声称他们已在同一台计算机上实现了加密的Ubuntu和Truecrypted Windows-这是我的目标。
therobyouknow,2010年

1

我想我解决得很顺利。我的原始情况如下:我有一个未加密的上网本(MSI U160),带有Windows 7分区和Ubuntu 10.10分区(Ubuntu的grub2位于MBR中)。

  1. 为了安装Truecrypt,我必须将Windows 7重新安装到其原始分区中。
  2. 然后我安装了truecrypt(对整个Windows 7分区进行加密)
  3. 按照这些说明,我从USB密钥重新安装了Ubuntu,将grub2加载程序放置在Ubuntu分区上
  4. 重新启动后,我得到了TrueCrypt引导加载程序。我按了[ESC],然后得到了一个可移植分区的列表,包括linux分区(它也显示了Windows分区,但是由于该分区已加密,因此引导将失败)。

我希望这也是您想要的。


1

我只花了最后两天的时间来与之抗争,却无法获得这些答案中的任一个。我终于做到了,我已经在博客上记录了下来。这是摘要版本(使用Debian wheezy完成;也应适用于Ubuntu。其他发行版可能需要稍作修改):

本质上,您可以通过连锁加载GRUB2来加载SYSLINUX,而SYSLINUX会引导TrueCrypt Rescue ISO映像,该映像可让您启动到Linux。

  1. 安装syslinux:

    sudo aptitude install syslinux
    
  2. 复制文件到位:

    sudo cp /usr/lib/syslinux/memdisk /boot/
    sudo cp TrueCrypt\ Rescue\ Disk.iso /boot/truecrypt-rescue-disk.iso
    
  3. 确定启动分区的UUID:

    sudo blkid /dev/sda2
    

    输出应如下所示:

    / dev / sda3:UUID =“ 12345678-1234-1234-1234567890”

  4. 配置GRUB2:

    将以下内容添加到/etc/grub.d/40_custom

    menuentry "TrueCrypt ISO boot" {
        insmod part_msdos
        insmod fat
        insmod ext2
        insmod search_fs_uuid
        search --fs-uuid --no-floppy --set=boot [UUID without quotes]
        linux16 ($boot)/memdisk iso raw
        initrd16 ($boot)/truecrypt-rescue-disk.iso
    }
    
  5. 重新加载GRUB2配置

    sudo update-grub
    

请注意,这将在您每次启动Windows时向您显示[F8]修复选项,因为我们正在愚弄系统从硬盘驱动器启动TrueCrypt Rescue CD映像,而不是“正常”的TrueCrypt引导方法。但这对我来说似乎是一个小缺点(甚至可能被认为是一项附加功能!)


+1支持您的成功工作,出色的工作@Flimzy在某些时候,我想尝试您的回答并提出报告,如果我可以重复您的成功,我希望您的回答得到接受(无论如何,我可能会尽快这样做)我没有可用于试验的机器,目前它们已全部用于其他用途)。再次感谢!
therobyouknow 2013年

-1

解决方案:也许将truecrypt引导加载程序复制到要由grub引导的IMG文件?还是使用Grub4Dos加载Ubuntu?

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.