post加電自檢,然後找到啟動裝置即磁碟,從磁碟載入mbr第一扇區二進位制**,接著是grub的stage1、stage1.5、stage2階段,到這裡有個問題,在stage2階段會載入linux核心檔案即/boot/vmlinuz-2.6.32-696.el6.x86_64,然後載入根/,但是載入根的話需要檔案系統ext4的驅動,而ext4檔案系統的驅動模組在/lib/modules/2.6.32-696.el6.x86_64/kernel/fs/ext4/ext4.ko下且必須先載入根,如此一來就形成了死迴圈。
解決方法是使用偽檔案系統--虛擬磁碟,即/boot/initramfs-2.6.32-696.el6.x86_64.img,此檔案包含系統啟動所需的基本驅動,如ext4.ko,而此檔案的作用就是掛載根/
檢視此檔案包含的驅動模組的方法如下:
1
2
3
4
5
6
7
cp
/boot/initramfs-2
.6.32-696.el6.x86_64.img
cd
mv
initramfs-2.6.32-696.el6.x86_64.img initramfs-2.6.32-696.el6.x86_64.img.gz
gunzip initramfs-2.6.32-696.el6.x86_64.img.gz
file
initramfs-2.6.32-696.el6.x86_64.img
cpio -
id
< initramfs-2.6.32-696.el6.x86_64.img
tree |
grep
ext4.ko
如果不小心將initramfs檔案刪=刪除,可以使用下述方法恢復
1
2
mkinitrd
/boot/initramfs-
`
uname
-r`.img `
uname
-r`
名稱要與
/boot/grub/grub
.conf定義的偽根保持一致
只要根掛載成功,那後續的init程序就能夠順利啟動
grub的三個階段
stage1
即mbr的前446位元組的bootloader,由於空間太小所以能夠執行的功能有限,其主要作用就是引導至stage1.5階段
stage1.5
主要作用是進入/boot下,/boot也是ext4檔案系統,要進入其中也需要先載入檔案系統驅動,但是本階段不屬於任何分割槽,即本階段直接
使用mbr第一扇區512位元組後的二進位制**完成,是直接與磁碟打交道而不經過檔案系統;
注意/boot分割槽與/分割槽的檔案系統可以不一樣,前者使用grub引導,後者使用偽檔案系統引導
stage2
完成1.5階段就可以進入/boot分割槽下,剩下的就是2階段要完成的載入核心檔案和偽檔案系統,其工作目錄為/boot/grub/
下面來具體說下grub的三個階段啟動故障即恢復方法:
stage1
由於某種原因mbr的前446位元組無效,即stage1階段故障
1
2
3
4
dd
if
=
/dev/zero
of=
/dev/sda
bs=1 count=446
#模擬故障
hexdump -c -n 512
/dev/sda
#檢查
此時磁碟將不可用,直接跳到光碟介面(如果有的話),接著通過光碟進入救援模式
1
2
3
4
5
6
7
8
9
10
chroot
/mnt/sysimage
#切根,否則grub-install不生效
grub-
install
/dev/sda
#安裝grub,自動修復stage1,也會修復stage1.5
hexdump -c -n 512
/dev/sda
#檢查是否修復
sync
#同步磁碟
exit
退出並重啟,此時系統就可以正常啟動
同理stage1.5出現故障也可以使用此方法恢復
下面說一下stage1.5故障的另一種恢復方法
模擬故障,破壞磁碟mbr後的20個扇區(只要破壞stage1.5即可)
1
2
dd
if
=
/dev/zero
of=
/dev/sda
bs=1 count=10240 seek=512
hexdump -c -n 10552
/dev/sda
重啟系統,進救援模式,按esc鍵切根1
2
chroot
/mnt/sysimage
#切根,否則grub-install不生效
安裝grub,此處使用互動方式
1
2
3
4
5
6
grub
#進入grub模式
root (hd0,0)
#指定根在第1個磁碟的第1個分割槽
setup (hd0)
#grub安裝在第1塊磁碟
退出、重啟
centos6啟動流程及救援恢復
熟悉系統啟動流程對於我們學習linux系統是非常有幫助的,雖然基礎,但能幫助我們更加理解linux系統的工作機制,以下以centos6啟動流程介紹 mbr master boot record 引導 mbr記錄一般是在磁碟 0 磁軌 1 扇區,共512個位元組,bios找到並讀取mbr到記憶體中。前...
CentOS 6啟動流程
載入bios的硬體資訊,獲取第乙個啟動裝置 讀取第乙個啟動裝置mbr的引導引導程式 grub 的啟動資訊 載入核心作業系統的核心資訊,核心開始解壓縮,並嘗試驅動所有的硬體裝置 核心執行init程式,並獲取預設的執行資訊 init程式執行 etc rc.d rc.sysinit檔案,重新掛載根檔案系統...
centos6 啟動流程
具體過程 1 載入bios的硬體資訊,執行bios內建程式。2 讀取mbr master boot record 中boot loader中的引導資訊。3 載入核心kernel boot到記憶體中。4 核心開始執行 sbin init,並載入 etc inittab,執行rc.sysinit進行初始...