gurb學習筆記(轉)

gugu99發表於2007-08-10
gurb學習筆記(轉)[@more@]

  首先要了解的幾個概念

  1.1 啟動管理器

  啟動管理器是儲存在磁碟開始扇區中的一段程式,例如,硬碟的MBR(Master Boot Record),在系統完成啟動測試後,如果系統是從MBR啟動,則BIOS(Basic Input/Output System)將控制傳送給MBR。然後儲存在MBR中的這段程式將執行。這段程式被稱為啟動管理器。它的任務就是將控制傳送給作業系統,完成啟動過程》有許多可用的啟動管理器,包括GNU GRUB (Grand Unified Boot Loader),Bootmanager, LILO (LInux LOader), NTLDR (boot loader for Windows NT systems),等等等.

  1.2 什麼是GRUB?

  grub 是一個多重啟動管理器。grub是GRand Unified Bootloader的縮寫,它可以在多個作業系統共存時選擇引導哪個系統。它可以引導的作業系統包括:

  Linux,FreeBSD,Solaris,NetBSD,BeOSi,OS/2,Windows95/98,Windows NT,Windows2000,WinXP。它可以載入作業系統的核心和初始化作業系統(如Linux,FreeBSD),或者把引導權交給作業系統(如Windows 98)來完成引導。

  1.3 GRUB的特點

  特別適用於linux與其它作業系統共存情況。

  支援大硬碟 現在大多數Linux發行版本的lilo都有同樣的一個問題:根分割槽(/boot分割槽)不能分在超過1024柱面的地方,一般是在8.4G左右的地方,否則lilo不能安裝,或者安裝後不能正確引導系統。而grub就不會出現這種情況,只要安裝時你的大硬碟是在LBA模式下,grub就可以引導根分割槽在8G以外的作業系統。

  支援開機畫面   grub支援在引導開機的同時顯示一個開機畫面。對於玩家來說,這樣可以製作自己的個性化開機畫面;對於PC廠商,這樣可以在開機時顯示電腦的一些資訊和廠商的標誌等。grub支援640x480,800x600,1024x768各種模式的開機畫面,而且可以自動偵測選擇最佳模式,與Windows那320x400的開機畫面不可同日而語。

  兩種執行模式 grub不但可以透過配置檔案進行例行的引導,還可以在選擇引導前動態改變引導時的引數,還可以動態載入各種裝置。例如你在Linux下編譯了一個新的核心,但不能確定它能不能工作,你就可以在引導時動態改變grub的引數,嘗試裝載這個新的核心進行使用。Grub的命令列有非常強大的功能,而且支援如bash或doskey一樣的歷史功能,你可以用上下鍵來尋找以前的命令。

  選單式選擇   grub使用一個選單來選擇不同的系統進行引導。你還可以自己配置各種引數,如延遲時間,預設作業系統等。

  分割槽大小改變後不必重新配置   grub是透過檔案系統直接把核心讀取到記憶體,因此只要作業系統核心的路徑沒有改變,grub就可以引導系統。

  除此之外,Grub還有許多非常強大的功能。例如支援多種外部裝置,動態裝載作業系統核心,甚至可以透過網路裝載作業系統核心。Grub支援多種檔案系統,支援多種可執行檔案格式,支援自動解壓,可以引導不支援多重引導的作業系統,支援網路啟動等。

  1.4 MBR和第一扇區

  你可以簡單的理解為MBR是整個硬碟的物理第一位置,而第一扇區是硬碟的物理第二位置.

  1.5 一個GRUB配置檔案

  基於本例的分割槽如下:

  hda 15G

hda1 8G / RED HAT LINUX8.0

hda5 7G /home

hdc 20G

hdc1 6.4G WinXP

hdc5 6.4G

hdc6 6.4G

hdc7 6.4G

#fdisk -l

# Disk /dev/hdc: 255 heads, 63 sectors, 2434 cylinders

Units = cylinders of 16065 * 512 bytes

Device Boot Start End Blocks Id System

/dev/hdc1 * 1 894 7181023+ b Win95 FAT32

/dev/hdc2 895 2434 12370050 f Win95 Ext'd (LBA)

/dev/hdc5 895 1787 7172991 b Win95 FAT32

/dev/hdc6 1788 2434 5196996 b Win95 FAT32

Disk /dev/hda: 255 heads, 63 sectors, 1867 cylinders

Units = cylinders of 16065 * 512 bytes

Device Boot Start End Blocks Id System

/dev/hda1 * 1 1020 8193118+ 83 Linux

/dev/hda2 1021 1802 6281415 83 Linux

/dev/hda3 1803 1867 522112+ 82 Linux swap

grub.conf,這個檔案位於;/boot/grub/grub.conf

# grub.conf generated by anaconda

#

# Note that you do not have to rerun grub after making changes to this file

# NOTICE: You do not have a /boot partition. This means that

# all kernel and initrd paths are relative to /, eg.

# root (hd0,0)

# kernel /boot/vmlinuz-version ro root=/dev/hda1

# initrd /boot/initrd-version.img

#boot=/dev/hda

default=0

timeout=3

splashimage=(hd0,0)/boot/grub/splash.xpm.gz

title Red Hat Linux (2.4.18-14)

root (hd0,0)

kernel /boot/vmlinuz-2.4.18-14 ro root=LABEL=/

initrd /boot/initrd-2.4.18-14.img

title Microsoft Windows XP

map (hd0) (hd1)

map (hd1) (hd0)

root (hd1,0)

chainloader (hd1,0)+1

makeactive

boot

  2 解讀grub.conf檔案

  我們將來看看grub.conf檔案內語句,(注:...)內的東西是我們的解讀內容.

  # grub.conf generated by anaconda

  #

  # Note that you do not have to rerun grub after making changes to this file

  # NOTICE: You do not have a /boot partition. This means that

  # all kernel and initrd paths are relative to /, eg.

  # root (hd0,0)

  # kernel /boot/vmlinuz-version ro root=/dev/hda1

  # initrd /boot/initrd-version.img

  #boot=/dev/hda (注:以上以符號井"#"開頭的行表示被註釋掉,沒有任何意義)

  default=0 (注:預設的作業系統就是由default控制的。default後加一個數字n,表明是第 n+1個。需要注意的是,GRUB中,計數是從0開始的,第一個硬碟是hd0,第一 個軟碟機是fd0,等等。所以,default 0 表示預設的作業系統在這兒是 Red Hat Linux (2.4.18-14)如果你修改成1就是WinXP了)

  timeout=3 (注:timeout表示預設等待的時間,這兒是3秒鐘。超過3秒,使用者還沒有作出選 擇的話,系統將自動選擇預設的作業系統;當然你可以改成任何你樂意的時間)

  splashimage=(hd0,0)/boot/grub/splash.xpm.gz (注:指定開機畫面檔案splash.xpm.gz的位置)

  title Red Hat Linux (2.4.18-14) (注:表示Red Hat Linux的選單項)

  root (hd0,0) (注:表示第一個硬碟第一個分割槽,這裡的root和系 統內的root不是一碼事!詳細如下說明)

  kernel /boot/vmlinuz-2.4.18-14 ro root=LABEL=/ (注:指定核心的位置,詳細說明如下 文)

  initrd /boot/initrd-2.4.18-14.img (注:初始化)

  title Microsoft Windows XP (注:表示Microsoft Windows XP的選單項)

  map (hd0) (hd1) (注:map是命令,詳細如下)

  map (hd1) (hd0)

  root (hd1,0) (注:這是指第二個硬碟(從硬碟)上第一個分割槽)

  chainloader (hd1,0)+1 (注:鏈式裝入器,裝入一個扇區的資料然後把引導 權交給它。詳細說明如下)

  makeactive

  boot

  (注:在 Linux 中,當談到 "root" 檔案系統時,通常是指主 Linux 分割槽。但是,GRUB 有它自己的 root 分割槽定義。GRUB 的 root 分割槽是儲存 Linux 核心的分割槽。這可能是您的正式 root 檔案系統,也可能不是。我們討論的是 GRUB,需要指定 GRUB 的 root 分割槽。進入 root 分割槽時,GRUB 將把這個分割槽安裝成只讀型,這樣就可以從該分割槽中裝入 Linux 核心。GRUB 的一個很“酷”的功能是它可以讀取本機的 FAT、FFS、minix、ext2 和 ReiserFS 分割槽.到目前為止,您可能會感到一點疑惑,因為 GRUB 所使用的硬碟/分割槽命名約定與 Linux 使用的命名約定不同。在Linux 中,第一個硬碟的第五個分割槽稱作 "hda5"。而 GRUB 把這個分割槽稱作 "(hd0,4)"。GRUB 對硬碟和分割槽的編號都是從 0 開始計算。另外,硬碟和分割槽都用逗號分隔,整個表示式用括號括起。現在,可以發現如果要引導 Linux 硬碟 hda5,應輸入 "root (hd0,4)"。

  知道了核心在哪兒,還要具體指出哪個檔案是核心檔案,這就是kernel的工作。

  kernel /boot/vmlinuz-2.4.18-14 ro root=LABEL=/說明/boot/vmlinuz-2.4.18-14就是要載入的核心。後面的都是傳遞給核心的引數。root=LABEL=/就是linux的硬碟分割槽表示法,ro是readonly的意思。initrd用來初始的linux image,並設定相應的引數。

  命令map:當你有兩塊硬碟,一個無法從第二塊硬碟啟動的作業系統,例如Windowsxp,就可以使用map命令.你能夠將hd0對映為hd1,將hd1對映為hd0。換句話說,你可以虛擬的交換兩個硬碟而啟動所需要的作業系統 。命令形式如下:

  grub> map (hd0) (hd1)

  grub> map (hd1) (hd0)

  GRUB 使用了“鏈式裝入器”(chainloader)。鏈式裝入器從分割槽 (hd1,0) 的引導記錄中裝入winxp自己的引導裝入器,然後引導它。這就是這種技術叫做鏈式裝入的原因 -- 它建立了一個從引導裝入器到另一個的鏈。這種鏈式裝入技術可以用於引導任何版本的 DOS 或 Windows。

  GRUB的配置檔案要簡單就這麼簡單,如果你要更個性化一點,試一試把“color light-gray/blue ”加在default語句的下面,下一次啟動GRUB時,看看有什麼變化,再試一試“color light-blue/red",驚喜嗎? 有趣吧! )

  3 如何使用grub?

  3.1 安裝

  你可以從ftp://alpha.gnu.org/pub/gnu/grub 下載GRUB的原始碼。

  得到檔案grub-0.5.96.1.tar.gz,所以這樣做:

  # tar -xvzf grub-0.5.96.1.tar.gz

  這個命令將解開的檔案和目錄放在一個名為grub-0.5.96.1的目錄中。現在執行如

  下命令:

  #cd grub-0.5.96.1

  # ./configure

  如果你想定製GRUB,使之包含流行的檔案系統和對網路卡的支援,或者刪除你不需要的網路卡,可以執行如下命令:

  # ./configure --help

  這個命令將輸出所有的命令選項。現在可以使用—enable和—disable選項增加或

  刪除對特定網路卡的支援。(注意:GRUB支援網路啟動)

  為了開始編譯過程,鍵入如下命令:

  # make

  # make install

  至此你已經為安裝GRUB真正做好了準備。

  將GRUB的相關檔案儲存在諸如/boot/grub的目錄中是一個好主意。為此,按如下步驟:

  1.預設狀態下,GRUB所有檔案將安裝在/usr/share/grub/i386-pc(或者在

  /usr/local/share/grub/i386-pc目錄下,這隻取決於你的shell變數的設定。)

  2.建立一個叫做/boot/grub的目錄,然後複製下列檔案到這個目錄:

  stage1 stage2 * stage1 5

  稍候將解釋這些檔案。同時也要把GRUB(可能在/usr/sbin或者/usr/local/sbin

  目錄下)複製到/boot/grub目錄下。

  安裝GRUB可以分為三個單獨的步驟:

  1.將“stage1”安裝到MBR中。

  2.設定“stage2”的地址或者位置。

  3.設定一個選單或選項,用來決定啟動哪一個作業系統。

  使用下面的命令開始安裝GRUB。

  #cd /boot/grub

  # ./grub

  這個命令根據BIOS的設定檢測硬體裝置,同時產生一些輸出資訊。這會花較長的時間。

  end_request: I/O error, dev 02:00 (floppy), sector 0

  GRUB version 0.5.96.1 (640K lower / 3072K upper memory)

  TAB鍵可列出可能的命令列表。其它情況下TAB會列出裝置或檔名。類似下面的提示會出現:

  grub>

  現在,假設你將Linux安裝在了第一塊硬碟的第一個分割槽中或者/dev/hda1中。記住GRUB的命名規則,將上面的名字改為(hd0,0)。鍵入下面的命令:

  grub> install (hd0,0)/boot/grub/stage1 (hd0) (hd0,0)/boot/grub/stage2

  p (hd0,0)/boot/grub/menu.conf

  現在分析一下這個命令的細節。

  install

  一個內建的命令,它告訴GRUB將(hd0,0)/boot/grub/stage1安裝到hd0的主引導紀錄中。

  (hd0,0)/boot/grub/stage2

  告訴GRUB stage2映象的位置。

  p with the the following options: (hd0,0)/boot/grub/menu.conf

  為選單的顯示設定配置檔案。

  下面是對這個命令用法的總結:

  1.install

  2.ource_of_stage1

  3.where_to_install

  4.source_of_stage2

  5.p source_of_configuration_file

  現在,你完成了硬碟上的基本安裝工作。

  在軟盤上的安裝:

  為了在軟盤上安裝GRUB,你要會用“dd”命令,並且瞭解它是如何工作的。為了做一張GRUB啟動盤,你要將stage1和stage2檔案放到軟盤的開始扇區中。

  安裝stage1到軟盤上:

  插入一張已格式化的軟盤,鍵入命令:

  # dd if=stage1 of=/dev/fd0 bs=512 count=1

  命令的詳細說明如下:

  if=input file

i.e., stage1

of=output file

i.e., floppy drive (this may be different on your computer)

bs=bytes to read and write

Here it is 512 bytes.

count=how many times to perform this operation

  每次複製“bs”數目的塊到目標地址。

  安裝stage2到軟盤

  # dd if=stage2 of=/dev/fd0 bs=512 seek=1

  這裡的步驟同stage1的相同,除了一個seek選項外。Seek選項將調過一個“bs”。例如,在上面的命令中bs的值是512,這樣seek=1意味著將跳過軟盤上前512個位元組 ,從513位元組開始。這將使得第一步操作不會覆蓋stage1的前512位元組。

  現在你完成了基本的軟盤驅動器安裝。

  如果已經安裝了grub要把grub重新安裝到主引導扇區上,只需要簡單打入makebootable命令就可以了。

  3.2 配置grub

  grub啟動時會在/boot/grub/中尋找一個名字為menu.lst的配置檔案,如果找不到此檔案則不進入選單模式而直接進入命令列模式。

  現在,我們來看一下如何在啟動後進入各種作業系統,如何建立menu.conf檔案。我們就從GRUB支援的啟動過程開始。可以有兩種方法來完成啟動過程:

  ·A.透過呼叫核心本地啟動

  ·B.連續啟動或者將控制轉給另一個引導器

  A模式啟動過程

  1.配置跟裝置或者告訴GRUB你的根檔案系統。

  2.告訴GRUB你的核心影像的位置,然後將引數傳送給核心。

  3.重新啟動,試一下。

  為了啟動Linux,將核心以bzImage的檔名放在/boot/目錄中,跟檔案系統是

  /dev/hda1,或者GRUB中的(hd0,0)。啟動過程如下:

  1.root (hd0,0) [This sets the root partition]

  2.kernel /boot/bzImage root=/dev/hda1 [This sets the kernel]

  B模式啟動過程(這種模式假設當前的分割槽中安裝了另一個啟動管理器,例如LILO

  或者NTLDR):

  1.設定根分割槽但不要安裝它

  2.啟用這個分割槽

  3.配置需要啟動的分割槽的第一個扇區

  4.重新啟動,看一下效果。

  我們在試試啟動安裝在/dev/hdc1或者(hd1,0)的widows。啟動windows的過程如下:

  1.rootnoverify (hd1,0)

  2.makeactive

  3.chainloader +1 [+1 sets the first sector of the current root

  partition]

  4.boot [transfers the control and quits GRUB]

  menu.conf檔案:它用於建立啟動多作業系統時的選單。建立menu.conf並不難。它使用簡單的英語,就象你在這一節看到的那樣。

  所有的選單專案都以沒有逗號分隔的“title TITLENAME”開頭。你可以隨意設定

  TITLENAME。

  設定Linux啟動選單步驟如下:

  1.設定標題

  2.設定根分割槽

  3.設定核心的相應引數

  4.啟動

  一個選單例子:

  title Red Hat Linux (2.4.18-14)

root (hd0,0)

kernel /boot/vmlinuz-2.4.18-14 ro root=LABEL=/

initrd /boot/initrd-2.4.18-14.img

  前面有#的行是一個註釋。

  建立啟動Windows 或者 DOS的選單:

  title Windoze

rootnoverify (hd0,0)

makeactive

chainloader +1

boot

#----

  又或者:

  title Microsoft Windows XP

map (hd0) (hd1)

map (hd1) (hd0)

root (hd1,0)

chainloader (hd1,0)+1

makeactive

boot

----

  注意:root和rootnoverify都是一樣的,把rootnoverify改成root也行。不過經過實踐來看。有時引導win時,系統安裝好後,是rootnoverify (hdX.Y)這樣形式的,這樣會出現windows起不來,出現什麼windows什麼檔案損壞的情況。這時,我們就要把在grub中,引導windows的那段中的rootnoverify改為root

  root英文的意思就是根的意思,在這裡是讓linux知道自己所處的位置,也就是我們所安裝linux的/根分割槽所在的位置 。

  ----

  如果你安裝了兩個版本的Windows—一個是你自己用的,另一個給你的家人用的—這樣第二個就無法安裝,因為有提示說Windows已經安裝了。

  有一種簡單的方法可以安裝兩個版本的Windows,即在啟動時隱藏一個分割槽而使用另一個。你甚至可以為你的分割槽設定密碼保護,這樣可以避免別人錯誤的載入你的分割槽。下面介紹如何完成兩個Windows的安裝,hda1和hda2 或者 (hd0,0) 和(hd0,1),用到的命令有lock, password, hide 和 unhide。

  建立windows 專案"My Entry":

  title My Entry

lock

unhide (hd0,0)

hide (hd0,1)

rootnoverify (hd0,0)

makeactive

chainloader +1

boot

#----

  為了更好的使用lock命令,你需要在配置檔案開頭使用password命令。Password命令的語法如下:password secret(“secret”就是密碼)。任何時候你都可以透過按p鍵兒輸入密碼。

  建立Windows 專案"Family Entry"

  title Family Entry

unhide (hd0,1)

hide (hd0,0)

rootnoverify (hd0,1)

makeactive

chainloader +1

boot

  任何人都可以啟動這個專案,而無須輸入密碼。

  這有一個使用password命令的有趣的竅門。為了在預設選單列表或配置檔案中隱藏某些專案,你可以使用下面的命令載入一個定製的列表:

  password secret

  在這個命令中,“secret”是密碼,而/boot/grub/secret-list.conf是密碼檔案。這樣做之前,你要先進入到根目錄或者給出全路徑名。例如:

  password secret (hd0,4)/boot/grub/secret-list.conf

  還有一個更重要的命令是“map”。當你有兩塊硬碟,一個無法從第二塊硬碟啟動的作業系統,例如Windows,就可以使用map命令。例如,你能夠將hd0對映為hd1,將hd1對映為hd0。換句話說,你可以虛擬的交換兩個硬碟而啟動所需要的作業系統 。命令形式如下:

  grub> map (hd0) (hd1)

grub> map (hd1) (hd0)

啟動FreeBSD:

title FreeBSD 4.0

root (hd0,4,a)

kernel /boot/loader

boot

#----

  這裡我們呼叫了FreeBSD的啟動管理器。Root (hd0,4,a)由四個引數,是因為

  FreeBSD對一個單獨分割槽進行了虛擬分割。我們稱根分割槽為“a”。如果FreeBSD佔

  據了整個第二塊硬碟,這裡就應該是root (hd0,a)。這樣,就不是呼叫核心而是呼叫FreeBSD的啟動管理器,它要比呼叫核心更易使用。

  (注意:推薦在使用OpenBSD和GNU/Hurd之前,要先試一下鏈式載入。)

  現在你已經完成了基本的GRUB編譯、安裝和配置。你對GRUB瞭解的越多,就越會發現GRUB是一種控制啟動的易用和高效的方法。

  各種GRUB命令:

  default xx

  表明xx是預設的啟動專案

  timeout yy

  表明在yy秒後預設啟動專案將啟動

  fallback zz

  在第一個啟動專案失敗後,過了timeout時間後,就將啟動zz專案。

  color

  這個命令將生成彩色選單。它的語法是:color normal current_selection。這兩個域都可以有兩個值,形如foreground/background。例如:

  color green/black or light-gray/blue

  你也可以使用相關的數字。

  記住:所有的值都是從0開始,所以0是第一個

  3.3 GRUB啟動盤

  要製作引導盤,需執行一些簡單的步驟。首先,在新的軟盤上建立 ext2 檔案系統。然後,將其安裝,並將一些 GRUB 檔案複製到該檔案系統,最後執行 "grub" 程式,它將負責設定軟盤的引導扇區。

  將一張空盤插入 1.44MB 軟碟機,輸入:

  # mke2fs /dev/fd0

  建立了 ext2 檔案系統後,需要安裝該檔案系統:

  # mount /dev/fd0 /mnt/floppy

  現在,需要建立一些目錄,並將一些關鍵檔案(原先安裝 GRUB 時已安裝了這些檔案)複製到軟盤:

  # mkdir /mnt/floppy/boot

# mkdir /mnt/floppy/boot/grub

# cp /boot/grub/stage1 /mnt/floppy/boot/grub

# cp /boot/grub/stage2 /mnt/floppy/boot/grub

  再有一個步驟,就能得到可用的引導盤。

  在linux bash中,從 root 使用者執行“grub”,該程式非常有趣並值得注意,因為它實際上是GRUB 引導裝入器的半功能性版本。儘管 Linux 已經啟動並正在執行,您仍可以執行 GRUB 並執行某些任務,而且其介面與使用 GRUB 引導盤或將 GRUB 安裝到硬碟 MBR 時看到的介面(即GRUB控制檯)完全相同。

  在 grub> 提示符處,輸入:

  grub> root (fd0)

grub> setup (fd0)

grub> quit

  現在,引導盤完成了。

  如果要把GRUB裝到硬碟上,也很容易。這個過程幾乎與引導盤安裝過程一樣。首先,需要決定哪個硬碟分割槽將成為 root GRUB 分割槽。在這個分割槽上,建立 /boot/grub 目錄,並將 stage1 和 stage2 檔案複製到該目錄中,可以透過重新引導系統並使用引導盤,或者使用駐留版本的 GRUB 來執行後一步操作。在這兩種情況下,啟動 GRUB,並用 root 命令指定 root 分割槽。例如,如果將 stage1 和 stage2 檔案複製到 hda5 的 /boot/grub 目錄中,應輸入 "root (hd0,4)"。接著,決定在哪裡安裝 GRUB -- 在硬碟的 MBR,或者如果與 GRUB 一起使用另一個“主”引導裝入器,則安裝在特定分割槽的引導記錄中。如果安裝到 MBR,則可以指定整個磁碟而不必指定分割槽,如下(對於 hda):

  grub> setup (hd0)

  如果要將 GRUB 安裝到 /dev/hda5 的引導記錄中,應輸入:

  grub> setup (hd0,4)

  現在,已安裝 GRUB。引導系統時,應該立即以 GRUB 的控制檯方式結束(如果安裝到 MBR)。現在,應建立引導選單,這樣就不必在每次引導系統時都輸入那些命令。

  從軟盤啟動grub

  製作啟動盤後可以用軟盤啟動引導硬碟上的作業系統, 插入製作好的啟動軟盤,進入BIOS設定軟盤啟動。軟盤啟動成功後就會進入grub的命令列模式

  grub>

  要啟動一個作業系統,首先指定引導哪個分割槽上的系統,例如要引導指第一個硬碟上的第一個分割槽的作業系統,先鍵入

  grub>root (hd0,0)

  接著如果要啟動的是Windows系統,鍵入

  grub>chainloader (hd0,0)+1

  注意(hd0,0)要隨著硬碟和分割槽的不同而改變數字。

  如果要引導Linux或其他系統,應鍵入

  grub>kernel (hd0,0)/boot/vmlinuz root=/dev/hda1

  注意hda1引數也要隨著硬碟和分割槽的不同而改變,如從第二個硬碟的第一個分割槽引導則用hdb1。

  最後敲入boot就可以啟動系統了。

  在任何時候不能確定命令或者命令的引數都可以按Tab獲得相關的幫助。用上下鍵可以獲得命令的歷史記錄。其實這些命令就是menu.lst的啟動描述,您也可以根據那些描述來自己鍵入啟動命令,最後敲入boot就可以引導系統了。

  4 GRUB的互動性

  GRUB 最好的優點之一就是其強健的設計 -- 在不斷使用它時請別忘了這點。如果更新核心或更改它在磁碟上的位置,不必重新安裝 GRUB。事實上,如有必要,只要更新 menu.lst 檔案即可,一切將保持正常。

  只有少數情況下,才需要將 GRUB 引導裝入器重新安裝到引導記錄。首先,如果更改 GRUB root 分割槽的分割槽型別(例如,從 ext2 改成 ReiserFS),則需要重新安裝。或者,如果更新 /boot/grub 中的 stage1 和 stage2 檔案,由於它們來自更新版本的 GRUB,很有可能要重新安裝引導裝入器。其它情況下,可以不必理睬!

  GRUB的最大的特點就是互動性特別強。在開機時,按一下“c”,將進入GRUB 控制檯。顯示如下:

  GRUB version 0.5.96.1 (640K lower / 3072K upper memory)

[ Minimal BASH-like line editing is supported. For the first word, TAB

lists possible command completions. Anywhere else TAB lists the possible

completions of a device/20041012132317.htm. ]

grub>

  歡迎使用 GRUB 控制檯。現在,再研究命令:

  將透過GRUB 控制檯繞過lilo來啟動RedHat linux,

  grub> root (h

  現在,按一次 Tab 鍵。如果系統中有多個硬碟,GRUB 將顯示可能完成的列表,從 "hd0" 開始。如果只有一個硬碟,GRUB 將插入 "hd0,"。如果有多個硬碟,繼續進行,在 ("hd2") 中輸入名稱並在名稱後緊跟著輸入逗號,但不要按 Enter 鍵。部分完成的 root 命令看起來如下:

  grub> root (hd0,

  現在,繼續操作,再按一次 Tab 鍵。GRUB 將顯示特定硬碟上所有分割槽的列表,以及它們的檔案系統型別。在我的系統中,按 Tab 鍵時得到以下列表:

  grub> root (hd0, (tab,按tab一下鍵)

Possible partitions are:

Partition num: 0, Filesystem type is fat, partition type 0x6

Partition num: 2, Filesystem type is ext2fs, partition type 0x83

Partition num: 4, Filesystem type unknown, partition type 0x7

Partition num: 5, Filesystem type is ext2fs, partition type 0x83

Partition num: 6, Filesystem type is fat, partition type 0xb

Partition num: 7, Filesystem type is fat, partition type 0xb

Partition num: 8, Filesystem type is ext2fs, partition type 0x83

Partition num: 9, Filesystem type unknown, partition type 0x82

  如您所見,GRUB 的互動式硬碟和分割槽名稱實現功能非常有條理。這些,只需要好好理解 GRUB 新奇的硬碟和分割槽命名語法,然後就可以繼續操作了

  grub> root (hd0,8)

  現在已安裝了 root 檔案系統,到裝入核心的時候了

  grub> kernel /boot/vmlinuz-2.4.2 root=/dev/hda5 ro

  [Linux-bzImage, setup=0x1200, size=0xe1a30]

  您已經安裝了 root 檔案系統並裝入了核心。現在,可以引導了。只要輸入 "boot",Linux 引導過程就將開始。是不是很cool啊,GRUB的menu.lst更像一個linux下的指令碼程式。

  5 常見grub除錯方法的思路

  首先進去Linux的rescue模式!

  用軟盤或光碟啟動,然後在啟動的提示符輸入:linux rescue

  按照提示進入一個Shell狀態,你可以到/mnt/下面看到一個sysimage這麼目錄,進去以後,就是你安裝linux的/分割槽.

  使用命令將根分割槽變為當前目錄的根分割槽:chroot /mnt/sysimage

  然後轉到/sbin/這個目錄中.

  使用fdisk -l 顯示當前分割槽情況,然後使用#grub-install /dev/hdx(x為你使用的是那塊硬碟安裝的,一般情況下是hda)

  使用exit推出chroot,再使用exit退出linux rescue模式,系統將重新啟動!取出光碟,應該可以看到grub安裝好了.

  在具體的環境中,編輯/boot/grub/grub.conf檔案和menu.lst檔案.

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10748419/viewspace-939834/,如需轉載,請註明出處,否則將追究法律責任。

相關文章