Windows XP Windows 7 Windows 2003 Windows Vista Windows教程綜合 Linux 系統教程
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟件教程
 Windows教程網 >> Linux系統教程 >> Linux教程 >> 各類linux系統故障排查大全

各類linux系統故障排查大全

日期:2017/2/7 9:21:23      編輯:Linux教程

 

linux的引導過程 開機自檢bios    mbr 引導   grub菜單   kernel 加載內核  init 系統初始化進程 加載各種個腳本  

id:3:initdefault: # System initialization. si::sysinit:/etc/rc.d/rc.sysinit l0:0:wait:/etc/rc.d/rc 0 l1:1:wait:/etc/rc.d/rc 1 l2:2:wait:/etc/rc.d/rc 2 l3:3:wait:/etc/rc.d/rc 3 l4:4:wait:/etc/rc.d/rc 4 l5:5:wait:/etc/rc.d/rc 5 l6:6:wait:/etc/rc.d/rc 6 /etc/rc.d/rc.sysinit   mbr 損壞 446字節 [root@zzu ~]# dd if=/dev/zero of=/dev/sda bs=446  count=1  

linux rescue    

chroot /mnt/sysimage grub-install /dev/sda   fstab損壞 mount -o remount,rw  / vim /etc/fstab   Linux操作系統啟動故障修復   Linux在啟動過程中會出現一些故障,導致系統無法正常啟動,本文列舉了幾個應用單用戶模式、GRUB命令操作、Linux救援模式的典型故障修復案例幫助讀者了解此類問題的解決。   一、單用戶模式   Linux提供了單用戶模式(類似Windows安全模式),可以在最小環境中進行系統維護。在單用戶模式(運行級別1)中,Linux引導進入根shell,網絡被禁用,只有少數進程運行。單用戶模式可以用來修改文件系統損壞、還原配置文件、移動用戶數據等。   以下列舉了幾個單用戶模式修復系統故障的典型案例:   案例二:root密碼忘記   1、在系統啟動過程中,會出現圖1所示畫面,按任意鍵,進入GRUB菜單選項。   2、按“e”鍵編輯GRUB引導菜單選項,圖2顯示為按“e”鍵後的GRUB屏幕。   圖2 GRUB引導菜單選項   通過箭頭鍵下移到kernel行,並按“e”鍵,得到圖3中顯示的編輯界面:   圖3 kernel行編輯界面   在尾行光標處添加single或者s,按回車鍵返回前一個屏幕,按“b”鍵進行引導,則系統自動進入單用戶模式,如果要改變root密碼,則執行命令:   sh-3.1# passwd root   更改成功後,執行命令exit退出重啟即可。     二、GRUB引導故障排除   有時Linux啟動後會直接進入GRUB命令行界面(只有“grub>”提示符),此時很多用戶就選擇了重新安裝GRUB甚至重新安裝系統。其實一般而言此故障的原因最常見的有兩個:一是GRUB配置文件中選項設置錯誤;二是GRUB配置文件丟失(還有少數原因,如內核文件或鏡像文件損壞、丟失,/boot目錄誤刪除等),如果是第一種情況,可以首先通過GRUB命令引導系統後修復;若是第二種情況,則要使用Linux救援模式修復了(本文後續有描述)。   首先,我們需要了解GRUB啟動系統的引導過程,grub.conf文件中主要的配置選項如下(注意,GRUB配置文件為/boot/grub/grub.conf, /etc/grub.conf只是此文件的軟鏈接):   grub.conf損壞 root (hd0,0) kernel /vmlinuz-2.6.18-164.el5 ro root=/dev/sda3 標簽或分區 initrd /initrd-2.6.18-164.el5.img   vim  /boot/grub/grub.conf default=0 timeout=3 hiddenmenu title Red Hat Enterprise Linux Server (2.6.18-164.el5)         root (hd0,0)         kernel /vmlinuz-2.6.18-164.el5 ro root=LABEL=/         initrd /initrd-2.6.18-164.el5.imgq   其中“title”段指定了GRUB引導的系統:“root”段指定了/boot分區所在的位置:“kernel”段指定了內核文件所在位置,內核加載時權限屬性為只讀(“ro”)以及指定根分區所在位置(root=LABEL=/);initrd指定了鏡像文件所在位置。所以GRUB在引導時順序為首先加載/boot分區,然後依次載入內核與鏡像文件。     案例:“title Fedora Core (2.6.18-1.2798.fc6)”段被誤刪除     此時,系統啟動後會自動進入“GRUB>”命令行,為排除故障我們可以依次做如下操作:     1、查找/boot/grub/grub.conf文件所在分區GRUB> find /boot/grub/grub.conf(hd0,0)     2、查看grub.conf文件錯誤GRUB>cat (hd0,0)/boot/grub/grub.conf建議系統安裝設置好後,要將grub.conf文件備份,如果有備份文件如grub.conf.bak,則此時可以查看備份文件,與當前文件比較,發現錯誤:GRUB>cat (hd0,0)/boot/grub/grub.conf.bak     3、確認錯誤後,先通過命令行方式完成GRUB引導,進入系統後再行修復grub.conf文件錯誤:1)指定/boot分區root (hd0,0)     2)指定內核加載kernel /boot/vmlinuz-2.6.18-1.2798.fc6 ro root=LABEL=/ rhgb quiet 3)指定鏡像文件所在位置initrd /boot/initrd-2.6.18-1.2798.fc6.img     提示:GRUB支持tab鍵命令補全功能   4、從/boot分區啟動boot (hd0,0)   命令行模式可以在GRUB菜單模式中通過按“c”鍵調用,也可以用於測試新編譯的內核(設置kernel、initrd引導新內核及鏡像文件)。增加對GRUB引導以及Linux系統引導知識的了解將對此類故障排除大有幫助。   三、Linux救援模式應用   當系統連單用戶模式都無法進入時或出現GRUB命令行也不能解決的引導問題,我們就需要使用Linux救援模式來進行故障排除了。步驟如下:     1、將Linux安裝光盤(如果使用CD光盤,則放入第一張引導光盤)放入光驅,設置固件CMOS/BIOS為光盤引導,當Linux安裝畫面出現後,在“boot:”提示符後輸入“linux rescue”回車進入救援模式。(想了解救援模式詳細信息,還可以按F5鍵查看)   圖5 進入救援模式   2、系統會檢測硬件,引導光盤上的Linux環境,依次提示你選擇救援模式下使用的語言(建議選擇默認的英文即可,根據筆者測試,部分Linux系統選擇中文會出現亂碼);鍵盤設置用默認的“us”就好;網絡設置可以根據需要,大部分故障修復不需要網絡連接,可不進行此項設置,選擇“No”。     3、接下來系統將試圖查找根分區,出現以下提示:圖6 掛載設置     默認在救援模式,硬盤的根分區將掛載到光盤Linux環境的/mnt/sysimage目錄下,默認選項“continue”表示掛載權限為讀寫:“Read-only”為只讀,如果出現檢測失敗可以選擇“skip”跳過。此處,因為要對系統進行修復,所以需要有讀寫權限,一般選擇默認選項“continue”。     進入下一步後,系統提示執行“chroot /mnt/sysimage”命令,可以將根目錄掛載到我們硬盤系統的根目錄中去。     案例一:雙系統啟動修復   當我們安裝雙系統環境,先安裝Linux再安裝Windows;或者已經安裝好雙系統環境的Windows損壞,在重新安裝Windows後,保存 GRUB的MBR(Master Boot Record,主引導記錄)會被Windows系統的自舉程序NTLDR所覆蓋,造成Linux系統無法引導。   1、如果要恢復雙系統引導,首先用上述方法進入救援模式,執行chroot命令如下:sh-3.1# chroot /mnt/sysimage   2、將根目錄切換到硬盤系統的根目錄中,然後執行grub-install命令重新安裝GRUB:sh-3.1# grub-install /dev/hda“/dev/hda”為硬盤名稱,如使用SCSI硬盤或Linux安裝在第二塊IDE硬盤,此項設置要做相應調整。     3、然後依次執行exit命令,退出chroot模式及救援模式(執行兩次exit命令):sh-3.1# exit系統重啟後,將恢復GRUB引導的雙系統啟動。   案例二:系統配置文件丟失修復   系統在引導期間,很重要的一個過程就是init進程讀取其配置文件/etc/inittab,啟動系統基本服務程序及默認運行級別的服務程序完成系統引導,如果/etc/inittab誤刪除或修改錯誤,Linux將無法正常啟動,如圖7所示。此時,只有通過救援模式才可以解決此類問題。     圖7 /etc/inittab文件丟失引導錯誤示例     1、有備份文件的恢復辦法進入救援模式,執行chroot命令後,如果有此文件的備份(強烈建議系統中的重要數據目錄,如/etc、/boot等要進行備份),直接將備份文件拷貝回去,退出重啟即可。如果是配置文件修改錯誤,如比較典型的/boot/grub/grub.conf及/etc/passwd的文件修改錯誤,也可以直接修正恢復。假設有備份文件/etc/inittab.bak,則在救援模式下執行:sh-3.1# chroot /mnt/sysimage sh-3.1# cp /etc/inittab.bak /etc/inittab     2、沒有備份文件的恢復辦法如果一些配置文件丟失或軟件誤刪除,且無備份,可以通過重新安裝軟件包來恢復,首先查找到/etc/inittab屬於哪一個RPM包(即便文件丟失,因為存在RPM數據庫,一樣可以查找到結果):sh-3.1# chroot /mnt/sysimage sh-3.1# rpm -qf /etc/inittab initscripts-8.45.3-1     退出chroot模式:sh-3.1# exit     掛載存放RPM包的安裝光盤(在救援模式下,光盤通常掛載在/mnt/source目錄下):sh-3.1# mount /dev/hdc /mnt/source     Fedora系統的RPM包存放在光盤Fedora/RPMS目錄下,其他Linux存放位置大同小異,這裡不一一列舉;另外,因為要修復的硬盤系統的根目錄在/mnt/sysimage下,需要使用——root選項指定其位置。覆蓋安裝/etc/inittab文件所在的RPM包:sh-3.1# rpm -ivh ——replacepkgs ——root /mnt/sysimage /mnt/source/Fedora/RPMS/ initscripts-8.45.3-1.i386.rpm其中的rpm命令選項“——replacepkgs”表示覆蓋安裝,執行完成後,即已經恢復了此文件。     如果想只提取RPM包中的/etc/inittab文件進行恢復,可以在進入救援模式後,執行命令:sh-3.1# rpm2cpio /mnt/source/Fedora/RPMS/initscripts-8.45.3-1.i386.rpm | cpio -idv  ./etc/inittab sh-3.1# cp etc/inittab / mnt/sysimage/etc   注意此命令執行時不能將文件直接恢復至/etc目錄,只能提取到當前目錄下,且恢復的文件名稱所在路徑要寫完整的絕對路徑。提取文件成功後,將其復制到根分區所在的/mnt/sysimage目錄下相應位置即可。
Copyright © Windows教程網 All Rights Reserved