1. 介紹
grubinst是一個用來將GRUB4DOS安裝到硬盤的MBR(或者分區的引導扇區)以及映像文件中的工具。
grubinst.exe是一個命令行方式的程序,它的功能基本上與不點的GRUB4DOS發行包中的bootlace.com(可以運行在純DOS或者Linux環境)相同,但是跟bootlace.com不同,grubinst完全是用C語言開發的,能夠在Windows NT/2K/XP、Linux和FreeBSD等操作系統下編譯並運行。
grubinst_gui.exe是grubinst.exe的圖形界面shell程序,對於那些不熟悉命令行操作的用戶來說,它提供了更友好的圖形操作界面,目前,grubinst_gui.exe只能運行在Windows操作系統(事實上是只能運行在NT/2K/XP環境)下。
另外請注意,當前版本的grubinst不支持在Windows 95/98/ME下修改硬盤的MBR,對於這些操作系統,請使用bootlace.com。
2. grubinst跟bootlace.com的區別
在bootlace.com裡,硬盤盤等設備只能用設備的BIOS識別號來表示,如0x80表示第一塊硬盤,0x81表示第二塊硬盤等等。而在grubinst中,硬盤則可以用特定的設備文件名來表示(跟grub的傳統類似),如(hd0), (hd1)...。軟驅暫時還不支持這種表示方式。
grubinst支持幾個新的選項,主要用於恢復原來的MBR。
--save-mbr=FILENAME
This option is used to save the original MBR to FILENAME 這個選項用於保存原來的MBR到文件中。
--restore-mbr=FILENAME
這個選項用來從前面保存的文件中恢復原來的MBR。
--restore-prevmbr
這個選項用來恢復保存在硬盤或者映像文件中第二個扇區的原來的MBR。
正常情況下,原來的MBR只有一個扇區,它被保存在新的GRLDR MBR中的第二個扇區中。你可以用--restore-prevmbr選項來恢復它。然而,如果原來的MBR的長度超過一個扇區,例如,你安裝了別的引導管理軟件,那麼GRLDR MBR就沒有足夠的空間保存原來的MBR。在這種情況下,你應該使用--save-mbr=FILENAME將原來的MBR保存到一個外部文件中,需要時再使用--restore-mbr=FILENAME選項從保存的文件中恢復它。
3. 用法及示例
取自grubinst 1.1的--help。
grubinst [選項] 設備或文件
選項:
--help,-h | 顯示本幫助 |
--pause | 退出前暫停 |
--version | 顯示grubinst版本信息 |
--verbose,-v | 輸出詳細信息 |
--list-part,-l | 列出設備或者文件中的所有分區信息 |
--save=FN,-s=FN | 保存原來的MBR/引導扇區到文件FN中。 |
--restore=FN,-r=FN | 從前面備份的FN中恢復原來的MBR/引導扇區 |
--restore-prevmbr,-r | 恢復保存在設備或者文件第二扇區中的原來的MBR |
--read-only,-t | 只是模擬操作,沒有真正的寫操作(測試模式) |
--no-backup-mbr | 不在第二扇區中備份原來的MBR。 |
--force-backup-mbr | 強製備份原來的MBR到第二扇區(默認選項) |
--mbr-enable-floppy | 在軟驅上搜索grldr(默認選項) |
--mbr-disable-floppy | 禁止搜索軟驅上的grldr |
--mbr-enable-osbr | 當分區表非法時(通常是某操作系統的引導扇區),仍然啟動原來的MBR(默認選項) |
--mbr-disable-osbr | 當分區表非法時(通常是某操作系統的引導扇區),禁止啟動原來的MBR。 |
--duce | (不明白,無法翻譯)disable the feature of unconditional entrance to the command-line. |
--boot-prevmbr-first | 在搜索GRLDR之前嘗試首先啟動原來的MBR |
--boot-prevmbr-last | 在啟動原來的MBR之前先搜索GRLDR(默認選項) |
--preferred-drive=D | 優先啟動磁盤編號, 0 <= D < 255. |
--preferred-partition=P | 優先啟動分區編號, 0 <= P < 255. |
--time-out=T,-t=T | 在啟動原來的MBR之前等待T秒,如果T是0xff,無限等待,默認等待5秒 |
--hot-key=K,-k=K | 如果在啟動原來的MBR之前按下了指定鍵,則啟動GRUB。K的長度為一個字(word),也就是int16/AH=1中斷的AX寄存器值。高位字節是對應按鍵的掃瞄碼,低位字節是ASCII碼。默認按鍵是0x3920,也就是空格鍵。 |
--key-name=S | 指定熱鍵的顯示名 |
--floppy,-f | 如果安裝目標是軟驅,則指定這個選項。 |
--floppy=N | 如果安裝目標是硬盤的某個分區,則指定這個選項。N用來指定分區編號:0, 1,2和3對應主分區,4,5,6,...對應邏輯分區。 |
--sectors-per-track=S | 對--floppy選項指定每磁道扇區數,1 <= S <= 63, 默認是63. |
--heads=H | 對--floppy選項指定磁頭數,1 <= H <= 256, 默認是255. |
--start-sector=B | 對--floppy=N選項指定隱藏扇區數。 |
--total-sectors=C | 對--floppy選項指定總扇區數,默認是0。 |
--lba | 對--floppy選項使用LBA方式。如果軟驅的BIOS支持LBA,你可以指定這個選項。 按規定所有的軟驅BIOS都支持CHS方式,所以最好指定--chs選項。如果既沒指定 --lba也沒指定--chs,則LBA指示字節(一般是啟動扇區第3字節)的值不會被改 變。 |
--chs | 對--floppy選項使用chs方式。如果你的軟驅BIOS不支持LBA方式,你應該指定 --chs選項。我們假定所有的軟驅BIOS都支持CHS方式,所以推薦使用--chs選項。 如果既沒指定--lba也沒指定--chs,則LBA指示字節(一般是啟動扇區第3字節) 的值不會被改變。 |
--install-partition=I, -p=I | 安裝引導扇區到指定硬盤(或硬盤映像)的分區I。 |
--boot-file=F,-b=F | 改變默認啟動文件名(默認是grldr)。 |
--load-seg=S | 改變啟動文件的默認內存加載段(默認是0x2000:0)。 |
--grub2,-2 | 裝載grub2的內核g2ldr而不是grldr。 |
--output,-o | 輸出內置的grldr.mbr(受-b參數的影響)。 |
示例 1: 安裝GRLDR MBR到第一個硬盤
grubinst (hd0)
示例 2: 安裝GRLDR MBR 到磁盤映像文件disk.dsk
grubinst disk.dsk
示例 3: 恢復第一塊硬盤的單扇區MBR
grubinst --restore-prevmbr (hd0)
示例 4: 安裝GRLDR MBR到第一塊硬盤並保存原來的MBR到MBR.sav文件中。
grubinst --save-mbr=MBR.sav (hd0)
示例 5: 從保存的MBR.sav中恢復原來的MBR。
grubinst --restore-mbr=MBR.sav (hd0)
示例 6: 在啟動時10秒內按下空格才加載GRUB
grubinst --boot-prevmbr-first --time-out=10 (hd0)
4. 編譯方法
要編譯grubinst,在Linux/FreeBSD下你需要GCC,在Windows NT/2K/XP下你需要mingw或者Visual C++ 6.0。
mingw:
make -f Makefile.mgw
Visual C++ 6.0:
nmake -f Makefile.vc6
Linux GCC:
make -f Makefile.lnx
FreeBSD GCC:
make -f Makefile.bsd
這裡提供的二進制代碼使用mingw編譯。