天天看點

grub4dos新手指南-2

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