星期日, 12月 30, 2007

免費好用的 boot manager 何處尋 -- grub4dos 篇

更新:2008/04/24 -- 加入了支援繁體中文選單的方法

grub4dos 得益於大名氣,教學文章網上隨處可見,推荐先看看官方的 tutorial,然后是這個 wiki。grub4dos 固然功能強大,先前就說過它能直接引導 img/iso 等 floppy/cdrom 的映像檔,只是初次接觸的話還有一些概念要先理解,看文件的時間省不得。

1. 準備所需檔案
grub4dos 引導方法十分靈活,例如可由 ntldr 引導,可是我還是不怕死的要寫到 MBR 裡去。如果你也跟我一樣的話,你需要3個檔案。

1a) grldr 及 menu.lst - 下載並解開 grub4dos-0.4.3 壓縮檔得到,是 grub4dos 的主程式及設定檔。
http://download.gna.org/grub4dos/

1b) grubinst_gui.exe - 下載並解開 grubutil-1.1-bin-w32 壓縮檔得到,把引導紀錄寫到 MBR的工具。
http://download.gna.org/grubutil/

2. 安裝 grub4dos
讀過了上面提的 tutorialwiki 就不難理解 (hd0,0) 表示第一個硬碟的第一個主分區的概念,我這裡繁/簡對應的分區如下 :
(hd0,0) - primary 1 分區: 安裝了繁體中文 Windows XP
(hd0,1) - primary 2 分區: 安裝了簡體中文 Windows XP

不像其它的 Windows 軟件,grub4dos 是沒有 installer 的,不過安裝也很簡單。首先將 grldr 及 menu.lst 放置到 (hd0,0) 的根目錄下,也就是 C:\。然后執行 grubinst_gui.exe,選好目標硬碟,下例是 (hd0),按下 [Install] 將 grub4dos 的引導紀錄寫到 MBR。


圖1: 安裝 grub4dos 到MBR

3. 設定 menu.lst 選單
理論上 grub4dos 己經安裝完成,但先別急著重新開機,因為還沒有設定好啟動項目,以我的繁/簡雙 XP 系統為例,menu.lst 設定如下:


# 預設等待時間(秒)
timeout 10

# 預設啟動的系統
default 0

# 引導繁體系統
title Windows XP Traditional Chinese
# 隱藏簡體系統的分區
hide (hd0,1)
unhide (hd0,0)
rootnoverify (hd0,0)
makeactive
chainloader +1

# 引導簡體系統
title Windows XP Simplified Chinese
# 隱藏繁體系統的分區
hide (hd0,0)
unhide (hd0,1)
rootnoverify (hd0,1)
makeactive
chainloader +1


先前一直煩惱 Windows 根目錄錯亂問題可經由隱藏另一個 primary 分區避免,就是上面設置中 hide/unhide 的作用。OK 重新開機后是不是出現了如以選單??


圖2: 簡單的雙系統選單

4. 簡體中文支援 + splash
grub4dos 也有簡體中文版,需要的話先把 grldr 替換成簡體中文的版本,該檔放置在 grub4dos-0.4.3 壓縮檔的 chinese 目錄;同時還需要中文字型檔,請到文末參考資料處給出的兩個論壇去找找。此外 grub4dos 也支援靚靚的 splash,總括以上設定如下:


# 預設等待時間(秒)
timeout 10

# 預設啟動的系統
default 0

# 設置圖形背景文件
# 位置是 (hd0,0)的 /boot 目錄下
splashimage (hd0,0)/boot/intel.xpm.gz

# 設置中文支持的字體文件
# 位置是 (hd0,0)的 /boot 目錄下
fontfile (hd0,0)/boot/fonts

# 引導繁體系統
title Windows XP 繁體中文
# 隱藏簡體系統的分區
hide (hd0,1)
unhide (hd0,0)
rootnoverify (hd0,0)
makeactive
chainloader +1

# 引導簡體系統
title Windows XP 簡體中文
# 隱藏繁體系統的分區
hide (hd0,0)
unhide (hd0,1)
rootnoverify (hd0,1)
makeactive
chainloader +1



圖3: splash + 簡體中文效果

5. 繁體中文支援
本來以為這是沒有辦法的,在雨木林風那裡找到了要決,其實就是要文字轉為簡體中文(是GBK,不是unicode簡體)。以上面的選單為例,menu.lst該這樣寫:


# 預設等待時間(秒)
timeout 10

# 預設啟動的系統
default 0

# 設置圖形背景文件
# 位置是 (hd0,0)的 /boot 目錄下
splashimage (hd0,0)/boot/intel.xpm.gz

# 設置中文支持的字體文件
# 位置是 (hd0,0)的 /boot 目錄下
fontfile (hd0,0)/boot/fonts

# 引導繁體系統
title Windows XP 楛极笢恅
# 隱藏簡體系統的分區
hide (hd0,1)
unhide (hd0,0)
rootnoverify (hd0,0)
makeactive
chainloader +1

# 引導簡體系統
title Windows XP 潠极笢恅
# 隱藏繁體系統的分區
hide (hd0,0)
unhide (hd0,1)
rootnoverify (hd0,1)
makeactive
chainloader +1


6. 參考資料
中國DOS聯盟
SYSOFT時空論壇
雨木林風

3 則留言:

Danny 提到...

你好:

想請教一個問題,
如果我有繁體,簡體,日文, 英文版及一個共用資料區,勢必一個XP裝到一個邏輯分隔區,如何啟動呢???我試了很久,仍無答案!!
還請高手撥冗指導

感激!!

Danny
danny.mail8@gmail.com

Jackie 提到...

您好,

如果我想將一隻16G的隨身碟製作成USB開機後可以選擇進入DOS或安裝XP、Windows7以及其它OS,此法是否可行?

澀澀 提到...

RE: Jackie
grub4dos可以做到,不過要將grub4dos是十分痛苦的事…我自已是用MultiBootISO做的,看看:
http://www.pendrivelinux.com/boot-multiple-iso-from-usb-multiboot-usb/