grub啟動程式配引導置及命令列介面詳解

2021-08-22 06:08:16 字數 4236 閱讀 3139

linux系統的啟動引導程式有lilo和grub,但由於lilo的缺陷–只能識別0-1023範圍的柱面構成的分割槽中的核心檔案,因此逐漸被grub代替,但目前的安卓手機都是使用lilo程式引導的

grub的版本分為:

grub 0.x (grub legacy)

grub 1.x (grub 2)

目前centos 5和centos 6使用的就是 grub legacy 版本 

centos 7使用的是 grub2 版本的啟動引導程式

stage 1: 用於啟動boot loader 來載入stage2的內容至記憶體中

stage 1_5:用於識別核心和stage2所在分割槽的檔案系統格式型別,幫助引導stage2

stage 2: 讀取 grub.conf 配置檔案,並實現引導功能的擴充套件

linux系統中,與系統啟動相關的檔案均儲存在/boot目錄下.如grub vmlinuz initramfs等等

與grub相關的配置檔案包括:/etc/grub.conf/boot/grub/grub.conf

/etc/grub.conf是指向/boot/grub/grub.conf的軟連線,grub程式在引導啟動時會讀取這個配置檔案,並按照這個檔案的配置引數引導啟動系統

檔案內容如下:

default=0

timeout=5

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

hiddenmenu

title centos 6 (2.6.32-696.el6.x86_64)

root (hd0,0)

kernel /vmlinuz-2.6.32-696.el6.x86_64 ro root=uuid=2c1d3c99-493f-483b-9abf-c4c7171e4598 rd_no_luks rd_no_lvm lang=en_us.utf-8 rd_no_md sysfont=latarcyrheb-sun16 crashkernel=auto keyboardtype=pc keytable=us rd_no_dm rhgb quiet

initrd /initramfs-2.6.32-696.el6.x86_64.img

defaule: 表示有多個grub引導選單時,選擇哪乙個作為預設啟動引導選單, 

defaule=0:表示預設選擇第乙個選項進行配置 

timeout: 表示選擇選單的時間,如果過了這個時間沒有選擇則表示使用預設選項 

splashimage: 指定引導選單中的背景的路徑 

titile: 指定選項的名稱 

root: 表示kernel和initrd檔案所在的分割槽路徑,而不是」根分割槽」;其格式為:

root(hd#,#)  第乙個 # 表示第幾塊硬碟,第二個 # 表示同乙個硬碟上的分割槽,都是從0開始
kernel: 通常是用於指定要執行的核心檔案路徑,如:/vmlinuz-2.6.32-642.el6.x86_64;另外也可在其後設定相關的核心引數,如:ro表示唯讀,root表示指定根分割槽所在路徑,關閉selinux等等; 

initrd: 為核心執行指定其可用的ramdisk檔案,其版本須和核心版本一致

提供引導選單,並提供互動式的命令列介面;在選單介面,按e可進入編輯模式,用於編輯選單,按c可進入命令列模式 

載入使用者選擇的核心或作業系統,並允許傳遞相應的核心引數給核心;可選擇隱藏此選單

為選單提供保護機制,可 編輯選單 設定認證 為啟用核心 作業系統進行認證, 在系統開啟過程中,有幾秒的過渡頁面,可按任意鍵進入選單頁面 

在選單頁面按c即可進入命令列介面,在此命令列介面,我們可以配置相關的grub設定. 

grub常用的指令有:

help:檢視命令幫助;

root (device):指定系統和核心檔案所在的分割槽,如root(hd0,0)。

find (hd0,0) /path/to/file:用於查詢對應分割槽下的檔案。常用於當不確認核心檔案在哪個分割槽時,可使用此命令確認檔案所在路徑;支援tab補全;

kernel /path/to/kernel_file:用於指定要執行的核心檔案。

initrd /path/to/kernel_file:指定initrd檔案;

boot:以當前配置好的grub配置啟動系統;

grub程式提供系統保護機制,防止惡意使用者隨意通過當使用者模式修改root密碼或啟動其他核心

設定認證方式為: 在相應的grub.conf配置檔案中新增passwd –md5 string

以下為grub選單的編輯認證

default=0

timeout=5

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

hiddenmenu

password --md5 $1$3wovb/$a0jvirbpu3q.ibdbsufsn/

title centos 6 (2.6.32-642.el6.x86_64)

root (hd0,0)

# 此為對應的核心啟動提供密碼認證

使用grub-install命令

grub-initall [--root-directory=dir] device

device: 安裝的目標磁碟

--root-director=dir: 指定grub映像檔案的存放位置,預設為當前系統根目錄.

grub-install 會在指定的目錄下建立 boot/grub 的層級目錄

並生成相關的grub檔案在dir/boot/grub/ 目錄下

在grub命令列下安裝grub 

輸入grub進入grub命令列

[root@localhost ~]# grub   #進入grub命令列

grub> root (hd0,0) #指定grub命令列

grub> setup (hd0,0) #安裝grub

grub> quit # 退出grub命令列

在grub程式出現損壞時,我們可以利用上述方法進行修復

# 通過重複讀寫資料破壞硬碟的mbr

[root@localhost ~]# dd if=/dev/zero of=/dev/sda count=1 bs=400

1+0 records in

1+0 records out

400 bytes (400 b) copied, 0.000281298 s, 1.4 mb/s

# 在系統重啟前使用修復安裝grub

[root@localhost ~]# grub-install /dev/dsa

[root@localhost ~]# dd if=/dev/zero of=/dev/sda count=1 bs=400

[root@localhost ~]# grub

grub> root (hd0,0)

grub> setup (hd0,0)

利用安裝光碟進入救援模式進行grub修復 

bash-4.1# chroot /mnt/sysimage

sh-4.1# grub-install /dev/sda

sh-4.1# exit

至此grub已修復完成,系統應能正常啟動。

將損壞的硬碟拆卸掛載到其他linux系統上進行修復

GRUB命令列啟動

這裡所說的grub和上文中說的grub for dos是不一樣的,上文的grub跟磁碟的第一扇區沒有關係,即是說,如果你把上面c盤裡grub目錄刪除,不會影響你的系統啟動。我下面講的grub卻會把一部分 寫到磁碟的第一扇區上,即會寫到主引導紀錄mbr中。1 grub 命令列 分兩部分,一部分寫入第一...

ubuntu如何設定開機啟動預設命令列介面

圖形模式下,首先進入終端 1.執行 sudo vi etc default grub 2.找到 grub cmdline linux default quiet splash 3.改為 grub cmdline linux default quiet splash text 4.執行 sudo up...

Android命令列啟動程式的方法

在android中,除了從介面上啟動程式之外,還可以從命令列啟動程式,使用的是命令列工具am.啟動的方法為 wangwei wwg41d3 adb shell su am start n 包 package 名 包名 程式的入口類可以從每個應用的androidmanifest.xml的檔案中得到,以...