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 就行了