不管是運行於服務器上的linux還是普通用戶的linux系統都有可能發生故障,重裝系統又太麻煩,那麼我們就要來對系統做故障排除,讓系統重新正常運行起來。
不過在這之前呢,我們要先對系統的啟動過程有一個初步的了解,以便於我們來更好地維護系統。
一、啟動過程:
1、上電自檢,檢查blos設置,查看硬件是否有問題,若有問題,則不會進行下一步。
2、自檢完成後,來由引導程序grub引導系統啟動。共分為兩個階段,第一個階段是MBR中boot loader的引導;第二個階段主要是grub的配置。這裡需要注意的是在第一個階段會提示一個grub菜單,在/etc下名為grub.conf。我們的系統以此菜單為依據來進行操作系統的選擇,還涉及到驅動以及內核的相關信息,下面我們來了解一下這個菜單
3、加載內核和相關的驅動
4、啟動進程init(init是一切進程的開始),從下圖可以開出
用pstree |less 來查看進程關系
5、讀取/etc/inittab配置文件,執行/etc/rc.d/sysinit文件來准備軟件執行的操作環境
6、init執行run-level的各個服務的啟動
7、init執行開機腳本/etc/rc.d/rc.local文件
8、init執行終端模擬程序mingetty來啟動login進程
二、在初步了解啟動過程之後呢,來進入我們今天的話題----故障排除。故障的出現一般表現在grub引導的第一階段和第二階段,下面我們來分別模擬第一和第二階段的故障為大家來演示故障的排除過程。
第一階段的故障排除:
1、用命令來重寫引導程序
2、把光盤去掉,重啟機器,出現下邊的情況,我們發現系統已經進行不了引導了
3、利用光盤引導,重建MBR
4、進入急救模式會出現5個彈窗,前兩個分別是語言和鍵盤,選擇默認就可以;第三個提示我們是否啟動網絡功能,選擇否;第四個選擇continue;第五個如下圖所示
5、轉變根
6、利用指令grub進入第二階段,再來指定引導分區並重建第一階段
完成後輸入quit退出,再輸入兩次exit後系統會自動重啟
7、發現系統已經可以正常啟動了
第二階段的故障排除:
第二階段主要在/boot/grub目錄下生成了許多的文件,如下圖所示
 
而在這比較重要的文件是grub.conf,那又是為什麼呢,看完下圖你就明白了
我們知道/etc/grub.conf是個很重要的文件,而它所指的正是/boot/grub目錄下的grub.conf
1、如果我們把這些文件誤刪了系統還會正常啟動嗎,下面我們就來模擬一下,把/boot/grub目錄下的所有文件刪除,再來指令ll來查看/etc/grub.conf。如下圖,我們發現兩個文件之間的鏈接斷開了
2、再來重啟系統,出現下圖的現象。從圖中我們可以看出,已經啟動了grub,說明第一階段沒有問題,那問題就出在第二階段,說明我們卻少了配置文件。
3、重建二階段的文件
指定引導分區並查看引導分區上的文件,從下圖中我們可以看到驅動和內核文件
告訴系統內核和驅動的位置
然後利用boot指令來啟動系統,這裡需要注意的是用命令只能產生除了配置文件的其他文件,進入系統之後我們還要手動建配置文件。
首先進入/boot/grub目錄下,編輯一個grub.conf的文件,內容如下圖所示
編輯完後保存退出,再次重啟系統,發現系統已經可以正常啟動了。
作者署名:51cto博客 xiaoxiaozhou