歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Unix知識 >> Unix教程

Grub相關安裝配置及使用實例匯總講析

grub
  (一)安裝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
  # --> Redhat Linux 8.0 <--
  title Red Hat Linux (2.4.18-14)
  root (hd0,6)
  kernel /vmlinuz-2.4.18-14 ro root=LABEL=/
  initrd /initrd-2.4.18-14.img
  # --> Microsoft Windows XP <--
  title Microsoft Windows XP
  rootnoverify (hd0,0)
  chainloader +1
  
  #===========例子結束==========
  
  配置選項解釋:
  
  以"#"開頭的是注釋行。我這裡有兩個操作系統,分別是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所在分區標識。知道了內核在哪兒,還要具體指出哪個文件是內核文件,這就是ke
  
  rnel的工作。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:\boot.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
Copyright © Linux教程網 All Rights Reserved