首頁 > 軟體

GRUB2故障範例解析與修復方法

2020-06-16 16:43:01

一、CentOS7/RHEL7啟動先從加點自檢開始,然後會將控制權交給BIOS,BIOS工作完成後會將控制權交給GRUB。GRUB在整個啟動流程中起到很大的作用,而GRUB中最重要的就是/boot/grub2/grub.cfg組態檔。啟動過程中通過臨時修改GRUB可以做很多事,包括修改root密碼這種危險操作,所以需要對grub.cfg做一些必要操作。
1、設定grub密碼
通過grub2-mkpassword-pbkdf2生成加密密碼,並編輯組態檔00_header(注意在RHEL6時我們可以直接修改/boot/grub/grub.conf,如今在RHEL7官方建議修改grub的模板檔案,然後將模板檔案編譯進入grub.cfg)


通過模板檔案編輯設定

檢視/boot/grub2/grub.cfg,可以看到已經自動將我們對00_header做的設定編譯到該檔案

重新啟動後,在開機時想要編輯grub需要輸入使用者和密碼

2、通過grub修改終端介面的表單大小。開機後編輯grub設定,在下圖位置新增vga=ask,然後按ctrl+x啟動

800X600這個大小看著比較舒服,輸入對應十六進位制,回車即可

如果想要永久生效,編輯/etc/default/grub檔案即可。注意,如果直接指定大小,需要明確表明340是十六進位制,寫法是0x340

通過通過grub2-mkconfig使設定編譯到grub.cfg

3、應急模式。在下圖位置,填寫s。

注意:應急模式需要root密碼。通過netstat檢視當前開放的埠、服務,可以看到為空。

4、修該root密碼。如圖,輸入

重新掛載檔案系統,改為讀寫模式,就可以修改了。修改完畢後,需要touch /.autorelabel,否則selinux會影響我們進行的操作。

5、grub程式故障。
模擬故障

解決辦法:進入救援模式,重新安裝grub程式。
首先,進入救援模式



注意:輸入df檢視當前的檔案系統掛載資訊。可以看出,我們的boot分割區位於/dev/sda1上;通過fdisk -l /dev/sda也可以看到作業系統就安裝在該檔案系統。所以,我們需要將grub程式安裝在/dev/sda1上,完成修復。
進入急救模式,安裝grub程式前,需要先切換根環境到/mnt/sysimage。否則是無法安裝的,如下。

6、模擬grub組態檔丟失;核心檔案和虛擬檔案系統檔案丟失。

重新啟動後,系統直接提示進入救援模式。

修改BIOS讓光碟引導作業系統

同樣進入到/mnt/sysimage根環境中進行操作。掛載系統磁碟,安裝kernel,然後安裝grub程式,最後生成grub.cfg組態檔。(三者缺一不可,原因參照其引導過程)

解決後,我們修改BIOS,將引導順序改回到磁碟優先。(工作中,為防止有人理由修改BIOS的手段***作業系統,需要設定BIOS密碼)
7、MBR磁區故障。
MBR磁區故障,如果沒有備份將會是一件很麻煩的事。工作中也應當將MBR磁區進行備份。
備份MBR磁區(備份MBR需要將備份到沒有安裝作業系統的硬碟上)

模擬故障

同樣進入救援模式,建立一個目錄,將存有MBR備份的分割區掛載到該目錄,然後即可還原


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