轉載對案時空論壇
Grub4dos新手指南
配置文件menu.lst的基本結構
GRUB4DOS的配置文件和GRUB一樣,都是menu.lst。以下是一個例子:
default 0
title Boot First Partition root (hd0,0) chainloader +1
title Boot Second Partition root (hd0,1) chainloader +1 </pre>
菜單項是由title來指定,該例子中有兩個title,就是說GRUB4DOS器啟動時會顯示兩個菜單項,菜單的標題是title的參數,也就是 Boot First Partition 和 Boot Second Partition。 在第一個title前的命令是全局命令,它們在顯示菜單之前執行。
menu.lst一般放在和啟動文件GRLDR同樣的目錄裡。
基本命令
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)是光盤設備,(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