Linunx系統引導過程及MBR/GRUB故障
- 2021 年 2 月 10 日
- 筆記
⭐
- Linunx系統引導過程
-
- 系統初始化進程
-
- init進程
- Systemd
- Systemd單元類型
- 允許級別所對應的systemd目標
- 修復MBR扇區故障
-
- 解決思路
-
- 操作
- 修復GRUB引導故障
-
- 解決思路
-
- 操作
Linunx系統引導過程
- 開機自檢:伺服器主機開機後,將根據主板BIOS中的設置對cpu、顯示卡、記憶體、鍵盤等設備進行初步檢測,檢測成功後根據預設的 啟動順序移交系統控制權,,大多時候會移交給本機硬碟。
- MBR引導:當從本機硬碟中啟動系統時,首先根據硬碟中第一個扇區中MBR(主引導記錄)的設置,將系統控制權傳遞給包含作業系統引導文件的分區:或者直接根據MBR 記錄中的引導資訊調用啟動菜單(如GRUB)。
- GRUB菜單:對於Linux作業系統來說,GRUB(統一啟動載入器)是使用最為廣泛的多系統引導器程式。系統控制權遞交給GRUB以後,將會顯示啟動菜單給用戶選擇,並根據所選項或採用默認值載入Linux內核文件,然後將系統控制權交給內核。
- 載入Linux內核:Linux內核是一個預先編譯好的特殊二進位文件,介於各種硬體資源與系統程式之間,負責資源分配和調度。內核結果系統控制權之後,將完全掌控整個Linux作業系統的運行過程。
- init進程初始化:為了完成進一步的系統引導過程,Linux內核首先將系統中的「/sbin/init」程式載入到記憶體中運行(運行中的程式稱為進程),init進程負責完成整個系統的初始化,最後等待用戶進行登錄。
系統初始化進程
init進程
- 由Linux內核載入運行/sbin/init程式
- init進程是系統中的第一個進程,是所有進程的父進程
- init進程的PID號永遠為1
Systemd
- Systemd是Liunx作業系統的一種init軟體
- Centos7中採用systemd啟動方式,取代傳統的sysvinit
- centos7中運行的第一個init進程是/lib/systemd/systemd
Systemd單元類型
允許級別所對應的systemd目標
修復MBR扇區故障
- MBR位於第一塊硬碟(/dev/sda)的第一個物理扇區處,總共512位元組。
前446位元組是主引導記錄,分區表保存在MBR扇區中的第447-510位元組中。
#####故障原因有######## - 病毒、木馬等造成的破壞
- 不正確的分區操作、磁碟讀寫錯誤
故障現象有 - 找不到引導程式,啟動終端
- 無法載入作業系統,開機後黑屏
解決思路
- 提前做好備份文件
- 以安裝光碟引導進入急救模式
- 從備份中恢復
操作
首先創建一個磁碟分區
格式化,然後在根目錄創建一個backup目錄,並掛載到backup目錄
MBR位於第一塊硬碟(/dev/sda)的第一個物理扇區處,總共512位元組
備份MBR扇區數據到其他磁碟(/dev/sdb1)
模擬破壞MBR扇區,用zero進行覆蓋
init6重啟
進入急救模式,rescue a centos system
選1.continue
創建backupdir,並掛載
確認mbr.bak存在,從backupdir提取進行覆蓋
exit退出,會自動重啟,問題解決
修復GRUB引導故障
故障原因有
- MBR中的GRUB引導程式遭到破壞
- grub.conf文件丟失、引導配置有錯誤
故障現象有 - 系統引導停滯,顯示為「grub>」提示符
解決思路
- 嘗試手動輸入引導命令(較繁瑣,不建議使用)
- 進入急救模式,重寫或者從備份中恢復grub.conf
- 向MBR扇區中重建grub程式
操作
使向MBR扇區中重建grub程式的方式修復
首先建立grub.cfg備份到opt目錄並刪除grub.cfg
重啟,出現故障
再次重啟,在讀條狀態esc,並選擇3.cd-rom drive,就可選擇進入急救介面
切換到系統根環境
重新將GRUB引導程式安裝到第一塊硬碟的MBR扇區
重新構建GRUB菜單的配置文件
退出chroot環境並且重啟