2010年10月17日 星期日

自製可多重開機USB隨身碟-基本版

如何自製可多重開機的USB隨身碟?其實這類的文章在網路上已經多到泛濫,但大多是需具備一點專業的知識,不然就是教學文件缺乏有系統的整理,使得非科班或非業界的使用者並不容易完成此項工作,事實上,個人也覺得一般使用者並不需要自製這類的工具碟,因為您並不會常常做修復電腦或是測試的工作吧?但不可否認的,還是會有需要的人,所以才會有這篇文章的誕生,是吧...

先說明,以下的操作步驟是在我的作業環境中(Windows 7+Windows XP Mode)使用,因此有些動作是我個人認為較安全及便利的動作,或許和您之前看到的教學文件有所出入,但沒關係,我保證依照我的步驟按圖索驥絕對可以成功的,另外步驟中所有使用到的工具程式網路上都很容易找到,但為方便起見,我將它們全部打包在此,請放心服用。 接下來,我們就開始著手進行吧...

Grub4dos 可以安裝在 MBR,也可以安裝在磁碟分區當做是 DOS 應用程式來啟動,本文是以後者為示範

Step 1 準備一支隨身碟並進行格式化

我使用的是一支將近五年的128MB SanDisk cruzer mini隨身碟,先使用HPUSBFW進行格式化,當然啦,如果您有重要資料在上面的話,請先進行備份,底下是參數選項

檔案系統:請選擇 FAT32 (FAT32 & FAT的差異這裡不討論)
磁碟區標籤:依您喜好自行輸入,我的則是TOOLBOX
建立一個DOS啟動碟:請選擇內附的 HPUSBFW-DOS

完成後,在您的隨身碟內可見到如下三個檔案(先將檔案總管內的隱藏保護的作業系統檔案取消勾選才可見到副檔名為 SYS 的系統檔案)
COMMAND.COM
IO.SYS
MSDOS.SYS
Step 2 製作隨身碟影像檔
因為之後的操作步驟都會進行大量的讀寫動作,我不想在USB隨身碟上直接進行,因此必需做一份USB碟的影像檔方便操作,完成後就可拔除USB隨身碟。使用 USB Image Tool 進行操作

選取您的USB隨身碟後,點擊 Backup,將USB隨身碟影像檔存檔,我的檔名為 USB.img

Step 3 測試影像檔
最方便易用的工具就是QEMU了,免安裝,下載完解壓縮即可使用

為方便操作,我將 Qemu 放在 C:\ 根目錄下,然後將 Step 2 製作的 USB 影像檔複製一份到 C:\qemu 目錄下,開啟命令提示字元,在 C:\qemu 目錄內執行以下命令:
qemu -L "C:\qemu\bios" -hda usb.img
如能見到上圖,即表示 Step 1 到 Step 2 皆操作成功,此時也可在桌面上建立一個qemu命令的捷徑,這樣一來就可以不用每次測試都要到命令提示字元中去輸入指令了。

值得一提的是,如果在 Step 1中您用的是自己的 Windows 98 開機片格式化USB隨身碟,在這個模擬開機的步驟中,可能會看到 Windows 98 開機的藍天白雲 Splash Screen,如果您不想看到它,可以將 MSDOS.SYS 的內容改成如下:
[Options]
Logo=0
BootGUI=0
如果使用我的工具包則不用,因為我已經先改好了

Step 4 安裝 Grub4dos
Grub4dos 是一套主要由對岸所開發的啟動管理程式,詳細的介紹這裡不贅述,有興趣者可自行 google 。說是安裝,其實也不是什麼安裝動作,只要將下載來的 grub4dos 解壓縮,複製其中的 grub.exe 到隨身碟內,並修改 CONFIG.SYS 檔案內容即可,由於我們已將USB隨身碟製作成影像檔,因此我們需要 UltraISO 來進行操作


  1. 在 UltraISO 中開啟USB隨身碟的影像檔
  2. 在根目錄下建立一個 grub 目錄
  3. 插入 grub.exe 到這個目錄內(如果您的開機選單需要使用中文,請插入 grub4dos-0.4.4 下 chinese 目錄內的 grub.exe及 HZK16F 字型檔)
  4. 在桌面新增一個文字檔 config.sys,並加入下列內容後存檔:
  5. DEVICE=\grub\grub.exe
  6. 將 config.sys 插入至影像檔的根目錄內並存檔
Step 5 測試影像檔
為確認上一步是否成功,可以執行QEMU測試影像檔

如果能看到如上圖GRUB提示符,即表示到目前為止步驟都正確,反之則檢查 Step 4的動作是否正確

Step 6 規畫需加入至工具碟內的工具程式
每個人的需求可能都不盡相同,您可視需要自行修改,我將我的工具碟規畫列出,以供參考:
  1. SPFDISK 硬碟格式化工具
  2. Memtest86+ 記憶體檢測工具
  3. Ghost 系統備份還原工具
  4. Acronis True Image 系統備份還原工具
  5. Partition Magic 硬碟分區調整工具
有些人認為,反正都是一些DOS工具,何必大費周章的建立一個多重開機環境,全部把它倒入一個可開機的USB碟內,需要哪個執行哪個,頂多建立一個批次檔選單不就好了?看完了我的工具程式清單後,您應該就可以晃然大悟了,Acronis True Image 開機片並不是在DOS下執行的程式,而是 Linux 核心,所以如果您的工具程式有類似的情形,或是有在玩PE系統的朋友,就勢必要使用啟動管理程式來做,才能在單一個USB隨身碟內集合這些工具。

Step 7 初步編輯 Grub4dos 的 menu.lst
Grub4dos 的開機流程內會需要一份檔案,名為 menu.lst,這份檔案內定義的就是您的開機選單及執行流程,在 grub4dos-0.4.4 內有一份範例,您可以用 Wordpad 開啟它,並另存一份純文字檔在桌面上再來使用Notepad修改。

由於對Grub4dos的命令還不是很熟,所以這一步只是先設定好選單,每個選單項目執行的動作都是重新開機,底下是我的範例:
fontfile /grub/HZK16F
timeout 30
default /default

title SPFDISK 楛极笢恅唳
reboot

title Memtest86+
reboot

title Ghost 11
reboot

title Acronis True Image Home 2009
reboot

title Partition Magic 8
reboot

title Reboot 笭陔羲儂
reboot

title Halt 壽儂
halt
至我撰文日止,Grun4dos 的官方穩定版本為 0.4.4 ,這個版本是不支援 Unicode 的,0.4.5 測試版則可以使用 Unicode,但在發布前,我們還是得用舊方法處理繁體中文的選單。先用繁體中文編輯 menu.lst,編碼格式為 ANSI (即預設),再使用任何您慣用的轉換程式將 menu.lst 轉換成ANSI格式的簡體中文,或是您可以複製編緝好的 menu.lst 內容,貼到這個網站去轉換http://www.j4.com.tw/big-gb/,轉換選項請使用 CN GB,再複製回來存檔即可。

處理好 menu.lst 之後,接下來把這份檔案插入至USB影像檔內的 grub 目錄之下,再執行 QEMU 測試影像檔,步驟正確的話您的開機選單應該可以出現在畫面中

試著執行各選項,動作應該都是重新開機才對

Step 8 準備各項工具的影像檔
網路上可以找到許多熱心網友製作的工具程式影像檔,您可以視需要下載,我的工具包內只提供列在我清單內的影像檔,其它不足的,則需要您自行製作或下載。

下載回來的影像檔您可以先使用 QEMU 做測試,命令如下:
qemu -L "C:\qemu\bios" -fda filename
例如您下載回來的影像檔是 spfdisk.ima,則執行命令就是
qemu -L "C:\qemu\bios" -fda spfdisk.ima
Step 9 將各項工具程式影像檔插入 USB 隨身碟影像檔
如同 Step 4 安裝 Grub4dos 般,接下來的工作就是使用 UltraISO 編輯 USB 隨身碟影像檔,在USB 隨身碟影像檔內依照您的喜好將工具程式歸類建立目錄或是一股腦兒的全倒進去都可以,我個人是比較喜歡後者,把它們全部丟到一個名為 tools 的目錄下即可。

上圖就是我 TOOLS 目錄內的所有檔案

Step 10 正式編輯 menu.lst 檔
將所需的各項工具程式影像檔都插入至 USB 隨身碟影像檔後,再來就是要開始編輯正式的 menu.lst 了,Grub4dos 命令非常多,有興趣研究者可至 http://diddy.boot-land.net/grub4dos/Grub4dos.htm 仔細研究,這裡只列出我的 menu.lst 內容供參考:
fontfile /grub/HZK16F
timeout 30
default 0

title SPFDISK 楛极笢恅唳
find --set-root /tools/spfdisk.ima
map --mem /tools/spfdisk.ima (fd0)
map --hook
chainloader (fd0)+1
rootnoverify (fd0)

title Memtest86+
kernel /tools/memtestp.bin

title Ghost 11
find --set-root /tools/ghost.ima
map --mem /tools/ghost.ima (fd0)
map --hook
chainloader (fd0)+1
rootnoverify (fd0)

title Acronis True Image Home 2009
kernel /tools/kernel.dat quiet vga=789 ramdisk_size=54272
initrd /tools/initrd

title Partition Magic 8
find --set-root /tools/pq8dos.ima
map --mem /tools/pq8dos.ima (fd0)
map --hook
chainloader (fd0)+1
rootnoverify (fd0)

title Reboot 笭陔羲儂
reboot

title Halt 壽儂
halt
將編輯好的 menu.lst 插入至 USB 隨身碟的 grub 目錄下,並存檔然後使用 QEMU 測試,若選單各項功能都正常,即表示到目前為止,所有的操作步驟都正確。

ps.Memtest86+ 無法在 QEMU 內測試,需在實體機器上進行測試

Step 11 將影像檔回存至 USB 隨身碟
接下來,我們要將 USB 隨身碟影像檔回存至 USB 隨身碟上,並進行實體機器的測試,開啟 USB Image Tool 後,選取您的隨身碟並點擊 Restore,選擇 USB.img 後即可開始回存的動作,回存完畢後就可在實體機器上進行測試了。


Step 12 進行美化動作
如果 Step 11 的測試皆正常無誤,而您又是個不挑剔的人,那麼就不需要再往下看,您的可開機 USB 工具碟已經完工,若想再將它修改的更有個性的人,請再繼續往下看。

a.眼尖的人可能會發現,在開機的過程中會閃過一個畫面

會有這個畫面的原因,是因為 grub.exe 有個內建的選單,我們必需使用 grubmenu (在工具包內的 grub4dos-0.4.4 目錄中) 來對它進行修改,先從 UltraISO 中提出 grub.exe 到 C:\temp 下,把 grubmenu.exe 也複製到 C:\temp,開啟命令列進入 C:\temp 執行下列命令抽出 grub.exe 的內建選單:
grubmenu export grub.exe grub.lst
開啟 grub.lst 可看到以下內容:
pxe detect
configfile
default 0
timeout 0
title find /menu.lst, /boot/grub/menu.lst, /grub/menu.lst
errorcheck off
configfile /menu.lst
configfile /boot/grub/menu.lst
configfile /grub/menu.lst
find --set-root --ignore-floppies --ignore-cd /menu.lst && configfile /menu.lst
find --set-root --ignore-floppies --ignore-cd /boot/grub/menu.lst && configfile /boot/grub/menu.lst
find --set-root --ignore-floppies --ignore-cd /grub/menu.lst && configfile /grub/menu.lst
errorcheck on
commandline
title commandline
commandline
title reboot
reboot
title halt
halt
基本上,我們可以只修改 timeout 的值即可,原本是 1,將它改為 0,其它的部份可以不用更動,如果有需要做子選單的朋友,則可以參考它呼叫子選單的方法,進行更個性化的選單配置。修改完成後,執行以下命令,將完成結果置入 grub.exe 內:
grubmenu import grub.exe grub.lst
完成後再將 grub.exe 插入至 USB 隨身碟影像檔內 grub 目錄下即可
事實上我的做法是,根本就不要這份內建選單,直接把編輯好的menu.lst置入

b.設置字體顏色

在不使用中文的情形下,Grub4dos 可在 menu.lst 中使用 color 命令定義選單文字的顏色,它的格式如下:

color 選單區 加亮區 說明區  頭部

每個區域內各需設置前景及背景色,所以總共要設置八個顏色,如上圖的顏色配置如下:
color dark-gray/blue white/blue light-gray/blue light-red/blue
可以使用的顏色代碼如下:
背景色可用:black、red、green、brown、blue、magenta、cyan、light-gray
前景色可用:black、red、green、brown、blue、magenta、cyan、light-grayblack、red、green、brown、blue、magenta、cyan、light-graydark-gray、light-red、light-green、yellow、light-blue、light-magenta、light-cyan、white

您可以在這個網頁內看到各種顏色搭配的組合 http://grub4dos.sourceforge.net/wiki/index.php/Color_Matrix

color 命令需放置在第一個 title 之前,若有指定中文字型則無效

c.設置背景圖片
Grub4dos 允許使用背景圖片,但必須符合以下格式:
  • 圖片大小必須為 640X480
  • 圖片顏色深度最多為14色
  • 圖片格式必須為 .xpm 可用 gzip 壓縮

如果使用 splashimage 命令,color 命令會失效,splashimage 命令應搭配以下二個命令設置文字顏色
foreground=RRGGBB
background=RRGGBB
如上圖例,我的 menu.lst 內容為
splashimage=/grub/splash.xpm.gz

foreground=215C98
background=CAD2DA
.
.
至於如何製作 Grub4dos 的背景圖,可先參閱官方網站 http://diddy.boot-land.net/grub4dos/files/splash.htm 的步驟,工具包內已含GIMP及convert

工具包載點

21 則留言:

  1. qemu 不是內部或外部指令= =?
    步驟都對...
    已經弄了好幾次沒成功..

    回覆刪除
  2. 喔哦~qemu 是一個模擬器軟體,我的 Step 3 有寫,免安裝,下載完直接執行就可以了,抱歉忘了寫載點,不過那是免費軟體,您google一下就有了...,

    回覆刪除
  3. 工具包載點已經失效是否可再補檔呢?謝謝!

    回覆刪除
  4. 謝謝您的提醒,載點已更新

    回覆刪除
  5. 感謝更新載點,目前己下載成功。
    只是用30G外接硬碟在qemu執行時一切正常,但是以usb-hdd開機使用時,發現執行速度非常慢,目前還不知道原因,下次再以隨身碟來測試看看。

    回覆刪除
  6. title Install ubuntu
    map (hd0,0)/ubuntu.iso (hd32)
    map --hook
    root (hd0,0)
    kernel (hd32)/casper/vmlinuz boot=casper iso-scan/filename=/ubuntu.iso
    initrd (hd32)/casper/initrd.gz
    boot

    这里用 map 指令将 ISO 文件模拟为硬盘/光盘,在模拟磁盘中读取vmlinuz 文件,initrd.gz 文件。当控制权交给 kernel 后,计算机就从实模式过渡到保护模式。磁盘模拟也就不起作用了。

    要注意的是这里 ubuntu.iso 要连续存放,在 grub 模式中可以进行测试,将它放在一个新建的分区可以保证这一点。如果内存够大,可以用 map --mem 指令直接将其映射到内存。ISO 文件不一定要放在 C 盘根目录,只要在上面 iso-scan/filename 中指定路径即可。

    上面的测试基于grub4dos-0.4.3,windows XP,Dell Dimension E520, ubuntu 8.04 和 ubuntu 8.10 i386 版均测试成功。

    以上轉載自 http://hi.baidu.com/sxpspace/blog/item/aa29f5f351acf857352acc38.html

    回覆刪除
  7. 工具包載點又失效了~可否再補檔?

    回覆刪除
  8. 版主您好..載點失效了
    能否請你再次補檔、感謝!

    回覆刪除
  9. 您好,是否能重新上傳工具包?我有自行搜尋過hzk16f,不過都無法正常顯示中文....

    回覆刪除
  10. 工具包載點 能不能再重PO一次 謝謝

    回覆刪除
  11. 工具包載點 能不能再重PO一次
    HMS9501@YAHOO.COM.TW
    謝謝

    回覆刪除
  12. "打包在此"無法下載耶!!!

    回覆刪除
  13. 工具包載點 能不能再重PO一次
    m_qqd@YAHOO.COM.TW
    謝謝

    回覆刪除
  14. 大大~ QEMU 我一直啟動不了 還有 工具包載點掛了 可否再貼一次?

    回覆刪除
  15. 寫得非常好

    工具包載點 能不能再重PO一次

    工具包載點又失效了~可否再補檔?

    回覆刪除
  16. 工具包載點又失效了~可否再補檔?

    回覆刪除
  17. 可以再貼一次工具包載點嗎??
    https://mega.co.nz/這個免費空間還不錯喔~~
    感謝大大的分享~~這篇文真的對我很有幫助!!

    回覆刪除
  18. 我也需要工具包 不知道是否更新再補檔一次呢??

    回覆刪除
  19. 載點已失效!可改用網盤提供工具包下載嗎?謝謝您!

    回覆刪除
  20. 跪求工具包阿...感激不盡!!

    回覆刪除
  21. http://devildrey33.es/Blog/USB_Boot MORE SIMPLE

    回覆刪除