線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1528
推到 Plurk!
推到 Facebook!

比LILO更強勁的多作業系統引導程式GNU GRUB

 
conundrum
尊榮會員


發表:893
回覆:1272
積分:643
註冊:2004-01-06

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-01-27 19:13:40 IP:61.221.xxx.xxx 未訂閱
http://www.linuxdby.com/articlesdisplay.php?s=f9d7e61d6ca6282e06820920d1073ae5&newsid=129    比LILO更強勁的多作業系統引導程式GNU GRUB 
多引導是目前大家討論的比較熱門的一個話題,隨著LINUX和INTERNET的熱潮席捲全世界,個人電腦已經不再是
M$的天下,對於作業系統我們擁有了更多的選擇機會,FREEBSD,LINUX....一個硬碟上安裝兩到三個作業系統已經非
常普遍,但是由於各個作業系統的引導過程機制不同,使我們在安裝多系統時遇到了不少問題。我們面臨著選擇什l
樣的多引導程式的問題。
  LILO的確是一個選擇,現在很多人也都是採用LILO解決多引導的問題。但是LILO並不易於使用,仍然不夠靈
活,而且從技術角度而言LILO仍然只是一個linux loader,它並不直接支援其他的作業系統,LILO對除LINUX外其
他作業系統所做的只是將其引導塊裝入,而並不是將這些作業系統的內核裝入,這樣做的危險之處在於如果某個作業
系統分區的引導塊不小心被破壞了,那就可能導致這整個系統無法進入,甚至不得不重新安裝,GRUB的推出就是企
圖改善這種一塊硬碟上存在多個引導塊的混亂局面。
  GNU針對多引導的問題推出了一個更加靈活和強大的多引導程式GRUB,提出了將引導程式和作業系統分離的解
決方法,當然這主要是針對自由作業系統,但是GRUB仍然能夠通過chainload引導其他非自由的作業系統。如果你僅
僅安裝LINUX和WINDOWS的話,的確,LILO已經足夠使用,但是GRUB強於LILO之處在於還對GNU Mach,FreeBSD, 
NetBSD和OpenBSD的直接支援,而且更加靈活。GRUB能夠直接引導上述的幾個作業系統,裝入內核,不需要那些
各自d政的引導塊, 這樣我們只要擁有GRUB,在安裝上述那些作業系統時就可以更加放心,不用再被什l引導塊被覆
蓋的問題大傷腦筋。GRUB靈活之處還在於提供了一個引導時功能強大的命令行模式,我們可以舉一個例子來說明這
樣做給我們帶來的靈活性:你只需要做一張帶GRUB的引導軟碟,不需要任何配置,你就可以用這張軟碟引導,然後
可以通過幾條簡單指令妍吤艩N一台電腦上的絕大部分作業系統。顯然這種靈活信是任何其他引導軟體無法比擬的。      首先,先大概瞭解一下電腦作業系統的引導過程:
  菮狻P知,電腦的最初妍坌O由BIOS控制的,在對一些硬體(如:記憶體、鍵盤等)初始化之後,它會試圖載入
硬碟的主引導記錄(MBR)或軟碟的引導磁區。MBR可通過兩種方式運行,其一是定位到活動分區並載入相應的引導
磁區,然後將控制權移給此引導磁區,由引導磁區完成該分區內作業系統的基本元件的載入;其二是直接從一指定分
區中載入資訊,並通過它裝入任一分區的作業系統,諸如LILO、OS/2 boot loader等引導載入程式都可以配置成這種方
式。 
  和LILO一樣,GRUB能夠識別文件系統,GRBU能夠理解內核的可執行文件格式,這樣就可以不用關心內核文
件的磁片定位,而只需通過文件系統便可以找到內核文件,GRUB比LILO能夠理解更多的文件系統類型,更多內核
可執行文件格式,這樣它就能夠直接定位和引導不同作業系統的內核。
  GRBU最早是在1995年由Erich Boleyn編寫的,其最初目的是d了能夠從Utah Mach4微內核系統(即是現在的GNU 
Mach)中妍吨瑔乇NU Hurd作業系統。現在GRUB的基本目的是用於引導符合Multiboot標準的作業系統,Multiboot
是一個用於定義符合多引導標準的作業系統規範,這個標準十分全面,但是目前支援它的作業系統仍不多,主要是GNU 
Hurd,所以現在仍不能達到GRUB所設想的作業系統引導介面大一統的局面,雖然這一天似乎很遙遠,但是我們現在
仍然可以享受GRUB給我們帶來的強大功能和高度的靈活性。      下面我們來看看GRUB的特點和安裝使用方法:     一. GRUB的技術特點:
  1. 支援多可執行文件格式
   GRUB支援各種a.out格式和ELF格式。 
  2. 支援不符合Multiboot標準的內核
   GRUB能夠直接支援多種並不符合Multiboot標準的自由作業系統內核(主要是FreeBSD,NetBSD,OpenBSD和 
linux)。也能通過chainload間接引導非開放的其他作業系統。
  3. 支援作業系統模組裝載。
  4. 提供文本格式可手工修改的配置文件。
  5. 功能表介面
  6. 靈活的命令行介面
  7. 多文件系統識別
  能夠透明地識別多種文件系統,現在能夠識別的文件系統有BSD FFS,DOS FAT16,FAT32,Minix fs和Linux ext2fs.
這個範圍仍然在擴展。
  8. 支援壓縮文件的解壓縮。
   能夠解壓縮被gzip壓縮的文件,並且這個識別和解壓過程是自動的和對用戶透明的,這個功能大大地減少了文
件的大小,減少了load的時間,這個功能對於軟碟上的系統尤其有用。
   可能有些內核模組在裝載時就要求是壓縮狀態,這時解壓此模組可能會畫蛇添足,所以GRUB提供了另一個不
進行解壓縮的模組裝載命令。
  9. 可以讀取任何已安裝的設備上的資料
   支援讀取軟碟,硬碟上的資料,不依賴於根設備上任何的設置。
  10. 和磁片定位的表示方法無關。
  11. 能夠使用BIOS所檢測到的所有RAM.
   GRUB通常能夠找到PC兼容機上的全部RAM,它採用一種先進的BIOS查詢技術來找到所有的記憶體空間。
  12. 支援硬碟的LBA模式
   GRUB通過支援LBA模式,突破1024柱面的限制,能夠訪問8GB以外的全部硬碟空間。
  13. 支援網路
   雖然GRUB是一個基於磁片的引導程式,但是它也支援網路功能,你可以通過TFTP協定從網路上得到作業系
統映象文件並引導。      GRUB的後繼版本可能會包括一個內置的可編程語言來支援各種內核的引導參數,這還只是一個作業系統引導器
嗎?;),並且計劃加入對非PC體系結構的支援。    二. 如何在LINUX下安裝和使用GRUB    1. 下載並安裝GRUB包:
  你可以到得到GRUB,然後:
  # zcat grub-0.5.94.tar.gz | tar xvf -
  會生成一個目錄grub-0.5.94,再:
  # cd grub-0.5.94
  # ./configure
  # make install
  這樣GRUB就安裝好了,下面你需要在你的硬碟或者軟碟引導區上安裝GRUB引導代碼。
  a. 製作GRUB引導軟碟:
  # cd /boot/grub
  # dd if=stage1 of=/dev/fd0 bs=512 count=1
  # dd if=stage2 of=/dev/fd0 bs=512 seek=1
  b. 製作GRUB硬碟引導:
  重妍吤哆RUB引導軟碟引導,或者你不想重妍吨]可以執行/usr/sbin/grub。兩種情況都會進入命令行介面。 然
後,我們首先要設置GRUB的“根設備”,也就是告訴GRUB安裝所在的分區:
  grub> root (hd0,0)
  這裏牽涉到GRUB的設備命名規則,將在下面介紹,此處(hd0,0)是指第一塊硬碟的第一個分區。
  如果你不能夠確定安裝GRUB所在的分區號的話,可以通過find指令查找:
  grub> find /boot/grub/stage1
  GRUB將會查找文件/boot/grub/stage1並顯示包含這個文件的設備名,當然就是我們安裝GRUB所在的分區。下面
就可以寫引導記錄了:
  grub> setup (hd0)
  這條命令將會在第一塊硬碟的MBR安裝GRUB引導,如果你不想在MBR安裝GRUB,而是希望將GRUB安裝
在分區的引導磁區的話,你可以用下面指令指定安裝設備:
  grub> setup (hd0,0)
  這將會在第一塊硬碟的第一個分區的引導磁區安裝GRUB。
  OK,現在你就可以重新妍吤唋RUB引導你的系統。     2. GRUB的設備命名規則:
  首先GRUB對設備的命名必須包含在小括弧內,GRUB不區分IDE硬碟和SCSI硬碟,統一使用hdx,其中x指定
BIOS中硬碟的編號,從零開始計數,而且通常電腦內的IDE硬碟編號在SCSI硬碟前。GRUB用fdx指定軟碟設備,x
是軟碟驅動器號。具體命名規則如下:
  (fd0):第一軟盤機,GRUB還可以引導軟碟上的作業系統:)
  (hd0,1): 第一塊硬碟的第二個分區。
  (hd1,4): 第二塊硬碟的第一個擴展分區,擴展的分區是從4開始編號的。
  (hd0,2,a): 專用於FreeBSD,FreeBSD有一個slice概念,把一個分區進一步分d幾個slice,此處指明是第一塊硬碟的
第三個分區中的slice a。你也可以用(hd0,a),這樣GRUB就會在第一塊硬碟上找到第一個FreeBSD分區的slice a。
  讓我們再來看看GRUB對於磁片文件的命名方法:
  (hd0,1)/vmlinuz,很簡單只要指定分區號和文件的絕對路徑名就可以了。    3. 現在來看看如何用GRUB引導我們的多作業系統,用GRUB引導後可以進入命令行模式或者功能表模式,你可以通
過靈活的命令行模式選擇引導各個分區的作業系統,指定引導參數。
  GRUB支援三種引導方法,第一種是直接引導作業系統內核,第二種是通過chainload進行間接引導。
  對於GRUB能夠支援的LINUX,FreeBSD,OpenBSD,NetBSD,GUN Mach可以通過直接引導完成,不需要其他的引
導磁區了,但是對於GRUB不直接支援的作業系統,需要用第二種方法chainload來完成。另外GRUB還支援網路引
導,我們分別來看看這幾種引導方法:
  (a) 直接引導:
  通常步驟如下:
  1.用root命令設置包含作業系統內核的根設備
  2.用kernel命令裝載內核映象文件,如果這個內核引導的時候有參數的話,可以直接將參數加在內核檔案名的後面。      3.用module或modulenounzip裝載內核模組。
  4.boot開始引導。      (b) chainload引導:
  1.首先設置GRUB的根設備,用:
   grub> rootnoverify (hdx,y)
  2.開始引導
   grub> chainloader +1
   此處'+1'是指示GRUB讀入分區的第一個磁區的引導記錄。
  3.執行boot開始引導
  以上是一般的chainloader方式,對於DOS和WINDOWS,可以簡單地用兩條指令進行引導:
  chainloader (hdx,y)+1,然後boot,其中x,y用來指明所在分區號。      (c) 從網路引導:
  d了使GRUB能夠支援從網路引導,你需要在編譯時打開網路支援選項,關於這個你可以參考原始檔案目錄裏的
`netboot/README.netbootd了從網路引導,你首先要在網路設置兩個服務,首先是動態IP配置服務,可以是BOOTP,
DHCP或RARP伺服器,另一個是TFTP服務。
  然後分別針對不同的伺服器BOOTP,DHCP或RARP(三個選一個)運行bootp,dhcp,rarp。如果一切設置無誤的
話GRUB就會給出IP,IP netmask和TFTP伺服器的IP和閘道的IP位址。最後,從網上得到作業系統的映象文件,網
路的設備名稱是(nd).如下例:
  grub> bootp
  Probing... [NE*000]
  NE2000 base ...
  Address: 192.168.110.23 Netmask: 255.255.255.0
  Server: 192.168.110.14 Gateway: 192.168.110.1      grub> root (nd)
  grub> kernel /tftproot/gnumach.gz root=sd0s1
  grub> module /tftproot/serverboot.gz
  grub> boot    4. 多作業系統引導實例:
GNU/Hurd
--------
因dGNU/Hurd是符合Multiboot規範的作業系統,所以非常容易引導:
grub> root (hd0,2)
如果你不記得Hurd所在的分區號的話,可以用find /boot/gnumach查找。
grub> kernel /boot/gnumach root=hd0s1
grub> module /boot/serverboot
grub> boot    GNU/Linux
---------
grub> root (hd1,3)
grub> kernel /vmlinuz root=/dev/hda1
如果你需要指定內核妍夆捊⑩爾隉A可以直接加到命令的最後面如:
grub> kernel /vmlinuz root=/dev/hda1 vga=ext
如果你使用initrd的話,在kernel命令之後執行:
grub> initrd /initrd
grub> boot    FreeBSD
-------
GRUB能夠直接裝載.ELF和a.out兩種格式的內核,但是由於FreeBSD的內核引導介面有時有較大的變動,
所以,對FreeBSD最安全的引導方法是引導/boot/loader
grub> root (hd0,a)
grub> kernel /boot/loader
grub> boot    NetBSD,OpenBSD,NetBSD
-------------------------------------
這三種系統的引導指令序列一樣,如下:
  1. 'root'設置根設備.
  2. `kernel'裝載內核.
  3. `boot'引導.    DOS/Windows
-----------
grub> rootnoverify (hd0,0)
grub> chainloader +1
grub> boot    SCO UnixWare
------------
grub> rootnoverify (hd1,0)
grub> chainloader --force +1
grub> makeactive //注意這條指令將設置UnixWare分區d活動分區,這樣要求你的GRUB安裝在MBR,否則下次妍坋尐r
將直接進入UnixWare而不會進入GRUB grub> boot      當然,如果每次引導都需要敲入命令的話實在是太麻煩了,因此,類似於LILO,GRUB提供了一個功能表方式,
你需要一個配置文件將這些命令放入配置文件中就可以實現功能表方式的多引導,當然在功能表方式下你可以切換到
命令模式下。GRUB引導時查找/boot/grub/menu.lst,如果存在這個文件的話,就根據這個文件生成一個引導功能表,
menu.lst文件格式很簡單,如下示例:    5. 功能表設置文件格式
# 等待用戶選擇功能表項的時間(以秒計),超時則引導默認的選項
timeout 30    # 默認選項,第一項
default 0    # 如果第一項出錯,則妍吨U面的後備選項
fallback 1    # 引導 GNU Hurd,其中title就是功能表中顯示的提示字串
title GNU/Hurd
root (hd0,0)
kernel /boot/gnumach.gz root=hd0s1
module /boot/serverboot.gz    # 引導 Linux
title GNU/Linux
root (hd1,0)
kernel /vmlinuz root=/dev/hdb1    # 引導Mach (kernel映象文件放在軟碟)
title Utah Mach4 multiboot
root (hd0,2)
pause Insert the diskette now!!
kernel (fd0)/boot/kernel root=hd0s3
module (fd0)/boot/bootstrap    # 引導 FreeBSD
title FreeBSD 3.4
root (hd0,2,a)
kernel /boot/loader    # 引導 OS/2
title OS/2
root (hd0,1)
makeactive
chainloader +1    # 引導 Windows NT 或者 Windows95,98
title Windows NT / Windows 95,98 boot menu
rootnoverify (hd0,0)
chainloader +1    # 安裝 GRUB 到硬碟MBR
title Install GRUB into the hard disk
root (hd0,0)
setup (hd0)    # 改變顯示功能表的岫槙r
title Change the colors
color light-green/brown blink-red/blue    6. GRUB的用戶介面介紹
  GRUB的用戶介面有三種:命令行模式,功能表模式和功能表編輯模式
  (a) 命令行模式:
  進入命令行模式後GRUB會給出一個命令提示符`grub>`,此時就可以鍵入命令,按回車執行。此模式下可執行的
命令是在menu.lst中可執行的命令的一個子集。此模式下允許類似於Bash shell的命令行編輯功能:
或<右箭頭鍵> 游標右移一個字元    或<左箭頭鍵> 游標左移一個字元     到這一行的開頭     到行尾     刪除游標處的字元     刪除游標左邊的字元     刪除游標右邊的所有字元(包括游標處的字元)     刪除游標左邊的所有字元(包括游標處的字元)     恢復上次刪除的字串到游標位置    或<向上鍵> 歷史記錄中的上一條命令    或<向下鍵> 歷史記錄中的下一條命令      在命令行模式下鍵有補全命令的功能,如果你敲入了命令的前一部分,鍵入系統將列出所有可能以你給
出的字串開頭的命令。如果你給出了命令,在命令參數的位置按下鍵,系統將給出這條命令的可能的參數列表,
具體的可用命令集將在後面給出。      (b) 功能表模式
  當存在文件/boot/grub/menu.lst文件時系統妍呇菾妎i入此模式。功能表模式下用戶只需要用上下箭頭來選擇他所
想妍坁漕t統或者執行某個命令塊,功能表的定義在menu.lst文件中,你也可以從功能表模式按鍵進入命令行模式,
並且可以按鍵從命令行模式返回功能表模式。功能表模式下按鍵將進入功能表編輯模式。      (c) 功能表編輯模式
  功能表編輯模式用來對功能表項進行編輯改變,其介面和功能表模式的介面十分類似,不同的是功能表中顯示的
是對應某個功能表項的命令列表。如果在編輯模式下按下,則取消所有當前對功能表的編輯並回到功能表模式
下。在編輯模式下選中一個命令行,就可以對這條指令進行修改,修改完畢後按下,GRUB將提示你確認並完
成修改。如果你想在當前命令列表中增加一條命令,按在當前命令的下面增加一條指令,按在當前命令前處增
加一條指令。按刪除一條指令。    三. 可用的命令列表      下面是GRUB的可用命令列表:      僅用於功能表的命令(不包括功能表項內部的妍囥R令)
==========================================    default num
設置功能表中的默認選項dnum(默認d0,即第一個選項),超時將妍妘o個選項    fallback num
如果默認功能表項妍吤2恁A將妍妘o個num後援選項。    password passwd new-config-file
關閉命令行模式和功能表編輯模式,要求輸入口令,如果口令輸入正確,將使用new-config-file
作d新的配置文件代替menu.lst,並繼續引導。    timeout sec
設置超時,將在sec秒後自動妍岍q認選項。    title name ...
開始一個新的功能表項,並以title後的字串作d顯示的功能表名。    在功能表(不包括功能表項內部的命令)和命令行方式下都可用的命令
======================================================    bootp
以BOOTP協定初始化網路設備    color normal [highlight]
  改變功能表的岫漶Anormal是用於指定功能表中非當前選項的行的岫漶Ahighlight是用於指定當前功能表選項的
岫漶C如果不指定highlight,GRUB將使用normal的反色來作dhighlight岫漶C指定岫滫漁璁′O“前景色/背景色”,
前景色和背景色的可選列表如下:
* black
* blue
* green
* cyan
* red
* magenta
* brown
* light-gray
下面的岫漭u能用於背景色
* dark-gray
* light-blue
* light-green
* light-cyan
* light-red
* light-magenta
* yellow
* white
你可以在前景色前加上字首"blink-",{生閃爍效果,你可以在menu.lst中加上下面這個選項來改變岫漅蘆G: 
title OS-BS like
color magenta/blue black/magenta    device drive file
在GRUB命令行中,把BIOS中的一個驅動器drive映射到一個文件file。你可以用這條命令創建一個磁片映象或者當
GRUB不能真確地判斷驅動器時進行糾正。如下 
grub> device (fd0) /floppy-image
grub> device (hd0) /dev/sd0
這條命令只能在命令行方式下使用,;) 是個例外。    dhcp
用DHCP協定初始化網路設備。目前而言,這條指令其實就是bootp的別名,效果和bootp一樣。    hide partition
這條指令僅僅對DOS和WINDOWS有用,當在一個硬碟上存在多個DOS/WIN的主分區時,有時需要這條指令隱藏其
中的一個或幾個分區,即在分區表中設置“隱藏”位。    rarp
用RARP協定初始化網路設備。    setkey to_key from_key
改變鍵盤的映射表,將from_key映射到to_key,注意這條指令並不是交換鍵映射,如果你要交換兩個鍵的映射,需要用
兩次setkey指令,如下:
grub> setkey capslock control
grub> setkey control capslock    其中的鍵必須是字母,數位或者下面的一些代表某一鍵的字串: 
`escape', `exclam', `at', `numbersign', `dollar', `percent',
`caret', `ampersand', `asterisk', `parenleft', `parenright',
`minus', `underscore', `equal', `plus', `backspace', `tab',
`bracketleft', `braceleft', `bracketright', `braceright', `enter',
`control', `semicolon', `colon', `quote', `doublequote',
`backquote', `tilde', `shift', `backslash', `bar', `comma',
`less', `period', `greater', `slash', `question', `alt', `space',
`capslock', `FX' (`X' is a digit), and `delete'. 
下面給出了它們和鍵盤上的鍵的對應關係:
`exclam'=`!'
`at'=`@'
`numbersign'=`#'
`dollar'=`$'
`percent'=`%'
`caret'=`^'
`ampersand'=`&'
`asterisk'=`*'
`parenleft'=`('
`parenright'=`)'
`minus'=`-'
`underscore'=`_'
`equal'=`='
`plus'=`+'
`bracketleft'=`['
`braceleft'=`{'
`bracketright'=`}'
`braceright'=`]'
`semicolon'=`;'
`colon'=`:'
`quote'=`''
`doublequote'=`"'
`backquote'=``'
`tilde'=`~'
`backslash'=`'
`bar'=`|'
`comma'=`,'
`less'=`<'
`period'=`.'
`greater'=`>'
`slash'=`/'
`question'=`?'
`space'=` '    unhide partition
僅僅對DOS/WIN分區有效,清除分區表中的“隱藏”位。    僅用於命令行方式或者功能表項內部的命令
=======================================    blocklist file
顯示文件file在所占磁片塊的列表。    boot
僅在命令行模式下需要,當參數都設定完成後,用這條指令妍囮@業系統     cat file
顯示文件file的內容,可以用來得到某個作業系統的根文件系統所在的分區,如下:
grub> cat /etc/fstab    chainloader [`--force'] file
把file裝入記憶體進行chainload,除了能夠通過文件系統得到文件外,這條指令也可以用磁片塊列表的方式讀入磁片中
的資料塊,如'+1`指定從當前分區讀出第一個磁區進行引導。如果指定了`--force`參數,則無論文件是否有合法的簽名
都強迫讀入,當你在引導SCO UnixWare時需要用這個參數。    cmp file1 file2
比較文件的內容,如果文件大小不一致,則輸出兩個文件的大小,如下:
Differ in size: 0x1234 [foo], 0x4321 [bar]
如果兩個文件的大小一致但是在某個位置上的位元組不同,則列印出不同的位元組和他們的位移:
Differ at the offset 777: 0xbe [foo], 0xef [bar]
如果兩個文件完全一致,則什l都不輸出。    configfile FILE
將FILE作d配置文件替代menu.lst。    embed stage1_5 device
如果device是一個磁片設備的話,將Stage1_5裝入緊靠MBR的磁區內。如果device是一個FFS文件系統分區的話,
則將Stage1_5裝入此分區的第一磁區。如果裝入成功的話,輸出寫入的磁區數。    displaymem
顯示出系統所有記憶體的位址空間分佈圖。    find filename
在所有的分區中尋找指定的文件filename,輸出所有包含這個文件的分區名。參數filename應該給出絕對路徑。    fstest
妍吨憟顙t統測試模式。打開這個模式後,每當有讀設備請求時,輸出向底層常式讀請求的參數和所有讀出的資料。
輸出格式如下:
先是由高層程式發出的分區內的讀請求,輸出:<分區內的磁區偏移,偏移(位元組數),長度(位元組數)>之後由底層程
式發出的磁區讀請求,輸出:[磁片絕對磁區偏移] 可以用install或者testload命令關閉文件系統測試模式。    geometry drive [cylinder head sector [total_sector]]
輸出驅動器drive的資訊。    help [pattern ...]
在線命令幫助,列出符合pattern的命令列表,如果不給出參數,則將顯示所有的命令列表。    impsprobe
檢測Intel多處理器,妍囧簸t置找到的所有CPU。    initrd file ...
dLinux格式的妍坌M象裝載初始化的ramdisk,並且在記憶體中的Linux setup area中設置適當的參數。    install stage1_file [`d'] dest_dev stage2_file [addr] [`p'] [config_file] [real_config_file]
這是用來完全安裝GRUB妍妎籅漫R令,一般很少用到。    ioprobe drive
探測驅動器drive所使用的I/O口,這條命令將會列出所有dirve使用的I/O口。    kernel file ...
裝載內核映象文件(如符合Multiboot的a.out,ELF,Linux zImage或bzImage,FreeBSD a.out,NetBSD 
a.out等等)。檔案名file後可跟內核妍坋肊珨搨n的參數。如果使用了這條指令所有以前裝載的模組都要重新裝載。    makeactive
使當前的分區成d活躍分區,這條指令的物件只能是PC上的主分區,不能是擴展分區。    map to_drive from_drive
映射驅動器from_drive到to_drive。這條指令當你在chainload一些作業系統的時候可能是必須的,這些作業系統如果
不是在第一個硬碟上可能不能正常妍吽A所以需要進行映射。如下:
grub> map (hd0) (hd1)
grub> map (hd1) (hd0)    module file ...
對於符合Multiboot規範的作業系統可以用這條指令來裝載模組文件file,file後可以跟這個module所需要的參數。注
意,必須先裝載內核,再裝載模組,否則裝載的模組無效。    modulenounzip file ...
同module命令幾乎一樣,唯一的區別是不對module文件進行自動解壓。    pause message ...
輸出字串message,等待用戶按任意鍵繼續。你可以用<^G>(ASCII碼007)使PC喇叭發聲提醒用戶注意。    quit
退出GRUB shell,GRUB shell類似于妍坋阞漫R令行模式,只是它是在用戶妍囧t統後執行/sbin/grub才
進入,兩者差別不大。    read addr
從記憶體的位址addr處讀出32位的值並以十六進位顯示出來。    root device [hdbias]
將當前根設備設ddevice,並且試圖mount這個根設備得到分區大小。hdbias參數是用來告訴BSD內核在當前分區所
在磁片的前面還有多少個BIOS磁片編號。例如,系統有一個IDE硬碟和一個SCSI硬碟,而你的BSD安裝在IDE硬
碟上,此時,你就需要指定hdbias參數d1。    rootnoverify device [hdbias]
和root類似,但是不mount該設備。這個命令用在當GRUB不能識別某個硬碟文件系統,但是仍然必須指定根設備。    setup install_device [image_device]
安裝GRUB引導在install_device上。這條指令實際上調用的是更加靈活但是複雜的install指令。如果
image_device也指定了的話,則將在image_device中尋找GRUB的文件映象,否則在當前根設備中查找。    testload file
這條指令是用來測試文件系統代碼的,它以不同的方式讀取文件file的內容,並將得到的結果進行比較,如果正確的
話,輸出的`i=X,filepos=Y`中的X,Y的值應該相等,否則就說明有錯誤。通常這條指令正確執行的話,之後我們就可以
正確無誤地裝載內核。    uppermem kbytes
強迫GRBU認d高端記憶體只有kbytes千位元組的記憶體,GRUB自動探測到的結果將變得無效。這條指令很少使用,
可能只在一些古老的機器上才有必要。通常GRUB都能夠正確地得到系統的記憶體數量。      以上簡要介紹了GRUB的安裝使用方法,GRUB的功能實在是太多了,而且仍然在不斷發展壯大,一個引導程式
能做到這樣一個程度實在令人讚歎,也許有一天GRUB會自帶一個kernel也說不定,:) 。可能現在使用GRUB的人
還不多,但是我使用的BluePoint系統就是使用的GRUB做多引導,之所以推薦給大家,也是因d我覺得GRUB是我
用過最靈活方便的引導程式,如果你對LILO並不滿意的話,不妨試試GRUB
 
發表人 - conundrum 於 2004/01/27 19:41:28
系統時間:2024-05-06 20:28:20
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!