查看單個文章
舊 2006-08-19, 12:41 PM   #2 (permalink)
psac
榮譽會員
 
psac 的頭像
榮譽勳章
UID - 3662
在線等級: 級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時
註冊日期: 2002-12-07
住址: 木柵市立動物園
文章: 17381
現金: 5253 金幣
資產: 33853 金幣
預設

GRUB使用說明
從Red Hat Linux 7.2起,GRUB(GRand Unified Bootloader)取代LILO成為了預定的啟動裝載程式。相信LILO對於大家來說都是很熟悉的。這次Red Hat Linux用GRUB代替LILO,可見GRUB大有過人之處。不過,相對於LILO來說,大家對GRUB還是要陌生一些。本文將對GRUB的基本情況、術語、接頭、命令以及配置文件做個介紹,希望對大家有所幫助。

  一、GRUB的概述

  在Red Hat linux裝載一個系統前,它必須由一個啟始裝載程式(boot loader,啟動管理程式)中的特定指令告訴它去啟始系統。這個程式一般是位於系統的主硬碟驅動器或是其他知道如何去開始linux內核的媒介驅動器上。

  如果說一個x86系統只安裝了Red Hat Linux而且只有一個版本的linux內核,那麼通過啟始裝載程式開始Red Hat Linux的特定過程就不重要了。Red Hat Linux安裝程式允許用戶快速方便地配置啟始裝載程式存放在主硬碟驅動的主啟始記錄中來啟始操作系統。

  然而,為了能從多個linux內核或其他操作系統啟始,那麼就很有必要瞭解Red hat linux用於提供必要的啟始選項的方法,以及理解啟始的過程與如何去改變。

  本文是討論GRUB,它是Red Hat Linux用來在x86系統上裝載操作系統的預定方法。同時,本文也將詳細介紹用於控制啟始過程的各種命令和配置選項。

  GRUB的定義

  GNU GRUB(GRand Unified Bootloader)是一個將啟始裝載程式安裝到主啟始記錄的程式,主啟始記錄是位於一個硬碟開始的扇區。它允許位於主啟始記錄區中特定的指令來裝載一個GRUB表菜單或是GRUB的命令環境。這使得用戶能夠開始操作系統的選擇,在內核啟始時傳遞特定指令給內核,或是在內核啟始前確定一些系統參數(如可用的RAM大小)。

  x86的啟始過程

  當一個x86機器啟動後,系統BIOS開始檢測系統參數,如記憶體的大小、日期和時間、磁碟設備、以及這些磁碟設備用於啟始的順序等。通常情況下,BIOS都是被配置成首先檢查軟式磁碟機或光碟(或兩者都檢查),然後再嘗試從硬碟啟始。如果在這些可移動的設備中,沒有找到可啟始的介質,那麼BIOS通常是轉向第一塊硬碟最初的幾個扇區,尋找用於裝載操作系統的指令。這些最初的扇區-主啟始記錄-開始裝載一個預選擇操作系統的過程,一個操作系統選項販GRUB表菜單,或是一個執行特定選項的GRUB命令行接頭。 

  裝載GRUB和操作系統的過程,包括以下幾個操作步驟:

  1、裝載基本的啟始裝載程式,這通常是第一步。基本啟始裝載程式必須是位於主啟始扇區中一個非常小的空間,少於512字節。因此,基本啟始裝載程式所做的唯一的事情就是裝載第二啟始裝載程式。這主要是歸結於在主啟始扇區中沒有足夠的空間用於其他東西了。

  2、裝載第二啟始裝載程式,這通常稱為第二步。這第二啟始裝載程式實際上是引出更高階的功能 ,以允許用戶裝載入一個特定的操作系統。在GRUB中,這步是讓用戶顯示一個表菜單或是輸入命令。

  3、裝載在一個特定分區上的操作系統,如linux內核。一旦GRUB從它的命令行或是配置文件中,接到開始操作系統的正確指令,它就尋找必要的啟始文件,然後把機器的控制權移交給操作系統。

 注意

  在一些文件系統以及文件系統的配置中,可能需要一個1.5步的文件,用來連接基本啟始程式與第二啟始程式之間的差異。

  舉個例子來說,如果第二步中的啟始裝載程式文件位於一個使用了第一步啟始裝載程式所不能訪問的文件系統的分區中,那麼就可能需要指示第一步啟始裝載程式,從1.5步文件中載入附加的指令來讀取第二步啟始裝載程式的文件。更多相關的訊息,請參考GRUB的訊息頁。

  前面所提到的啟始方法被稱為直接裝載。因為這種方法中使用的是直接裝載操作系統的指令,沒有用到任何在啟始裝載程式和操作系統主文件(如內核)之間的中間代碼。然而,不同操作系統所採用的啟始過程可能會與上面提到的有一些細微的不同。例如,微軟的DOS和Windows操作系統在安裝時,傾趨於完全重寫主啟始記錄,而不是合併當前的主啟始記錄的配置。這將破壞掉其他操作系統儲存在主啟始記錄中的所有訊息,如Red Hat Linux。微軟操作系統,還有一些其他的專有操作系統,都是使用一種稱為鏈式裝載的啟始方法來啟動的。在這種方法中,主啟始記錄僅僅是簡單地指向操作系統所在分區的第一個扇區。

  GRUB支持直接和鏈式裝載的啟始方法。GRUB能用於幾乎所有操作系統,絕大多數流行的文件系統,以及幾乎所有的系統BIOS所能識別的硬碟。

  GRUB的特性

  GRUB包含許多特性,這使得GRUB比其他可用的啟始裝載程式更加優越。下面列出一些比較重要的特性:
  ·GRUB在x86機器上,提供一個真正基於命令行的,先於操作系統(pre-OS)的環境。它對於用確定的選項裝載操作系統或收集系統訊息方面,提供了最大程度的適應性。許多非x86的體系結構已經使用先於操作系統環璟許多年了,它提供控制系統如何從一個命令行啟始。當LILO或其他x86啟始裝載程式使用了一些命令特性的時候,GRUB已經包含了許多這方面的特性。
  ·GRUB支持邏輯塊尋址(LBA)方式。LBA將用於尋找驅動器上文件的地址轉換工作置於驅動器的硬體中,它被用在許多IDE和所有的SCSI硬碟中。在使用LBA之前,硬碟驅動器遇到一個1024柱面的限制,即BIOS不能找到在1024柱面後的文件(比如一個啟始裝載程式或是內核文件)。只要系統BIOS能支持LBA模式(大多數都支持),那麼LBA就允許GRUB超越1024柱面的限制,啟始操作系統。
  ·GRUB的配置能在每次系統啟始時被讀取。這就避免了用戶每次改變啟始選項時都要重寫一次主啟始記錄。大多數的啟始裝載程式都不能很老道地讀取配置文件,並使用它們來設置啟始選項。比如說,用戶必需改變一個LILO的配置文件,然後執行一個命令將新的配置資料重寫回系統的主啟始記錄。這種方法比GRUB所採用 的方法更加危險,因為一個錯誤配置的主啟始記錄將讓系統無法啟始。在使用GRUB中,如果說配置文件被錯誤配置並且啟始,那它也僅僅簡單地轉到一個預定的命令行,允許用戶手工輸入命令來執行操作系統。除開更新系統啟始的第一步、第二步、或是表菜單配置文件的位置,主啟始記錄是不會被觸及到的,而這種情況是很少發生的。

  注意:

  當GRUB的配置文件發生改變時,沒有必要重新啟動GRUB。所有的改變都能被自動地檢測到。如果GRUB被重新啟動,那麼用戶將退回到命令行方式的GRUB外殼下。

  安裝GRUB 

  如果在Red Hat Linux的安裝過程中,GRUB沒有被安裝,下面將說明如何安裝它,並將它設為預定的啟始裝載程式。

  注意:如果LILO已經被安裝,並且是當前的系統啟始裝載程式,那並沒有必要為了使用GRUB而刪除它。GRUB一旦安裝後,將做為系統預定的啟始裝載程式。

  首先,獲取最新可用的GRUB包。在Red Hat Linux安裝光碟上的GRUB包也可以使用。

  其次,在一個外殼提示下,執行命令/sbin/grub-install ,這裡的是GRUB將要被安裝的位置。比如說:/sbin/grub-install /dev/hda

  最後,重新啟始系統。GRUB圖形啟始裝載表菜單將出現。  二、GRUB的術語

  在使用GRUB前,最重要的事情之一就是理解這個程式是如何引用設備的,如系統硬碟驅動器、分區等。對於配置GRUB實現多操作系統的啟始,這方面的訊息是很重要的。

  設備名稱

  系統的第一個硬碟驅動器被GRUB稱為(hd0)。在它上面的第一個分區被稱為(hd0,0),第二個硬碟驅動器上的第5個分區被稱為(hd1,4)。通常使用GRUB時,文件系統習慣上採用下面的方式命名:

  (,)
  在設備命名中,圓括號和逗號是很重要的。指出是一個硬碟(hd)還是一個軟碟(fd)被指定。

  是依照系統BIOS而確定的設備號,從0開始。基本IDE硬碟被標為0,第二IDE硬碟被標為1。這個排序大體上等同於linux內核用字母安排設備的順序,只是在hda中的a變成了0,hdb中的b變為了1,依次類推。

  注意:GRUB用於設備的命名系統是從0開始,而不是1。這常常是GRUB新手們常犯的最普遍的錯誤。
  指在一塊硬碟上一個分區的編號。類似於,分區的編號也是從0開始。雖然大多數的分區可以用數位指定,但是如果系統使用的是BSD分區,那麼它們還是用字母來指定,如a或c。

  GRUB在命名設備和分區時,使用下面的規則:

  ·系統使用IDE硬碟或SCSI硬碟,都沒有關係。所有的硬碟都是用hd開始。軟碟用fd開頭。
  ·當指定整個硬碟,不考慮它的分區時,簡單地將逗號和分區編號取消即可。當告訴GRUB配置一個特定硬碟的主啟始扇區時,這一點很重要。比如,(hd0)指定第一個設備,(hd3)指定第四個設備。
  ·如果一個系統有多個驅動設備,知道由BIOS確定的驅動器順序就很重要了。如果系統只有IDE或SCSI驅動器,那是相當簡單的。但是如果有多個驅動器混合時,這就變得令人混亂了。  

  文件名稱

  當在GRUB中輸入包括文件的命令時,比如在多操作系統中使用一個表菜單列表,文件名必須直接在設備和分區後指定。一個絕對文件名的格式如下:

  (,)/path/to/file

  大多數的時候,用戶可以通過在分區上的目錄路徑後加上文件名來指定文件。這種方法是直接了當的。

  另外,我們也可以將不在文件系統中出現的文件指定給GRUB,比如在一個分區最初幾塊扇區中的鏈式啟始裝載程式。為了指定這些文件,需要提供一個塊列表(blocklist),由它來一塊一塊地告訴GRUB文件在分區中的位置。當一個文件是由幾個不同的塊組合在一起時,需要有一個特殊的方式來寫塊列表。每個文件片斷的位置由一個塊的偏移量以及從偏移點起始的塊數來描述,這些片斷以一個逗號分界(comma-delimited)的順序組織在一起。

  考慮下面的塊列表:

  0+50,100+25,200+1

  上面這個塊列表告訴GRUB使用一個文件,這個文件起始於分區的第一塊,使用了第0塊到第49塊,第99塊到124塊,以及第199塊。

  當使用GRUB裝載諸如微軟Windows這樣採用鏈式裝載方式的操作系統時,知道如何寫塊列表是相當有用的。如果從第0塊開始,那麼可以省略塊的偏移量。作為一個例子,當鏈式裝載文件在第一硬碟的第一個分區時,可以使用下面的命名:

  (hd0,0)+1

 下面給出一個帶類似塊列表名稱的chainloader命令。它是在設置正確的設備和分區作為根後,在GRUB命令行中給出的。

  chainloader +1
  GRUB的根文件系統

  一些用戶常困惑於GRUB中根文件系統(root filesystem)這一術語的用法。GRUB的根文件系統與Linux的根文件系統是沒有關係的,這一點需要記住。

  GRUB的根文件系統是用於一個特定設備的根分區。GRUB使用這個訊息來掛入(mount)這個設備並從它上面載入文件。

  在Red Hat Linux中,一旦GRUB載入它自己的包含Linux內核的根分區,那麼kernel命令就可以將內核文件的位置作為一個選項來執行。一旦Linux內核啟始,它就設定自己的根文件系統,此時的根文件系統就是大多數人用來與Linux聯繫的了。最初的GRUB根文件系統以及它的掛入都被去掉,它們僅存在於用來啟始內核文件。

  關於根和內核命令的更多訊息,可以參考後面的命令部分。
__________________
http://bbsimg.qianlong.com/upload/01/08/29/68/1082968_1136014649812.gif
psac 目前離線  
送花文章: 3, 收花文章: 1631 篇, 收花: 3205 次