2010年12月14日 星期二

用GRUB4DOS做隨身碟開機

1.先格式化隨身碟
2.用HDD Regenerator 2010製作Bootable USB Flash
3.用grubinst_gui.exe把隨身碟的 MBR 修改成使用 grub 來開機
4.將grldr, menu.lst以及相關檔案複製進隨身碟即可

















首先使用 grubutil 裡頭的 grubinst_gui.exe 程式, 把隨身碟的 MBR 修改成使用 grub 來開機, 然後把 grub4dos 的 grldr 放到隨身碟的根目錄中, 基本上, 這樣子做之後, 就會在開機後執行 grldr 來使用 grub 了. 剩下來的, 就是設定 grub 的各種開機選項了. 只要同樣在隨身碟的根目錄中, 建立一個 menu.lst 的文字檔, 設定 grub 的各種開機選項就可以了.
至於menu.lst內容要怎麼修改可以參考下面提示:

首先, 如果你的隨身碟要由 DOS (Windows 98 中的 DOS) 開機, 只要把 IO.SYS, MSDOS.SYS 與 COMMAND.COM 複製到隨身碟的根目錄中, 然後在 menu.lst 中加上下面的設定:
title DOS
chainloader /io.sys
這樣子在 grub 中就會出現 DOS 這個選項了. 選擇後就會透過 IO.SYS 來做一般 DOS 開機的動作了.
接著, 我還有用 NoN 的 XPE, 把 ISO 檔案內的 SETUPLDR.BIN, RXPE.COM, RXPE.IM_ 與 RXPE.SIF 放到隨身碟的根目錄, 再把 OUTTOOL 目錄複製一份到隨身碟中, 然後在 menu.lst 中加上下面的設定:
title NoName XPE
chainloader /setupldr.bin
這樣子在 grub 中會出現 NoName XPE 這個選項, 選擇後就會載入 NoN XPE 了.
接著, 經常使用的 memtest86 軟體, 建立一個 MEMTEST86 的目錄, 把 memtest86.bin 放到這個目錄下頭, 然後在 menu.lst 中加上下面的設定:
title MemTest86 3.4
kernel  /memtest86/memtest.bin (fd0)
boot
這樣子在 grub 中選擇 MemTest86 3.4 就會執行 memtest86 軟體.
接著, 在 Linux 中, 經常使用 SystemRescueCd 這個光碟, 同樣也可以放到隨身碟中. 首先建立一個 SYSRCD 的目錄, 然後把光碟內的 sysrcd.dat 放到這個目錄下, 再把光碟內 isolinux 目錄下的 rescuecd 與 rescuecd.igz (如果你習慣選擇使用其他的 kernel 也可以, 如 x86-64 的 rescue64 與 rescue64.igz)也放到 SYSRCD 目錄內. 然後在 menu.lst 中加上下面的設定:
title    SystemRescueCd
root     (hd0,0)
kernel   /sysrcd/rescuecd subdir=sysrcd setkmap=us video=ofonly vga=0 cdroot
initrd   /sysrcd/rescuecd.igz
boot
這樣子在 grub 中選擇 SystemRescueCd 就會載入 SystemRescueCd 的內容了.
如果你有使用 Acronis True Image 這個軟體, 可以先使用這個軟體, 產生回復光碟或光碟的 iso 檔案, 然後建立一個 ATIRCD 的子目錄, 把光碟內的 kernel.dat 與 ramdisk.dat 放到 ATIRCD 的子目錄中. 然後在 menu.lst 中加上下面的設定:
title    Acronis True Image
root     (hd0,0)
kernel   /atircd/kernel.dat quiet
initrd   /atircd/ramdisk.dat /s
boot

這樣子在 grub 中選擇 Acronis True Image 這個選項, 就會執行 True Image 了.
如果你有 Windows 98 的開機片, 也可以把開機片做成一個 image 檔案 (winimage 或 linux 下頭直接用 dd 指令就可以), 如 win98.img 然後建立一個 WIN98 的目錄, 把這個檔案放到 WIN98 目錄中, 在 menu.lst 中加上下頭的設定:
title Windows 98 Boot Disk
map --mem (hd0,0)/win98/win98.img (fd0)
map --hook
chainloader (fd0)+1
rootnoverify (fd0)

這樣子 grub 會弄一個虛擬的軟碟機, 把這個 image 載入會再開機.
最後, 加上一些進入 grub shell, 由軟碟機開機, reboot, halt 指令的項目:
title GRUB Command Line
commandline

title Floppy (fd0)
chainloader (fd0)+1
rootnoverify (fd0)

title Reboot
reboot

title Halt
halt

這樣子就完成了. 整個 menu.lst 如下:

color black/cyan yellow/cyan
default 0


title DOS
chainloader /io.sys


title NoName XPE
chainloader /setupldr.bin


title MemTest86 3.4
kernel  /memtest86/memtest.bin (fd0)
boot


title    SystemRescueCd
root     (hd0,0)
kernel   /sysrcd/rescuecd subdir=sysrcd setkmap=us video=ofonly vga=0 cdroot
initrd   /sysrcd/rescuecd.igz
boot


title    Acronis True Image
root     (hd0,0)
kernel   /atircd/kernel.dat quiet
initrd   /atircd/ramdisk.dat /s
boot


title Windows 98 Boot Disk
map --mem (hd0,0)/win98/win98.img (fd0)
map --hook
chainloader (fd0)+1
rootnoverify (fd0)


title Windows 98 Boot Disk with USB support
map --mem (hd0,0)/win98/w98usb.img (fd0)
map --hook
chainloader (fd0)+1
rootnoverify (fd0)


title GRUB Command Line
commandline


title Floppy (fd0)
chainloader (fd0)+1
rootnoverify (fd0)


title Reboot
reboot


title Halt
halt


來源:http://blog.teatime.com.tw/1/post/277