首頁 > 軟體

RHEL7 學習筆記(27) grub 和開機排錯

2020-06-16 18:08:46

這一節學習了grub的概念,開機呼叫順序,如何自定義grub檔案,以及對一些常見的系統啟動錯誤如何排錯等等。

之前學習了MBR分割區的前446個位元組存放的是系統載入程式grub,中間64位元組是分割區表,最後2個位元組表示結束。那麼什麼是grub是怎麼工作的呢?

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

  1. BIOS自檢,檢查硬體;
  2. 啟用MBR,MBR上不存在檔案系統,可以視作硬體一部分,因此可以被直接讀取
  3. grub載入到記憶體,生成一個微系統,微系統內建了精簡版的檔案系統
  4. 通過這個微系統,他會去引導分割區,比如預設一般是sda1上去找核心檔案如vmlinuz,然後再呼叫grub的組態檔。

grub的主要把他的組態檔放在了3個地方。

  1. /boot/grub2/grub.cfg 
  2. /etc/grub.d/ 
  3. /etc/default/grub   

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

Ubuntu 14.04 Grub2 的小技巧 http://www.linuxidc.com/Linux/2014-04/100611.htm

Ubuntu 14.04 下載、安裝、設定的相關知識 http://www.linuxidc.com/Linux/2014-04/100370.htm

Ubuntu 14.04系統下載地址http://www.linuxidc.com/Linux/2014-04/100352.htm

如何在Ubuntu12.04/12.10中重灌或修復Grub2引導 http://www.linuxidc.com/Linux/2012-11/74901.htm

Linux啟動引導過程 grub和mbr http://www.linuxidc.com/Linux/2013-07/87923.htm

grub 的安裝與使用 http://www.linuxidc.com/Linux/2013-07/87682.htm

grub載入程式組態檔分析 http://www.linuxidc.com/Linux/2013-07/87547.htm

CentOS 6.4 grub加密碼 http://www.linuxidc.com/Linux/2013-07/87124.htm

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

這個是/etc/default/grub 檔案。和其他的指令碼比較起來,非常簡單直觀了。後面會舉例如何修改

值得注意的是,千萬不要直接去修改 /etc/grub2/grub.cfg 檔案。 這個是因為如果後期升級核心,所有的設定都會失效。如果需要自定義這個檔案,我們可以修改對應的指令碼或者 /etc/default/grub檔案,然後通過 grub2-mkconfig 重新生成grub.cfg檔案。

下面來看看如何修改一些簡單的設定。

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

預設是5秒

我改成-1,那麼開機每次必須手動確認才可以了

修改之後重新編譯一下

開機就沒有自動等待的時間了,必須手動確認

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

例3: 加密grub

開機介面的時候如果輸入e,會開啟編輯視窗,我們可以根據需要進入rescue, emergency 或者 shell 模式。如何限制存取。

在00_header 檔案末尾,新增以下內容

重新編譯

重新啟動之後 輸入e,就需要使用者和密碼才能進入編輯視窗了

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

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

普通模式需要載入的服務很多,但是這個rescue模式載入的就少很多了,輸入管理員密碼就可以進入了。這個時候再來看看相關設定和紀錄檔等資訊。

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

一樣需要輸入管理員密碼

那麼如果忘記root密碼了怎麼辦?!

在linux16 的最後一行刪除 rhgb quiet, 然後新增 init=/bin/sh, 他會用shell替代預設的daemon進程

進來之後改改密碼吧,貌似不行。

原因很簡單,根目錄載入的許可權是ro,唯讀   

重新載入成 rw的許可權

這個時候就可以修改密碼了

別忘記了selinux,建立這個檔案會自動在開啟的時候重新做標籤

重新啟動看看

更多詳情見請繼續閱讀下一頁的精彩內容http://www.linuxidc.com/Linux/2015-02/113254p2.htm


IT145.com E-mail:sddin#qq.com