Grub(GRand Unified Bootloader),統一資源引導器,它的工作是提供一個菜單,允許用戶選擇要啟動的系統或不同的內核版本;把用戶選定的內核裝載到RAM中的特定空間中,然後解壓、展開,而後把系統控制權移交給內核。 Grub目前有兩個版本: 1、GRUB 0.X:Grub Lega ...
Grub(GRand Unified Bootloader),統一資源引導器,它的工作是提供一個菜單,允許用戶選擇要啟動的系統或不同的內核版本;把用戶選定的內核裝載到RAM中的特定空間中,然後解壓、展開,而後把系統控制權移交給內核。
Grub目前有兩個版本:
1、GRUB 0.X:Grub Legacy(CentOS5、6,version 0.97);
2、GRUB 1.X:Grub2(CentOS7,version 1.96)。
Grub詳解(Grub Legacy,CentOS6為例):
1、Grub程式主要由3部分組成:
stage1:MBR(0柱面 0磁軌 1扇區)中
stage1_5:MBR隨後的扇區
stage2:讀取grub.conf配置文件,並實現引導功能的擴展
釋義:MBR只有512bytes的空間,給Bootloader的空間很小隻有446bytes,因此Grub程式分為三段來進行:
"stage 1" 被裝入磁碟的MBR中;
特殊的"stage 1_5"被裝入MBR隨後的扇區,它能夠識別內核和"stage 2"所在分區的文件系統格式並幫助引導"stage 2";
"stage 2"位於文件系統上;
stage 2程式和配置文件grub.conf可以與內核文件處於不同的分區上(但必須位於同一磁碟),只要"stage 1.5"能夠驅動它們各自所在的分區。
在linux中,與啟動相關的文件(grub目錄、vmlinuz、initramfs)均位於boot目錄下:
2、Grub的配置文件:/boot/grub/grub.conf
註意:必須確保grub目錄、vmlinuz等在同一個目錄;此外它創建了一個鏈接文件/etc/grub.conf 用於指向此配置文件,保證用戶使用配置文件的一致性。
default=#:設定預設啟動的菜單項,編號從0開始
timeout=#:等待菜單項選項的時長,超時自動啟動系統
splashimage=(hd#,#)/PATH/TO/XPM_PIC_FILE:指明菜單背景圖片文件路徑
hiddenmenu:隱藏菜單
password [--md5] STRING:菜單編輯認證
title TITLE:定義菜單項“標題”, 可出現多次
root (hd#,#):grub查找stage2及kernel文件所在的分區;為grub的“根”
kernel /VMLINUZ_FILE [PARAMETERS]:啟動的內核
initrd /INITRAMFS_FILE:內核匹配的ramfs文件
password [--md5] STRING:啟動選定的內核或操作系統時進行認證
示例:
1)利用grub-md5-crypt生成密碼
2)修改/boot/grub/grub.conf配置文件
3)效果
3、Grub的功能:
1)提供菜單,並提供互動式介面:
e:編輯模式,用於編輯菜單;
c:命令模式,互動式介面;
2)載入用戶選擇的內核或操作系統:
允許傳遞參數給內核;
可隱藏此菜單;
3)為菜單提供了保護機制:
為編輯菜單進行認證;
為啟用內核或操作系統進行認證。
4、Grub的編輯模式和命令行模式:
1)開機按任意鍵進入菜單界面:
2)按c鍵進入編輯界面:
3)按e鍵進入命令行界面:
4)grub的命令行命令:
help:獲取幫助列表
help KEYWORD:詳細幫助信息
find /FILENAME:查找文件所在的磁碟分區
root (hd#,#):指定boot所在分區
kernel /KERNEL_FILE:設定本次啟動時用到的內核文件;額外還可以添加許多內核支持使用的cmdline參數,如:selinux=0,init=/path/to/init
initrd /INITRAMFS_FILE:設定為選定的內核提供額外文件的ramfs
boot:引導啟動選定的內核、
註意,grub識別到的磁碟(hd#, #),例如(hd0, 0),表示第1塊磁碟,第1個分區。
示例,通過命令行啟動系統:
5)grub的編輯命令:
b鍵:表示boot,啟動;
e鍵:表示edit,編輯選中的項:
o鍵:在選中行的下一行添加一行
O鍵:在選中行的上一行添加一行
d鍵:刪除選中的行
Esc鍵:退出編輯界面
示例,進入單用戶模式:
5、安裝Grub的方法
方法1:
grub-install [--root-directory=DIR] DEVICE
DEVICE:針對哪個磁碟安裝
--root-directory=DIR:指定grub映像文件(主要是“stage 2”)的存放位置,預設為當前系統根目錄。
grub-install會在指定的目錄下創建boot/grub/的層級目錄,並將生成的“stage 2”置於DIR/boot/grub/下。因為內核vmlinuz-xxxx與虛擬文件系統initramfs通常位於boot目錄下,故一般將DIR指定為boot目錄的父目錄即可。
示例:
方法2:
輸入grub命令進入grub命令行
root (hd0,0):相當於上面的--root-directory=DIR
setup (hd0):為哪個磁碟安裝
quit:退出