2012年10月25日 星期四

多重開機:Vista/Windows 7 和 XP Pro 分別安裝於兩個硬碟上

從開始玩電腦以來,我就很喜歡嘗試不同的東西,作業系統的安裝、使用就是其中一種,其中包含這個部落格裡面寫的各式各樣的 Linux (含 Mac OSX)。就是因為有這個習慣,如果狀況允許,我用的電腦都有兩顆硬碟,而硬碟的第一個分割區就是我用來安裝測試用的作業系統,例如:在正式使用 Vista 以前,我把 XP 安裝在第一顆硬碟,而 Vista 就安裝在第二顆硬碟;又例如,想測試主機板究竟支不支援 AHCI/RAID 功能,也可以把作業系統試著安裝在其中一顆硬碟。
最近因為 Windows 7 Beta 被公開下載,又聽說其同時擁有 XP 和 Vista 的優點,因此當然要測試一下。測了兩天之後,覺得真的不錯,於是決定不要再從 BIOS 來調啟動順序,而決定要走多重開機的方式。雖然之前在啟動安裝於外接式 USB 硬碟的 Ubuntu中 討論過如何使用 bcdedit 和 Grub4DOS 來設定多重開機,但是總是覺得:已經有了 Spfdisk 這個好工具,為什麼要哪麼麻煩去搞定複雜的 bcdedit?於是就決定還是使用 Spfdisk,可是這下子慘了,不同的分割區在不同的作業系統下會自動隱藏(從 NTFS Type 07 變成隱藏式 NTFS Type 17)。這下子麻煩了,因為這一招在 Vista 不會,我想八、九成是 Windows 7 Beta 的臭蟲,可是如果不是呢?要不要解決?
由於 Windows 7 不錯用,想想以後一定會遇上同樣的問題,所以就花了一些時間把這個問題解決,因為解決的方法適用於在兩顆硬碟多重開機 Vista 和 XP,或者 Windows 和 XP(或許還有無限種可能,因為使用 Grub),所以就把解決方法寫下來。
  1. 首先,先經由 BIOS 調整,讓開機順序從 Vista/Windows 7 的硬碟開機(因為我們要借用 Vista/Windows 7 的 boot manager)。
  2. 下載並安裝 EasyBCD。EasyBCD 是個免費軟體(當然作者也希望使用者可以樂捐;在台灣用 PayPal 極度不方便,所以幫作者打一下廣告),它會使得你在修改 BCD registry(也就是經由 bcdedit 來完成的事)變得非常簡單,而且最有趣的就是它也支援 Grub。
  3. 執行 EasyBCD:請注意閱讀,你的畫面跟下列畫面應該會有不同。
    • 執行 EasyBCD 之後的第一個畫面如下。右邊紅色框框內的設定,是第一次使用的情形,只是它的名稱是 Windows 7;至於,我是如何把它改成 Windows 7 Ultimate,等下會說。然後請按下 ‘Add/Remove Entries’(左邊的紅色框框)來新增多重開機的作業系統。
      bcd1
    • 進入的畫面如下圖所示,這張圖是直接引用 EasyBCD 官網的圖片,因為我已經安裝了 NeoGrub,所以看不到這個畫面。請依照圖中上面的紅色框框(也就是 NeoGrub)點一下,然後會出現如圖中下面的紅色框框,然後請按下 ‘Install NeoGrub’ 來安裝 NeoGrub(是一種 Grub 的變形)。之後的 XP 的啟動,是讓 Vista/Windows 7 的 boot manager 來啟動 NeoGrub,最後再由 NeoGrub 來啟動 XP。雖然好像有點複雜,但是這大概是唯一的方式,除非 Spfdisk 的新版能解決這個問題(或者 Window 7 正式版能解決分割區不見的問題)。
      bcd2
    • 安裝了 NeoGrub 之後,畫面如下。請按下紅色框框中的 ‘Configure’ 來進行 NeoGrub 的設定。按下之後,會跳出一個筆記本的視窗,我們需要輸入一些設定值。 bcd3
      請將下列的設定複製到筆記本內:

      default 0
      timeout 0
      title Windows XP Professional
      root (hd0,0)
      savedefault
      makeactive
      map (hd1) (hd0)
      map (hd0) (hd1)
      chainloader +1

      我們需要對這個檔案做一些說明,若你需要進一步了解,可以在 Google 大神上搜尋 Grub 或者 menu.lst 都可以,不論是 Linux 版本還是 Windows 的版本都可以。
      從檔案中的第 3 行(title ….)開始一直到結束,代表一個開機的選項。title 後面接的是選項中的名稱;因為我們希望啟動 Windows XP Professional,所以就把這個名稱輸入進去,你可以依照你的喜好來輸入(但是中文應該不支援吧 [喔,某些版本的 Grub 可以支援])。
      title 之後的設定,除了有 hd0 和 hd1 的敘述之外,可以全部不改。我的電腦有兩顆硬碟,XP 安裝在 hd0 的 第一個分割區(也就是分割區 0),所以才有 ‘root (hd0,0)’ 的設定;如果你的 XP 安裝在 hd1 的第一個分割區,那就要改成 ‘root (hd1,0)’。可是要如何知道哪一顆硬碟是 hd0,哪一顆硬碟是 hd1 呢?請利用控制台的磁碟管理功能來看,裡面的磁碟 0 就是 hd0,而磁碟 1 就是 hd1。
      最後,如果你的設定是 ‘root (hd1,0)’,那麼你就需要把 map 的那兩行改成:

      map (hd0) (hd1)
      map (hd1) (hd0)

      至於,’default 0′ 指的就是預設的情形,會啟動第一個開機選項,也就是 XP;而 ‘timeout 0′ 的意思是說不必出現開機選項的畫面,直接啟動 XP。你可以把 ‘timeout 0′ 改成 ‘timeout 10′ 來觀察一下開機時的變化。
    • 這個步驟可有可無。藍色框框內可以選擇你預設啟動的作業系統,而紅色框框內,可以允許你將開機的選項名稱改成你喜歡的名稱;例如,預設是 Windows 7,你就可以在這裡把 Windows 7 改成 Windows 7 Ultimate。
      bcd4
安裝好了之後,可以試著重新開機,試試開進不同的作業系統有沒有問題。最後,為了避免不小心刪掉另一個作業系統的檔案或者資料,我的習慣是當我在 A 作業系統時,我會利用控制台把 B 作業系統的開機分割區的磁碟機代碼移除;同樣的,在 B 作業系統時,我會利用控制台把 A 作業系統的開機分割區的磁碟機代碼移除。

沒有留言:

張貼留言