Linux排除啓動類故障

在LInux啓動過程中,涉及MBR主引導記錄、GRUB啓動菜單、系統初始化配置文件等各方面,其中任何一個環節出故障都可能會導致系統啓動的失常。下面將介紹一些啓動類故障修復的實例。這裏的Linux主機是vmware上的虛擬機。

1.MBR扇區故障

MBR扇區又稱爲主引導扇區,總共512字節,裏面不僅有系統包含的引導程序數據446字節,還有整個硬盤的分區表記錄。當主引導扇區發生故障時,將無法進入引導菜單,加載系統。

下面開始做對MBR扇區進行備份,模擬破壞,修復的實驗。

實驗前提
首先準備一塊硬盤做MBR扇區數據備份,用fdisk工具查看硬盤列表信息,再用fdisk工具對新增的硬盤/dev/sdb進行規劃分區,sdb硬盤被劃分sdb1分區。
Linux排除啓動類故障
Linux排除啓動類故障
Linux排除啓動類故障

實驗操作步驟如下所示:
第一步,開始備份MBR扇區數據
輸入dd命令將第一塊硬盤sda的MBR扇區備份到第二塊硬盤的sdb1分區中,並將其掛載到/backup目錄中。
Linux排除啓動類故障

第二步,模擬MBR扇區故障
仍然輸入dd命令,從設備文件zero中讀取512字節的數據。,將其覆蓋到第一塊硬盤sda,人爲的將MBR扇區的記錄覆蓋,從而破壞MBR扇區中的數據。
Linux排除啓動類故障

完成上述操作後,重啓Linux系統,無法找到可用的操作系統,將會無法啓動主機。
第三步,從備份文件中恢復MBR扇區數據
由於MBR扇區被破壞以後,無法從硬盤啓動Linux系統,所以需要使用其他的硬盤中的操作系統進行引導,那麼就需要獲得一個可以執行命令的shell環境,從備份文件中恢復MBR扇區中的數據。操作步驟如下所示。

當出現VMware的logo界面時按Esc鍵進入引導選擇項
Linux排除啓動類故障
Linux排除啓動類故障

  1. 首先當出現安裝嚮導界面時,選擇“Rescue installed system”,以急救模式引導光盤中的Linux系統。
    Linux排除啓動類故障
  2. 然後依次按enter鍵選擇默認的語言,鍵盤格式,提示是否配置網卡時選擇“No”,選擇“Continue”確認並繼續,接下來出現rescue窗口,單擊“OK”。
    Linux排除啓動類故障
    Linux排除啓動類故障
    Linux排除啓動類故障
    Linux排除啓動類故障
    Linux排除啓動類故障

  3. 接着進入到帶“bash-4.1#”提示符的Bash Shell環境,先掛載保存有備份文件的硬盤分區sdb1,並將數據恢復到硬盤“/dev/sda”中。完成恢復操作後,執行exit命令退出臨時shell環境。
    Linux排除啓動類故障
    Linux排除啓動類故障

  4. 最後執行reboot命令,系統自動重啓。
    Linux排除啓動類故障
    Linux排除啓動類故障

綜上,解決MBR扇區故障的思路一般是:提前做好備份文件,以安裝光盤引導進入急救模式,從備份文件中恢復。

2. 修復GRUB引導故障

GRUB是大多數Linux系統默認使用的引導程序,可以通過啓動菜單的方式選擇進入不同的操作系統。當配置文件/boot/grub/grub.conf(7版本/boot/grub2/grub.conf)丟失,或者關鍵配置出現錯誤或者MBR記錄中的引導程序遭到破壞時,Linux主機啓動後可能只出現“grub>”的提示符,無法完成進一步的系統啓動過程,如圖所示:
以RedHat6爲例
Linux排除啓動類故障
模擬grub故障(刪除grub配置文件)

rm -rf /boot/grub/grub.conf

1. 直接在提示符後可以進行編輯
通過輸入對應的引導命令,可參考其他相同版本系統中的grub配置文件的語句,然後執行boot命令即可正常引導Linux系統。不過由於“grub>”環境中使用的命令複雜,難以記住相關的命令選項,很少有人選擇這種方式恢復grub配置文件。

[root@RedHat6-1 ~]# cat /boot/grub/grub.conf 
# grub.conf generated by anaconda
#
# Note that you do not have to rerun grub after making changes to this file
# NOTICE:  You have a /boot partition.  This means that
#          all kernel and initrd paths are relative to /boot/, eg.
#          root (hd0,0)
#          kernel /vmlinuz-version ro root=/dev/sda2
#          initrd /initrd-[generic-]version.img
#boot=/dev/sda
default=0
timeout=5
splashimage=(hd0,0)/grub/splash.xpm.gz
hiddenmenu
title Red Hat Enterprise Linux (2.6.32-431.el6.x86_64)
    root (hd0,0)                    //其他版本的grub配置語句
    kernel /vmlinuz-2.6.32-431.el6.x86_64 ro root=UUID=ef72b552-acad-4ffe-a665-1876d4a27bce rd_NO_LUKS  KEYBOARDTYPE=pc KEYTABLE=us rd_NO_MD crashkernel=128M LANG=zh_CN.UTF-8 rd_NO_LVM rd_NO_DM rhgb quiet
    initrd /initramfs-2.6.32-431.el6.x86_64.img

根據上述的配置文件內容手動輸入
Linux排除啓動類故障
登錄進系統之後,直接重建grub配置文件,具體內容參考其他正常主機的文件。
2. 使用安裝光盤引導進入急救模式的Shell環境,通過之前的備份文件恢復重建grub.conf配置文件

cp /boot/grub/grub.conf /opt/grub.conf.bak      //grub配置文件備份

若分區表未破壞,則急救模式將會找到硬盤中的Linux根分區,並將其掛載到光盤目錄結構中的/mnt/sysimage/文件夾中,切換到待修復的系統根環境,從備份文件中恢復。
(1)進入光盤引導界面,詳細步驟參考上述從備份中恢復MBR扇區步驟。

(2)進入“bash-4.1#”的Shell 環境以後,執行“chroot /mnt/sysimage”命令切換到系統的根環境。

Linux排除啓動類故障
(3)重啓系統,顯示正常,查看grub配置文件。
Linux排除啓動類故障

[root@RedHat6-2 ~]# ls /boot/grub/ | grep grub.conf
grub.conf

但是需要注意的是如果MBR扇區引導程序出現損壞,可能在重建grub.conf配置文件後仍然無法啓動系統,這時就要通過急救模式的Shell環境重新安裝grub引導程序。

bash-4.1#chroot /mnt/sysimage   //切換到Linux系統根環境
sh-4.1#grub-install /dev/sda        //重新安裝grub引導程序
sh-4.1#exit                                  //退出chroot環境
bash-4.1#reboot                         //重啓系統

3. 遺忘root用戶的密碼

大多數Linux主機中具有root權限的用戶只有一個,所以需要通過其他路徑重設root賬號的密碼。最簡便的路徑是在開機時通過修改GRUB引導參數進入單用戶模式再重置root密碼。

  • 以RedHat6系統爲例
    第一步重新啓動主機,當出現秒數倒計時按Esc鍵選擇要進入的操作系統,再按e鍵進入編輯模式。
    Linux排除啓動類故障
    Linux排除啓動類故障
    第二步定位到以kernel開頭的一行並按e鍵在行尾添加“single”的啓動參數表示要進入到單用戶模式。
    Linux排除啓動類故障
    Linux排除啓動類故障

第三步按enter鍵確認後,按b鍵將系統引導進入單用戶模式,直接進入shell環境。
Linux排除啓動類故障
第四步在單用戶的shell環境中執行“passwd root”命令重新設置root用戶的密碼,輸入“reboot”命令去重啓系統。
Linux排除啓動類故障
Linux排除啓動類故障

  • RedHat7重置root密碼
    第一步重新啓動主機,選擇要進入的操作系統,並按e鍵進行編輯。
    Linux排除啓動類故障

第二步找到linux16開頭的地方,按end鍵到最後,輸入rd.break或者init=/bin/sh,按ctrl+x進入
Linux排除啓動類故障
第三步進入“switch_root:/# ”shell環境,切換到系統的根環境,重置root密碼。
Linux排除啓動類故障
第四步輸入重置的密碼,查看系統的登錄是否正常。
Linux排除啓動類故障

4. 掛載故障

由於用戶寫入大量的惡性數據到硬盤上,所以導致硬盤掛不上去出現掛載故障。下面就模擬掛載故障並進行解決。操作步驟如下所示:
第一步新添加一個硬盤,用fdisk工具對磁盤分區,並進行格式化。
首先打開虛擬機設置,按照嚮導添加硬盤。
Linux排除啓動類故障
然後重啓系統,對添加的硬盤分區並格式化。
Linux排除啓動類故障
Linux排除啓動類故障
Linux排除啓動類故障

第二步將系統/dev/sr0的無用數據寫入到新添加的磁盤上去。
Linux排除啓動類故障

第三步新建一個路徑/abc,用mount命令將磁盤掛載到/abc路徑下,有提示信息掛載不上去。
Linux排除啓動類故障
第四步輸入fsck命令修復磁盤,再重新掛載上去。
Linux排除啓動類故障
Linux排除啓動類故障
以上皆是個人總結,有不足之處,還望指教。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章