當 TrueCrypt 加密的 Windows 7 和 Ubuntu 11.10 分別安裝在不同的實體磁碟機上時,如何雙重啟動它們?

當 TrueCrypt 加密的 Windows 7 和 Ubuntu 11.10 分別安裝在不同的實體磁碟機上時,如何雙重啟動它們?

當 TrueCrypt 加密的 Windows 7 和 Ubuntu 11.10 分別安裝在不同的實體磁碟機上時,如何雙重啟動它們?

我有兩個硬碟。 hd0 具有 TrueCrypt 加密的 Windows 7 安裝和 TrueCrypt 引導程式。 hd1 安裝有帶有 grub2 引導程式的 Ubuntu 11.10。

的輸出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 引導程序,按 escape 退出密碼輸入時,引導至 grub2。

我在使用選項 1 時遇到了困難,因為點擊 escape 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

我可以幫助您解決問題,這非常棘手,所以請務必理解它。

第一:全部備份第二:它需要兩個實體磁碟,只有一個我沒有得到它

轉到棘手的部分,引導順序過程:

  • BIOS 將從一個 HDD 啟動(通常是第一個 HDD)
  • 所以把 GRUB2 引導程式放在那裡
  • 這樣的 GRUB 將允許您從第一個磁碟上的分割區啟動或從第二個磁碟啟動(這是棘手的部分)
  • 如果想啟動Linux,只需從同一磁碟上的另一個分割區啟動
  • 如果想要啟動 TrueCrypt Bootloader,只需告訴它從第二個磁碟啟動,而不是從分割區啟動

考慮到這一點,如何存檔?很簡單,請依照以下步驟操作:

  • 僅將一個空白硬碟放入 PC
  • 配置 BIOS 以從其啟動(僅此一次)
  • 在其上安裝 Windows 和 TrueCrypt
  • 告訴 TrueCrypt 加密所有內容(只存在一個 HDD)
  • 重新啟動,測試 Windows 啟動
  • 正確關閉電源
  • 新增第二個磁碟
  • 在第二個硬碟上建立一些分割區
  • 一個用於 /boot(GRUB2 將去往何處)
  • 其餘的如你所願 Ubuntu /、SWAP 等...
  • 配置 GRUB2 以引導 Ubuntu 並鏈載入完整的第二個 HDD(注意不要告訴任何分割區,只告訴整個 HDD)
  • 重啟
  • 棘手:告訴BIOS從現在起永遠從第二個HDD啟動(如你所說,它讓你)
  • 測試引導是否執行 GRUB2
  • 測試 GRUB2 鍊是否正確載入第一個 HDD 開機載入程式(TrueCrypt 載入程式),但不要輸入密碼短語也不讓 Windows 引導,只需在要求輸入密碼時重新啟動。
  • 如果沒有完成,請重新啟動...並測試 GRUB2 Linux 選項...將不會啟動,因為 Ubuntu 尚未安裝,但不會載入 TrueCrypt,所以你會看到它有效
  • 安裝Linux 時要特別小心...不要讓它更改任何分割區表...只需使用現有分割區將其安裝在第二個磁碟上...當要求引導程式時告訴它安裝Grub 或Lilo 等....到 Linux 分割區,而不是 HDD MBR。

這樣你就會得到這個方案:

  • HDD0 - 帶有 TrueCrypt 的 MBR,其餘用於 Windows
  • HDD1 - MBR 和帶有 GRUB2 的 /boot 分區,還有一個用於 /(你的 Ubuntu)的分區,其中將有另一個 Grub、Lilo 或 Grub2 加載程序到 /boot,額外的分區如你所願

訣竅是:

  • 告訴 TrueTrypt 進行加密,因為他知道一個完整的 HDD 有自己的引導程式。
  • 從另一個不同的 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 web)
  • 將 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 32 位元、Linux Ubuntu 64 位元、SystemRescueCD.iso、memtext86+、磁碟機等
  • 如果我選擇 Linux Ubuntu 32 位元...它將載入另一個不同的 GRUB2,其中包含以下選項:返回(從 HDD MBR 啟動)、核心 X、核心 X 偵錯、核心 Y、核心 Y 偵錯等...
  • 如果我選擇 Linux Ubuntu 64 位元...它將載入另一個不同的 GRUB2,其中包含以下選項:返回(從 HDD MBR 啟動)、核心 X、核心 X 偵錯、核心 Y、核心 Y 偵錯等...

這就是想法...在引導過程中擁有多個 GRUB!

為什麼不只一個?簡單...萬一系統更新了 Grub,它不會觸及我用作啟動選單的那個,簡單而有效。

現在,TrueCrypt 問題...如果它加密系統分割區,則需要將其儲存到 MBR 上,它不會讓您有任何其他方式(RecoveryCD 除外)。

因此,如果 TrueTrypt 加密 Windows 系統分割區,最好讓它加密整個磁碟

嘿! Linux 也可以安裝在與 Windows 相同的磁碟上以提高效能...而將資料安裝在另一個磁碟上...

第一個硬碟:

  • /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”(如果您想要 SystemRescueCD.iso 文件,則需要 512MB)
  • /dev/sdb2 -> 在 Windows 和 Linux 上看到的用於 DATA 的 NTFS 分割區(如果未加密)

希望你能做到。

我解釋為這只是認為您知道如何從 CD 啟動、配置 BIOS、創建分區、安裝 GRUB2 等...

這不適合菜鳥。具有非常先進的技術步驟,而不是 HowTo...

這只是從另一個媒體啟動的想法,這樣的其他媒體(CD、軟碟等)將包含一個啟動選單,讓您選擇從第一個 HDD 或從分割區等啟動...換句話說,GRUB2。

希望您覺得它有用。

答案2

看來最簡單的解決方案是使用 Windows 引導程式引導到 Grub,而不是相反。即使使用 .grub,Grub 似乎也無法啟動到加密的 Windows 分割區--force

有一個名為 EasyBCD 的工具(免費供非商業用途),一旦您輸入 TrueCrypt 密碼,它將正確配置 Windows 引導程式以引導至 Grub。我現在將 Windows 驅動器作為 BIOS 中的第一個引導設備,並將 Grub 作為 Windows 引導程式中的預設引導項。您可以輕鬆地將 Windows 設定為預設值。

答案3

您只需進入啟動選單並選擇要從中啟動的硬碟即可。

就我而言,我是透過F11在顯示 POST 訊息時按 來實現的。F對於您的情況,這可能是不同的密鑰。

相關內容