CentOS 6 啟動故障與恢復

2021-09-20 21:00:23 字數 3767 閱讀 8633

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

mvinitramfs-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

fileinitramfs-2.6.32-696.el6.x86_64.img

cpio -id< initramfs-2.6.32-696.el6.x86_64.img

tree |grepext4.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

ddif=/dev/zeroof=/dev/sdabs=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

ddif=/dev/zeroof=/dev/sdabs=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進行初始...