GRUB2

GRUB2

GNU GRUB(簡稱“GRUB”)是一個來自GNU項目的啟動引導程式。GRUB是多啟動規範的實現,它允許用戶可以在計算機內同時擁有多個作業系統,並在計算機啟動時選擇希望運行的作業系統。GRUB可用於選擇作業系統分區上的不同核心,也可用於向這些核心傳遞啟動參數。

GNU GRUB的前身為Grand Unified Bootloader。它主要用於類Unix系統;同大多Linux發行版一樣,GNU系統也採用GNU GRUB作為它的啟動器。Solaris從10 1/06版開始在x86系統上也採用GNU GRUB作為啟動器。

注意:目前 GRUB 分成 GRUB legacy 和 GRUB 2。版本號是 0.9x 以及之前的版本都稱為 GRUB Legacy ,從 1.x 開始的就稱為 GRUB 2。

基本介紹

  • 中文名:GRUB2
  • 簡稱GRUB
  • 來源:來自GNU項目的啟動引導程式
  • 套用:x86系統
特徵,安裝和使用,手動引導,基本命令,

特徵

Grub 2 是新一代的Grub,它實現了一些Grub中所沒有的功能:
不同於Grub的單一核心結構,Grub 2 的功能分布在很多的小模組中,並且能在運行時動態裝載和卸除。
2、支持多體系結構
Grub 2可支持PC(i386), MAC(powerpc)等不同的體系機構,而且支持最新的EFI架構。
3、國際化的支持
Grub 2 可以支持非英語的語言。
Grub 2 有真正的記憶體管理系統。
Grub 2 可以支持腳本語言,例如條件,循環,變數,函式等。

安裝和使用

Grub 2的核心是符合multiboot標準的,因此可以在Grub中引導。
1、下載
解壓到某個FAT分區的根目錄,會生成/boot/grub目錄,Grub 2的檔案便在該目錄下。
2、修改
/boot/grub/grub.cfg
這是Grub 2的配置檔案,它的格式不同於menu.lst,以下是一個例子:
set timeout=20
set default=0
menuentry "Chainload First Part" {
set root=(hd0,1)
chainloader +1
}
menuentry "Load Linux at Second Part" {
set root=(hd0,2)
linux /vmlinuz root=/dev/hda2
initrd /initrd
}
如果你熟悉Grub,應該可以看明白裡面的內容。要注意的是:
a、timeout, default等參數用變數來儲存
d、選單項由menuentry定義
c、第1個分區是(hd0,1)而不是(hd0,0)
d、當前支持的啟動方式是chainload,linux和multiboot
3、在Grub中使用以下的命令進入Grub2
root (hd0,0)
kernel /boot/grub/core.img
boot
(hd0,0)請用存放Grub2的分區的名字來代替
4、進入Grub 2後,在選單界面下輸入 c 便可進入控制界面。

手動引導

有時候grub出現問題,不能通過啟動選項啟動目標作業系統,以啟動一個linux為例
按c鍵切換到命令行模式
grub> set root=(hd0,msdos1) 設定根目錄為第一硬碟的第一個分區
grub> linux /boot/vmlinuz 設定核心檔案,有的linux發行版會有一個名為wmlinuz的軟連 接指向真正的核心檔案
grub> initrd /boot/initrd 設定initrd檔案,也有可能用軟連線
grub> boot從硬碟啟動
以上命令可以用tab鍵補全 根據實際情況有所不同

基本命令

列表當前裝載的模組
insmod mod_name
裝載模組
rmmod mod_name
卸除模組
help [command]
顯示幫助
ls [options] [dir]
列表目錄。當不帶參數時,顯示的是所有的硬碟設備,帶參數時,顯示的是目錄里的子目錄和檔案。
還有很多其它的命令,全部命令的列表在/boot/grub/command.lst里:
boot cat chainloader cmp . configfile export font halt hello help initrd
lsmod linux loopback ls lsmod module multiboot play reboot rescue rmmod
search set source terminal terminfo [ unset vbeinfo vbetest videotest
可以用help來看具體的用法
注意:
a、很大一部分命令都在模組里,如果輸入時顯示找不到命令,只需要用insmod 裝載相應的模組就可以了。
b、你可以定製核心,使所需的命令包在其中。
從代碼中編譯:
1、用cvs取得原始碼
2、當前的Grub2代碼中有一個bug,使得啟動後不會顯示grub.cfg中的選單,有一個補丁,在:
擴展閱讀里
要使用該補丁,請進入grub2的目錄,然後:
patch -p1 < grub2-menu.diff
這裡假設grub2-menu.diff放在grub2目錄下
3、./configure
然後
./make
4、定製核心
./grub-mkimage -d . -v -o core.img fat pc
core.img是核心的名字,fat和pc是加入核心的模組。常用模組有:
fat: 支持 fat 檔案系統
ext2: 支持 ext2 檔案系統
help: help命令
ls: ls命令
除了當前分區的檔案系統的模組外,其它的都可以用insmod在進入grub2後才轉載
5、把core.img, boot.img, diskboot.img, *.mod, fs.lst, command.lst
抄到某一分區的 /boot/grub目錄下,然後編寫配置檔案grub.cfg

相關詞條

熱門詞條

聯絡我們