Grub安裝、配置以及使用例項彙總講解(轉)

worldblog發表於2007-08-10
Grub安裝、配置以及使用例項彙總講解(轉)[@more@]

  (一)安裝linux時安裝grub

  安裝redhat linux時會提示安裝載入程式,如果選擇grub為載入程式,建議把grub安裝到硬碟的引導扇區MBR.grub 還可以引導其它作業系統,如 FreeBSD、NetBSD、OpenBSD、GNU HURD 和 DOS,以及 Windows 95、98、NT、2000、XP。

  (二)grub的配置

  一旦選擇了grub為載入程式,下面我們來了解一下它的配置。/boot/grub/grub.conf是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 have a /boot partition. This means that

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

# root (hd0,6) # kernel /vmlinuz-version ro root=/dev/hda10

# initrd /initrd-version.img

#boot=/dev/hda default=0 timeout=10 splashimage=(hd0,6)/grub/splash.xpm.gz

# --&gt Redhat Linux 8.0 # --&gt Microsoft Windows XP #===========例子結束==========

  配置選項解釋:

  以"#"開頭的是註釋行。我這裡有兩個作業系統,分別是Red Hat Linux和Microsoft Windows XP。其中,timeout標識預設等待時間,我這設定為10秒,超過10秒使用者還沒作出選擇的話,將自動選擇預設的作業系統(我這裡預設的是Redhat linux 8.0)

  預設的作業系統是由default一項來控制的,default後的數字表明第幾個是預設的,這裡0表示第一個,1表示第二個。

  所以如果你想修改預設的作業系統,就修改default後的數字。title一項是設定作業系統的名稱,grub不支援中文(有點遺憾)。splashimage一項指定grub介面的背景圖片,有興趣的朋友可以修改grub的背景。

  root (hd0,6)標識從第一個硬碟,第7個分割槽來啟動搜尋引導核心。注意這兒的root與linux的root分割槽不同,此root非彼root也!grub的硬碟標識方法與linux的有點不同。在linux中第一個主分割槽為hda1,第二個主分割槽為hda1,第一個邏輯分割槽為hda5,而在grub中是以(hdx,y)來標識的,如第一個主分割槽為(hd0,0)第一個邏輯分割槽為(hd0,1)依此類推。

  所以這兒root後面的是你的/boot所在分割槽標識。知道了核心在哪兒,還要具體指出哪個檔案是核心檔案,這就是kernel的工作。kernel /vmlinuz-2.2.18-14 ro

  root=LABEL=/。說明/boot/vmlinuz-2.2.18-14就是要載入的核心。後面的都是傳遞給核心的引數。

  ro是以readonly的意思。注意我這裡核心前面的路徑是"/",因為我的boot單獨分了一個區,如果你沒有為boot單獨分割槽,那麼核心前面的路徑就是"/boot"。initrd用來初始的linux image,並設定相應的引數。

  再來看一看windows的定義段吧。這裡,我新增了一項來引導 WindowsXP。要完成此操作,GRUB使用了"鏈式裝入器"(chainloader)。鏈式裝入器從分割槽 (hd0,0) 的引導記錄中裝入 winXP 自己的引導裝入器,然後引導它。這就是這種技術叫做鏈式裝入的原因 -- 它建立了一個從引導裝入器到另一個的鏈。

  這種鏈式裝入技術可以用於引導任何版本的 DOS 或 Windows。如果你在計算機中裝有win98,winme,win2k,winxp的話,chainloader會把引導權交與win的NTLoader來引導。

  (三)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

  現在,引導盤完成了。

  (四)恢復被windows破壞的grub

  如果你用grub來引導linux和windows,當windows出毛病重新安裝後,會破壞MBR中的grub,這時需要恢復grub。

  1.把linux安裝光碟的第一張放到光碟機,然後重新啟動機器,在BOIS中把系統用光碟機來引導。

  2.等安裝介面出來後,按F4鍵,也就是linux rescue模式。

  3.一系列鍵盤以及幾項簡單的配製,過後就“繼續”了這個過程,這裡不說了,比較簡單。

  4.然後會出現這樣的提示符:

sh#

  5.我們就可以操作GRUB了。輸入grub:

sh#grub

  會出現這樣的提示符:

grub>

  我們就可以在這樣的字元後面,輸入:

grub>root (hdX,Y)

grub>setup (hd0)

  如果成功會有一個successful......

  這裡的X,如果是一個盤,就是0,如果你所安裝的linux的根分割槽在第二個硬碟上,那X就是1了;Y,就是裝有linux系統所在的根分割槽。 setup (hd0)就是把GRUB寫到硬碟的MBR上。

  (五)用NTLoader來引導linux

  如果你在安裝linux時沒有選擇安裝grub,不必著急,現在我們來看看如何在安裝linux後安裝grub。並用windows的NTLoader來引導linux。

  1. 安裝grub

  我用的grub是Redhat8.0帶的grub安裝包: grub-0.92-7.rpm

  安裝: rpm -ivh grub-0.92-7.rpm

  其他安裝方式也一樣,只要你安裝上grub就行了。RH8預設用的grub, 1、2步驟可以省了。

  2. 建立grub的環境

  cp /usr/share/grub/i386-pc/* /boot/grub

  3. 生成grub的配置檔案/boot/grub/menu.conf

  按照上面所講的grub.conf來生成一個配置檔案。

  注意了, 這裡我的linux在/dev/hda4,所以menu.conf那些分割槽位置為(hd0,3),

  你的可能不一樣了,不能完全照著"畫瓢"噢! 下面第3步install的中的分割槽位置也應該和你的系統一致。

  安裝grub至Linux分割槽boot

  將grub的stage1安裝到/dev/hda4的boot扇區(hd0,3)。 過程如下:

/sbin/grub (執行grub)

grub> install (hd0,3)/boot/grub/stage1

d (hd0,3) (hd0,3)/boot/grub/stage2

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

  (注意,上面"grub>"為grub的提示符,其後內容寫在一行上。)

  4. 取得grub的boot資訊

  過程如下:

dd if=/dev/hda4 of=/grub.lnx

bs=512 count=1

  這樣得到grub的引導資訊,只要用NT Loader來載入它就行了。

  5. 將上面得到的grub.lnx弄到Windows的C盤根目錄下,可以先把grub.lnx弄得軟盤上,然後啟動windows,複製到C:; 情況允許也可以直接在Linux下複製到C:了。 我的C盤(即裝置/dev/hda1)為FAT32, 可以直接從Linux下弄過去了。 如下:

mount -t vfat /dev/hda1 /mnt/c

cp /grub.lnx /mnt/c

umount /mnt/c

  6. 修改NT Loader的boot.ini

  在其中加入一行: C:grub.lnx="Redhat Linux - GRUB"

  加入後boot.ini的內容如下:

[boot loader]

timeout=15

default=C:oot.lnx

[operating systems]

multi(0)disk(0)rdisk(0)partition(1)

WINDOWS="Microsoft Windows XP Professional"

/fastdetect [VGA mode]" /basevideo /sos C:grub.lnx="Redhat Linux - GRUB"

  可以用NT Loader載入Linux了, 其實上面過程基本上和用NT Loader載入LILO一樣。其基本思想就是用NT Loader來載入LILO或grub的引導區(grub.lnx), 其中的關鍵就是LILO或grub的引導區的獲取。

  (六)活用grub的互動功能

  

  grub具有強大的互動功能。學會了將會使你受益非淺!

  1.grub沒有顯示選單怎麼辦?

  當開機後進入grub介面但沒了選單,只剩下一個grub>提示符,怎麼啟動呢?別急,看下面:

grub>cat (hd0,6)/boot/grub/grub.conf (為了看引數)

grub>root (hd0,6)

grub>kernel (hd0,6)

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

grub>initrd (hd0,6)

/initrd-2.4.18-14.img

grub>boot

  啟動了吧!以上有些數字要根據你的實際情況更改。以上這個方法也可以用於測試新編譯的核心。

  2.進入單使用者模式。

  有時不小心把root使用者密碼忘了,只能進入單使用者模式來重新設定root密碼。方法如下:開機進入grub介面,按C進入命令列模式,然後按照上面的方法進行,只是在第三步要在後面加入single引數。

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

相關文章