Grub4dos 新手指南
一、GRUB4DOS的配置檔案
Grub4dos 有三個檔案,grldr、grldr.mbr和menu.lst,配置檔案是menu.lst,和GRUB一樣。該檔案一般放在和啟動檔案GRLDR同樣的目錄裡。其結構舉個簡單栗子:
default 0
title Boot First Partition
root (hd0,0)
chainloader +1
title Boot Second Partition
root (hd0,1)
chainloader +1
title來指定菜單項,該例子中有兩個title,就是說GRUB4DOS啟動時會顯示兩個菜單,title的參數就是菜單的标題,也就是 Boot First Partition 和 Boot Second Partition。在第一個title前的指令是全局指令,它們在顯示菜單之前執行。
二、Grub4dos 基本指令
Help Default Timeout Root
用來指定根裝置,例子: root (hd0,0)
Rootnoverify
該指令也可以用來指定根裝置。root在設定根裝置前,先測試一下該分區的檔案系統是否可以識别,而rootnoverify則省略這一測試。 rootnoverify (hd0,0)
Chainloader
把啟動扇區的内容裝入記憶體,參數+1指的是把分區的第一個扇區,例子:
chainloader +1
boot
啟動作業系統。
在使用該指令前,必須用kernel或者chainloader把系統核心或者啟動扇區/啟動檔案裝入記憶體。例子: boot
在配置檔案中不需要使用這個指令。這是因為GRUB在執行了菜單項的所有指令後會自動加上boot。該指令一般在指令行界面裡使用。
裝置名字
在GRUB中,硬碟裝置用以下的方法來命名:
(hdm) m是硬碟的序号。序号0相對于BIOS的第一隻硬碟。
硬碟上的分區用以下的方法來命名:
(hdm,n) n是硬碟m裡分區的序号。主分區最多有4個,其序号為0-3,擴充分區的序号從4開始。例子:
硬碟0上的第一個主分區: <pre>(hd0,0)</pre>
硬碟1上的第一個擴充分區: <pre>(hd1,4)</pre>
裝置也可以用相應的BIOS裝置号來表示。例如,第一隻硬碟裝置的裝置号是0x80,是以,以下的表示是等價的: (hd0,0), (0x80,0), (128,0)。
另外,對于一些檔案系統來說,例如FreeBSD中使用的ffs,或者是Solaris中使用的ufs,在分區中還繼續劃分為子分區。子分區的表示是在分區表示的基礎上加上從a開始計算的子分區序号。例如:
硬碟0上的第一個主分區裡的第一個子分區: <pre>(hd0,0,a)</pre>
軟碟裝置用以下的方法來命名:
(fdm) m是軟碟的序号。序号0相對于BIOS的第一隻軟碟。軟碟裝置後面同樣可以加上分區或者子分區的序号。
GRUB還有其它一些裝置,比如說(cd)是CD光牒裝置,(nd)是網絡裝置,等等。
檔案名字
GRUB的檔案名字是在裝置名字的基礎上加上檔案的路徑,例子:硬碟0上第一個主分區根目錄裡的aa.img檔案: <pre>(hd0,0)/aa.img</pre>
軟碟0上boot目錄裡的aa.img檔案: <pre>(fd0)/boot/aa.img</pre>
注意:目錄的分隔符是 / ,而不是Windows/DOS下常用的 \ 。
另外,還可以用扇區的位移和數量來指定資料,比如:
<pre>(hd0,0)0+100,200+1,300+300</pre>
表示硬碟0上第一個主分區裡,從扇區0起的100個扇區,然後是從扇區200起的1個扇區,最後是從扇區300起的300個扇區。當位移為零時,可以省略不寫,是以,(hd0,0)+1 表示的是硬碟0上第一個主分區裡從扇區0起的1個扇區,也就是分區的第一個扇區。
GRUB中紀錄了一個根裝置,它由root指令來指定,例如:
<pre>root (hd0,0)</pre>
根裝置上的檔案可以省略裝置名,例如,使用了以上的root指令後,檔案名 +1 就等同于 (hd0,0)+1。
注意:在GRUB4DOS的擴充中,map指令中使用的檔案名的意義和以上所說的有所不同。在map指令裡,(hd0,0)+1表示的不是硬碟0上第一個主分區的第一個扇區,而是整個分區。
啟動作業系統
啟動一般系統
一般來說,作業系統會在其所在分區的第一個扇區裡放入啟動代碼。是以,用以下的一組指令一般可以啟動硬碟0第一主分區上的作業系統:
rootnoverify (hd0,0) chainloader +1 boot
對于不同的分區,隻要修改裝置名(hd0,0)就可以了。
注意:大部分的作業系統需要在第一隻硬碟的主分區裡才能正常啟動。當把該組指令作為menu.lst裡某一菜單項的内容時,最後的指令boot可以省略。該方法是通用的,它可以用來啟動以下提到的系統,隻要分區的第一個扇區中存在啟動代碼。
啟動DOS/Windows 95/98/Me
在GRUB4DOS中,chainloader指令可以裝載DOS/Windows 95/98/Me中的io.sys。是以,可以使用類似于以下的一組指令來啟動這些系統:
rootnoverify (hd0,0) chainloader (hd0,0)/io.sys boot
啟動Windows NT/2000/XP/2003/Vista
在GRUB4DOS中,chainloader指令也可以裝載Windows NT/2000/XP/2003中的ntldr和Windows Vista中的bootmanager。是以,可以使用類似于以下的一組指令來啟動這些系統:
啟動Windows NT/2000/XP/2003: rootnoverify (hd0,0) chainloader (hd0,0)/ntldr
boot
啟動Windows Vista: rootnoverify (hd0,0) chainloader (hd0,0)/bootmanager boot
啟動Linux
可以用kernel指令裝載Linux核心:
rootnoverify (hd0,0) kernel (hd0,0)/vmlinuz boot
在核心(hd0,0)/vmlinuz後可以加上啟動的參數。當啟動Linux核心時,可以使initrd指令來裝載初始的記憶體盤。
rootnoverify (hd0,0) kernel (hd0,0)/vmlinuz initrd (hd0,0)/initrd boot
注意:chainloader用于裝載啟動扇區和特定的啟動檔案如io.sys和ntldr,而kernel用于裝載Linux核心和符合其标準的啟動檔案。在一組啟動指令中,兩者不能同時使用。
修改界面的顔色
GRUB界面的顔色可以用color指令來指定。color中指定了兩組顔色,第一組是正常文本的顔色,第二組是加亮文本(目前選擇的菜單項)的顔色。對應于每組顔色,又需要指定兩種顔色。第一種是前景的顔色,第二種是背景的顔色。是以,在color總共需要指定四種顔色,分别是,正常文本前景,正常文本背景,加亮文本前景和加亮文本背景。
顔色代碼:
black (黑色) red (紅色) green (綠色) brown (棕色) blue (藍色) magenta (紫色) cyan (青色)
light-gray (灰色) dark-gray (暗灰) light-red (亮紅) light-green (亮綠) yellow (黃色) light-blue (亮藍) light-magenta (亮紫) light-cyan (亮青) white (白色)
前景色可以使用全部16種顔色,而背景色隻能使用前面8種顔色。 例子:
color cyan/blue white/magenta
正常文本前景: cyan (青色) 正常文本背景: blue (藍色) 加亮文本前景: white (白色) 加亮文本背景: magenta (紫色)
color指令一般是作為全局指令,在第一個title前使用。
使用背景圖檔
可以用splashimage指令來加載背景圖檔:
spashimage (hd0,0)/spash.gz
圖檔必須是640x480,14色的XPM格式,可以用gzip來進行壓縮。使用了該指令後,GRUB啟動時将進入圖形模式。這時,color指令指定的文本顔色将會無效。圖形模式下顔色的設定應該使用foreground指令:
foreground ffff00
以上指令設定字型的顔色。顔色用RGB值來表示,ffff00是黃色。如果沒有使用foreground指令,預設的文本顔色是白色。
splashimage和foreground指令一般在第一個title前使用。
使用中文界面
首先,必須使用支援中文的版本。其次,要正常顯示中文菜單,需要使用fontfile指令裝載中文字型:
fontfile (hd0,0)/fonts.gz
fonts.gz是字型檔案,使用了gzip壓縮。fontfile指令可以和splashimage,foreground一起使用。例如:
splashimage (hd0,0)/splash.gz foreground ffff00 fontfile (hd0,0)/fonts.gz
title 啟動第一個分區
root (hd0,0)
chainloader +1
title 啟動第二個分區
root (hd0,1)
chainloader +1