起源
該項目是由tinybit(不點)於2003年發起的,活躍的開發者主要有tinybit,bean,chenall,yaya,roy和karyonix等。
特色
作為GNU GRUB啟動引導程式的擴充,grub4dos將焦點放在兼容性上。這體現在這幾個方面上:
當系統已經安裝有作業系統和啟動引導程式時,它可以以多種多樣的方式被載入。編寫條目時它可以被DOS作為普通應用程式載入,或者被GNU/Linux使用kexec系統調用作為核心檔案載入。此外,NTLDR、BOOTMGR和其它Linux下的啟動引導程式均可載入之。
當安裝為首先啟動的啟動引導程式時,它能啟動各種各樣的作業系統,其中包括GNU/Linux,Windows,DOS等,並支持各種媒質,如CD-ROM,軟碟,硬碟,隨身碟,PXE等等。
GRUB4DOS 最大的成功之處就是既學習了windows的方便易用,又引入linux的強大功能。
命令索引
blocklist 輸出檔案的塊清單表達法。
boot 引導已載入的作業系統或扇區鏈式載入器。
bootp 通過BOOTP初始化網路設備。
cat 顯示指定檔案的內容。
cdrom 初始化或者停止所有的 ATAPI CDROM 設備。
chainloader 載入扇區鏈式載入器。
cmp 比較兩個檔案, 並且報告兩者之間的差異。
color 改變選單的顏色。
configfile 將指定檔案作為配置檔案予以載入。
debug 打開/關閉調試模式。
default 把 NUM 項選單設為預設值。
device 聲明BIOS驅動器對應的實際物理設備。
dhcp 通過DHCP初試化網路設備。
splashimage 圖形模式下載入背景圖片檔案。
foreground 設定圖形模式下的前景色。
background 設定圖形模式下的背景色。
clear 清屏。
displayapm 顯示 APM BIOS 的相關信息。
displaymem 顯示 GRUB 所判斷到的當前系統的記憶體分布,包括所有物理記憶體區域。
displaymem 顯示諸多檔案的內容。
embed 如果設備是個驅動器, 則將Stage 1.5嵌入到主引導扇區之後。
fallback 如果調用當前的選單項時出現錯誤,則跳轉到 NUM 項後重試。
commandline 進入命令行方式。
find 在所有分區上查找檔案名稱, 並顯示包含該檔案的設備。
fstest 切換檔案系統的試驗模式。
geometry 輸出驅動器的相關信息。
halt 關閉系統(計算機)。
help 顯示內部命令的幫助信息。
hiddenmenu 隱藏選單。
hide 通過在分區類型上置隱藏標誌,隱藏指定分區。
ifconfig 指定 IP 地址, 子網掩碼, 網關和伺服器地址。不帶參數時,將顯示當前的網路配置。
impsprobe 探測 Intel 多處理器規範 1.1/1.4 配置表並使所找到的各處理器啟動進入閉循環。
initrd 載入Linux格式的初始化虛擬盤, 並設定必要的參數。
install 安裝STAGE1到指定設備上,安裝載入STAGE2需要的塊列表到STAGE2上。
ioprobe 偵測指定設備的 I/O 連線埠號。
kernel 嘗試載入主引導影像檔案(Linux核心格式)。
lock 如果用戶未被認證,則終止命令的執行。
makeactive 將 root 設備置為活動分區。
map 對設備進行映射。
md5crypt 產生一個 MD5 格式的密碼。
module 對多重啟動影像, 載入啟動模組檔案 (不處理該檔案的內容, 用戶必須自己確定核心的要求)。
modulenounzip 與 'module' 類似, 但是禁用了自動解壓縮。
pager 沒有參數時,切換頁模式。
partnew 創建一個新的主分區。
parttype 改變指定分區(PARTITION)的分區類型(TYPE)。
password 設定密碼。
pause 終止命令的運行,並給出一段信息。任意鍵按下後,將繼續。
quit 從 GRUB 命令行中退出。
rarp 用 RARP 初始化網路設備。
read 從記憶體的指定位置讀取一個 32-bit 的值,並以十六進制形式顯示出來。
write 寫一個 32 位的值 VAL 到記憶體地址 ADDR。
reboot 重啟系統(計算機)。
fontfile 指定中文字型檔,並切換到中文顯示方式。
root 設定根分區。
rootnoverify 類似`root'指令, 但不測試安裝該分區。
savedefault 將當前項設定為默認的引導項。
serial 初始化一個串口設備。
setkey 改變鍵盤映射關係。
setup 自動安裝GRUB.
terminal 選擇一個終端。
terminfo 指定終端的功能。
testload 以多種不同的方式讀取檔案(由FILE指定)的整個內容,並予以比較,以測試檔案系統的代碼。
testvbe 測試所指定(MODE)的 VBE 模式。
setvbe 為後續的每個kernel命令行設定VBE模式。
tftpserver 指定 TFTP 伺服器的 IP 地址。
timeout 設定在自動啟動預設選單前所等待的秒數。
title 命名選單項。
unhide 通過清除隱藏標誌,解除指定分區(PARTITION)的隱藏。
uppermem 強制指定僅有(KBYTES) KB 的上位記憶體。
vbeprobe 偵測 VBE 的信息。
使用說明
安裝:
下載grubinst.exe,運行將grub4dos安裝到硬碟MBR(master boot record,即硬碟第一扇區,但大於2T的分區類型為GPT(非MBR),新手最好不要安裝到主機硬碟上,可選擇隨身碟等外接設備安裝,然後把解壓的檔案grldr ,error等全都拷貝到啟動盤根目錄,啟動時按F12選擇外設啟動即可。
解壓GRUB4DOS後,將其中的grub.exe檔案放在你的一個FAT32分區中。
修復:
1.使用DOS啟動盤或Windows 98的啟動盤啟動到DOS模式下,然後鍵入:d:\tmp\grub.exe 這裡的d:\tmp是筆者解壓縮GRUB4DOS的目錄。這樣就進入了GRUB環境,可以看到一個 grub>提示符。
2.恢復GRUB引導記錄。在 grub> 提示符下鍵入:
root (hdx,y)
kernel (hdx,y)/boot/yourkernelname ro root=/dev/hdxx
setup (hd0)
上面第一條命令是指定你的/boot分區位置,如果/boot沒有單獨分區,那么就是你的/分區。
第二條命令指定核心位置,具體位置根據自己的實際情況確定。
第三條命令是將GRUB引導記錄寫入MBR。
如果對Linux分區位置不十分清楚,可以使用Tab鍵補全功能來查看確定。執行完setup命令後會看到“succeed!”字樣,此時重啟即可。
3.如果只是想啟動Linux,而不是修復GRUB,那么可以在進入DOS後鍵入下面命令啟動你的Linux系統。
d:\tmp\grub.exe --config-file=(hdx,y)/boot/grub/grub.conf
其中參數同上。
wingrub(GRUB4DOS)的安裝:
在上面的網址中,有下載頁面,裡面說的就是wingrub;
1)、安裝:
1]安裝grub軟體到機器中,點滑鼠應該會吧,就直接按它默認的安裝,下一步、下一步就安裝好了;
2]安裝grub;
打開 wingrub程式,選擇 tools選單,然後點擊 install grub ,出來一個對話框;
這裡面有兩個方法供我們選擇;(個人建議選B)
A) 我們直接點一下Boot From Grub Partion 就行,然後點擊,右邊的下接框;選擇要安裝在哪個分區中,然後按最下邊的[install];
您可能在下拉的選單的對話框中,看到的是 (hd0,0)或者 (hd0,1)等,那就選(hd0,0);如果您只看到(hd0,1),說明您的第一個分區是NTFS的,這也沒有什麼,很正常;如果您看不到什麼下拉框,您就看下面的辦法;
B)您可以點 Systerm Device ,然後在右邊的選擇框中,選C ; 然後再點BOOT FROM BOOT.INI 就好,如果不行就換;在Title 中寫入mygrub ; 然後在 Time OUT 寫上 10;
這樣grub就安裝好了;他的配置檔案在 c:\grub\中 ,配置檔案是c:\grub\menu.lst ,這個配置檔案起到決定性作用;所以我們一定要寫好;語法和Linux中的沒有區別;是一樣的;
A和B還是有點小小的區別,A的方法是開機就能看到所有的在menu.lst中系統;而 B,則必須按一下剛才我們所填寫的mygrub ,然後才能看到在menu.lst所提到的系統;
3、配置 grub ;
其實最簡單的配置方法不是來自於圖形的點滑鼠,初學Linux的弟兄可能會說,我不點滑鼠,我能做什麼?呵。。。。沒錯,但在配置 grub的過程中,最沒有效率的就是點滑鼠;其實我們點了十幾分鐘的滑鼠,也是達到一個目的,就是把grub配置起來。而他的配置檔案就是c:\grub \menu.lst ,我們揮汗如雨的點滑鼠,無非是配置這個檔案;如果不用點滑鼠的辦法來配置,
一分鐘都不到就OK ;只要掌握一點小小的技巧;有何難呢??
在配置 c:\grub\menu.lst的過程中,我們只是再用一下 wingrub的查看分區的界面,其它的只是用記事本就能寫好;c:\grub是隱藏起來的,我們要在遊覽器中加入c:\grub 就
可以看得到;
0]打開wingrub,點tools =》partioinlist (分區列表),這裡能了解到機器的分區,比如我們可能看到的 FAT32的分區是 (hd0,1)等等,事實上,我們的確需要fat32分來來存放下載的Linux光碟映象;我們通過這個能知道我們把光碟ISO存放到(hdX,Y)了,也能知道(hdX,Y)所對應的Windows分區的是哪個,是C,還是D ,還是E ,明白了吧;
1]首先我們找一個FAT 32的分區,把下載下來的ISO直接放到分區的根目錄下面,不要放在任何目錄中;
2]還是在這個分區,建一個目錄,比如是linux,從下來下來的第一張ISO中isolinux中抽取 vmlinuz 和 initrd.img 兩個檔案,放到linux目錄中; 注意只放這兩個檔案,不要放其它的內容,如果放了其它的,可能出現安裝到中途退出的情況;
注意:目錄是名是小寫的;在書寫menu.lst 時,我們要用半角英文,標點之類的全是半角的;title root kernel initrd 全是小寫的英文;切注意大小寫;
3]書寫menu.lst ,怎么書寫,對我來說難嗎?不難!
我們打開menu.lst 後,可能裡面已經有內容了,比如有個 timeout 10 ,如果沒有這行可以自己寫上;沒有什麼難的;
timeout 10 #這是開機等待進入系統的時間,是10秒
title WindowsXP # 我們的機器 中都有 windows ,這個就是用來啟動windows的;總共有四行,不要弄錯了,可以照抄到你的配置檔案中;
root (hd0,0)
makeactive
chainloader +1
簡單的 menu.lst 配置 linux 引導說明;通過menu.lst ,我們可以配置 Linux的啟動和引導;不只是安裝的引導,也可以引導已經安裝好的Linux系統;語法結構有下的四條,舉例如下:總共
有兩個書寫格式,任選其一;
格式一:最簡單:
代碼:
title redflag5
root (hd0,1)
kernel (hd0,1)/linux/vmlinuz
initrd (hd0,1)/linux/initrd.img
title 這行就是我們在開機時,所看到的選單 ,顯示的就是 redflag5 ,要加在 title 的後面,title是必須保留的,是grub的語法的標籤 ,我們可以在title 後面寫我們想要加的東西,這是自己可
以定義的,比如 title redflag5也是可以的;
root (hd0,1) 這行能用 以root開頭,然後加一個空格,至於您把vmlinuz和initrd.img 放在哪個分區了,用打開 wingrub,點tools =》partioinlist (分區列表) 中查到
kernel 這行,以kernel 開頭,然後加一個空格,主要說的是vmlinuz檔案放在哪個分區,哪個目錄了;除了kernel 後面有一個空格外,在這行中,其它地方沒有空格;這行說的是我們用放在(hd0,1)分區下的linux目錄中的kernel 來核心來啟動;
initrd 這行, 和 kernel 那行類似;沒有什麼難的,自己的檔案放在哪個分區,哪個目錄了,自己最知道吧;
格式二:比較麻煩一點:理解著看吧;
代碼:
title redflag5
root (hd0,1)
kernel /linux/vmlinuz ro root=/dev/hda6
initrd /linux/initrd.img
title 這行就是我們在開機時,所看到的選單 ,顯示的就是 redflag5 ,要加在 title 的後面,title是必須保留的,是grub的語法的標籤 ,我們可以在title 後面寫我們想要加的東西,這是自己可以定義的,比如 title fc4setup也是可以的;
root 這行,在本例中是 root (hd0,1),這行就是我們打開 wingrub,點tools =》partioinlist (分區列表) 中查到的;我們通過這個知道我們把解壓出來的 vmlinuz和initrd.img 所處的分區和路徑;