1. 程式人生 > >rhel7 grub 配置檔案及排錯

rhel7 grub 配置檔案及排錯

RHEL7 用了 grub2,而不再是 grub 了 MBR 分割槽的前 446 個位元組存放的是系統載入程式 grub,中間 64 位元組是分割槽表,最後 2 個字 節表示結束。那麼什麼是 grub 是怎麼工作的呢?

簡單的說,開機會經歷以下幾步:

1、BIOS 自檢,檢查硬體;

2、啟用 MBR,MBR 上不存在檔案系統,可以視作硬體一部分,因此可以被直接讀取

3、grub 載入到記憶體,生成一個微系統,微系統內建了精簡版的檔案系統

4、通過這個微系統,他會去引導分割槽,比如預設一般是 sda1 上去找核心檔案如 vmlinuz,然 後再呼叫 grub 的配置檔案。

grub 的主要把他的配置檔案放在了 3 個地方。

/boot/grub2/grub.cfg  (/etc/grub2.cfg 是/boot/grub2/grub.cfg 檔案的符號連結)

/etc/grub.d/  

/etc/default/grub

如下所示。他們的關係是 grub.cfg 裡面通過 ####BEGIN  ##### 這種格式按照順序呼叫 /etc/grub.d 裡面的指令碼實現不同的功能。grub.d 目錄裡面有很多數字開頭的指令碼,按照從小 到大的順序執行。以 00__header 為例,他又會呼叫 /etc/default/grub 配置檔案來實現最基本 的開機介面配置

例如:在/etc/grub2.cfg 是檔案裡面呼叫 /etc/grub.d/10_linux 來配置不同的核心,這裡面有 2 個 menuentry (選單入口),所以我們開機的時候會看見兩個預設選項,一個是普通模式, 一個是救援模式

這個是/etc/default/grub 檔案。和其他的指令碼比較起來,非常簡單直觀了。後面會舉例如何 修改 需要注意的是,最好不要直接去修改 /etc/grub2.cfg 檔案。這個是因為如果後期升級核心, 所有的配置都會失效。如果需要自定義這個檔案,我們可以修改對應的指令碼或者 /etc/default/grub 檔案,然後通過 grub2-mkconfig 重新生成 grub.cfg 檔案。

例 1:修改啟動的等待時間

rhel7 預設啟動等待時間為 5 秒,下面將啟動時間修改為 3 秒(注:如果改為-1,那麼每次 啟動時需手動確認才可以)

修改/etc/default/grub 檔案,如下圖所示:

修改之後重新編譯生成 grub.cfg 檔案

例 2:修改網絡卡的顯示名字,這個前面做網路配置的時候提到過,這裡不贅述了。

例 3:加密 grub 開機介面的時候如果輸入 e,會開啟編輯視窗,我們可以根據需要進入 rescue, emergency 或 者 shell 模式。如何限制訪問。

在/etc/grub.d/00_header 檔案末尾,新增以下內容

重新編譯生成 grub.cfg 檔案

重啟之後輸入 e,就需要使用者和密碼才能進入編輯視窗了 以上設定的是明文密碼,那如何設定密文口令呢?

加密密碼由命令 grub2-mkpasswd-pbkdf2 生成

在/etc/grub.d/00_header 檔案末尾,新增以下內容

cat  <<EOF

set superusers=’使用者名稱’

password_pbkdf2 使用者名稱加密密碼 EOF

如下圖所示:

重新編譯生成 grub.cfg 檔案

grub2-mkconfig–o /boot/grub2/grub.cfg

重啟驗證

注:在文字終端模式下,安裝並啟用 gpm 後就可複製貼上了。


 在這個編輯視窗,我們可以根據需要進入 rescue,emergency 和 shell 引導的 3 種模式。這 3 種模式對於系統啟動排錯很有幫助,比如某個服務卡住了無法載入我們可以通過這 3 種模 式來排錯。

rescue 模式: 在 commandline 的配置末尾新增 s ,類似 rhel6 之前的單使用者模式

按 ctrl+x 啟動

普通模式需要載入的服務很多,但是這個 rescue 模式載入的就少很多了,輸入管理員密碼 就可以進入了。

emergency 模式和 rescue 模式類似,不過載入的服務更少,把 s 改成 emergency 就行了