CentOS啟動故障排錯
centos 6
通過dd破壞前512個字節,模擬mbr損壞。(事先要做好備份)
dd if=/dev/zero of=/dev/sda bs=1 count=512
查看破壞情況
hexdump -C -n512 /dev/sda
破壞前
破壞後
未重啟的情況下,僅僅需要將備份的mbr重新讀入即可
dd if=/root/mbr of=/dev/sda bs=1 count=512 #if後是讀取內容的文件或設備 of後是目標設備或者文件 #這裏不再截圖,讀取後即可恢復正常
重啟後的現象(最好是掛載有鏡像文件可以進入救援模式)
硬盤無法引導
解決方案
進入救援模式(在品牌logo是按相應的鍵進入引導,這裏使用vm的方法)
1.在logo界面按ESC
2.選擇光盤引導
3.選擇救援模式啟動
.4.等待一段時間後進入如下頁面
5.一路回車,到網絡配置選擇no,掛載文件系統選擇跳過,之後開啟shell。
6.查看磁盤發現,發現可以識別磁盤,但是無法識別分區
ifconfig
ifconfig eth0 192.168.242.110
scp [email protected]:/root/mbr ./
8.通過dd恢復mbr記錄,之後重啟,如果擔心尚未寫入可以使用sync命令去同步
dd if=mbr of=/dev/sda bs=1 count=512
重啟後可以正常引導,同時查看mbr發現已經恢復
centos 7的恢復與6基本相同,僅僅是救援模式的界面略有差別,這裏不過多重復書寫
破壞grub第一階段
破壞前446個字節,模擬grub第一階段的損壞
dd if=/dev/zero of=/dev/sda bs=1 count=446
centos 6
未重啟
法一:grub-install可以實現1 1.5 2的全步驟恢復
grub-install /dev/sda
法二:grub命令
grub
root (hd0,0) 這裏的root指的是/boot分區
setup (hd0) 寫入到硬盤
quit
grub命令的修復依賴於/boot/grub下的文件,若這些文件被破壞則無法使用grub命令去修復
重啟(救援模式下)
無法引導,現象如下
1.進入救援模式
這裏進入和之前破壞mbr基本相同,但是在下圖所示的地方要選擇continue
2.切換根目錄
chroot /mnt/sysimage
3.運行grub-install
grub-install /dev/sda
4.執行sync之後exit,reboot
centos7
centos7使用的是grub2,取消了正常啟動系統後,通過grub命令進入grub終端的方式,與6相比,7可以使用grub2-install命令進行修復,具體過程同6基本相近。
重啟後狀態
進入救援模式修復
grub2-install後執行sync 退出根目錄切換狀態reboot,正常啟動
破壞grub的1.5階段
centos 6
使用dd模擬破壞1.5階段
dd if=/dev/zero of=/dev/sda bs=1 count=10000 skip=512 seek=512
破壞1.5階段可以上述破壞1階段完全一樣的解決方案,因此不做重復書寫
重啟後的現象,硬盤可以正常引導第一階段,但是會在1.5階段卡死,光標不斷閃爍。
centos 7也與破壞1階段相同
刪除boot目錄下的所有文件
centos 6
刪除boot目錄下所有文件
rm -rf /boot
重啟後現象
法一:
1.進入救援模式
2.切換根目錄
chroot /mnt/sysimage
3.掛載光盤
mount /dev/sr0 /media
4.復制光盤目錄下的vmlinuz到/boot
cp /media/isolinux/vmlinuz /boot/
5.進入/boot目錄並且生成initramfs.img文件
cd /boot
mkinitrd initramfs.img `uname -r`
6.使用grub-install 生成grub目錄
grub-install /dev/sda
7.編輯grub.confg配置文件
vim grub/grub.conf
default=0
timeout=5
title linux
kernel /vmlinuz root=/dev/sda2
initrd /initramfs.img
#這裏的root指的是根目錄 kernel和initrd 後跟的是/boot目錄下的對應文件
#若根和boot在同一分區則應當寫成
kernel /boot/vmlinuz root=/dev/sda2
initrd /boot/initramfs.img
這裏的kernel和initrd選項不能互換,kernel必須在文件系統前進行引導。
8.配置完成後,sync,退出切換根模式,執行重啟
法二
1.進入救援模式
2.掛載光盤並且rpm -ivh kernel-version.rpm --root=/mnt/sysimage/ --force強制安裝
mkdir /media
mount /dev/sr0 /media
rpm -ivh /media/Packages/kernel-2.6.32-696.el6.x86_64,rpm --root=/mnt/sysimage/ --force
3. 切換根目錄
chroot /mnt/sysimage
4.生成grub目錄
grub-install /dev/sda
5.編輯grub.conf配置文件
vi /boot/grub/grub.conf
6.保存,sync 退出根切換之後重啟
sync
exit
reboot
centos7
centos7系統法恢復方式和6流程基本相同,但是由於centos7使用了grub2,因此在某些階段會有一些差別
法一:
1.進入救援模式
2.掛載光盤並且rpm -ivh kernel-version.rpm --root=/mnt/sysimage/ --force強制安裝
mkdir /media
mount /dev/sr0 /media
rpm -ivh /media/Packages/kernel-3.10.0-862.el7.x86_64,rpm --root=/mnt/sysimage/ --force
3. 切換根目錄
chroot /mnt/sysimage
4.生成grub目錄
grub2-install /dev/sda
5.生成配置文件,grub2增加了一個自動查找文件生成配置文件的選項grub2-mkconfig,同時配置文件的後綴也改為了cfg
cd /boot/grub2
grub2-mkconfig -o grub.cfg
6.保存,sync 退出根切換之後重啟
sync
exit
reboot
法二:
1.進入救援模式
2.切換根目錄
chroot /mnt/sysimage
3.掛載光盤
mkdir /media
mount /dev/sr0 /media
4.復制光盤目錄下的vmlinuz到/boot
cp /media/isolinux/vmlinuz /boot/
5.進入/boot目錄並且生成initramfs.img文件
cd /boot
mkinitrd initramfs.img `uname -r`
6.使用grub-install 生成grub目錄
grub2-install /dev/sda
7.編輯grub.confg配置文件
這裏配置文件同樣可以使用grub2-mkconfig生成,但是卻無法識別手動拷貝的vmlinuz和initramfs.img文件,因此要手動修改配置文件。
grub2配置文件的參數可以參考下面這篇文章:
https://blog.csdn.net/lazyclough/article/details/5790385
8.配置完成後,sync,exit退出切換根模式,執行重啟
這裏centos7來說推薦使用方法一,grub2-mkconfig可以識別對應文件並且生成配置文件。
CentOS啟動故障排錯