以CentOS 6為例,系統的啟動流程為:
1.開機post加電自檢
2.MBR引導
3.通過grub加載內核
4.加載根
5.加載系統中的第一個進程
6.進行初始化
7.出現登錄界面
其中主要的啟動環節是grub引導計算機,分為三個階段:一階段發生在mbr的446字節中;一點五階段在mbr后續的扇區中;二階段在/boot/grub/目錄下。
當三個階段中任意一個階段被破壞后,計算機就會無法啟動,所以要針對不同的破壞實施不同的修復措施。
一、一階段的破壞及修復方法:
1.破壞一階段:dd if=/dev/zero of=/dev/sda bs=1 count=446 (清空mbr中446字節的內容)
2.修復:
a.利用光盤啟動進入救援模式
b.chroot /mnt/sysimage (切根)
c.grub-install /dev/sda (此命令的作用是重新安裝grub,不僅可以修復一階段,還可以修復一點五與二階段的破壞)
d.sync (同步操作)
e. hexdump -C -n 512 /dev/sda (查看是否修復數據)
f.重新啟動
進行以上步驟,就可以正常啟動計算機了。如圖所示:
二、一點五階段的破壞與修復:
1.破壞一點五階段: dd if=/dev/zero of=/dev/sda bs=1 count=10240 skip=512 seek=512
2.修復:
a. 進入救援模式
b. 切根:chroot /mnt/sysimage
c. 可用grub-install 修復,也可以輸入grub,出現提示符——輸入root(hd0,0),表示root是第一個硬盤的第一個分區——輸入setup (hd0)
d.退出重啟
三、二階段的破壞與修復:
1.破環:刪除/boot/grub下的文件,只留下grub.conf文件
修復:使用grub-install /dev/sda 命令,重新安裝grub
2.破壞:刪除grub.conf文件
修復:grub.conf文件負責提供啟動時的菜單選項,刪除這個文件,需要手動輸入文件的主要內容:
a.啟動時停滯在grub界面,手動輸入root (hd0,0),回車
b.輸入kernel /VMlinuz版本(支持Tab鍵補全) root=/dev/sda2,回車
c.輸入 initrd /initramfs版本
b.啟動后可恢復grub.conf文件
3.破壞:刪除 /boot/grub/目錄
修復:進入救援模式,切根
a. grub-install /dev/sda (重裝grub)
b.sync (同步)
c.手動創建grub.conf文件:vim /boot/grub/grub.conf
default=0
timeout=3
title linux
kernel /vmlinuz版本 root=/dev/sda (boot所在分區)
initrd /initranfs版本
d.重啟
總結:通過修復啟動各種階段的故障,可以進一步的了解系統啟動的過程,對linux系統也加深了認識。
原創文章,作者:xiamu,如若轉載,請注明出處:http://www.www58058.com/86002