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:22:12      編輯:Linux教程

 

一、系統故障分析方法和目標

  • 判斷問題的性質

重演出錯過程 
查找進一步信息 
從簡單的的方法入手 
在修改的時候備份配置文件

  • 修復Linux系統不同階段的故障

將系統引導到不同的運行級別 
使用救援模式 
二、系統故障排錯示例 
如下通過4個常見的示例說明系統故障排錯的過程,分別是:

  • 系統密碼不正確
  • mbr故障
  • /etc/fstab文件錯誤
  • /etc/inittab文件錯誤


三、系統密碼不正確(忘記了或者說想竊取修改)

  • 忘記登陸系統的root密碼,忘記grub引導管理器的密碼

這裡首先說明一個grup引導管理器密碼,通過設置該密碼可以防止人編輯啟動菜單畫面 
的選項,若要編輯必須輸入密碼才可以編輯。設置grub密碼的步驟如下: 
[root@51cto ~]# vim /boot/grub/grub.conf 
//編輯這個文件 
[root@51cto ~]# 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-version.img 
#boot=/dev/sda 
default=0 
timeout=5 
splashimage=(hd0,0)/grub/splash.xpm.gz 
#hiddenmenu 
password=123 
//在Linux系統標題上面添加這行 
title Red Hat Enterprise Linux Server (2.6.18-128.el5) 
root (hd0,0) 
kernel /vmlinuz-2.6.18-128.el5 ro root=LABEL=/ rhgb quiet 
initrd /initrd-2.6.18-128.el5.img 
保存文件退出…... 
然後重啟系統,可以發現提示信息說:直接回車可以啟動系統,如果要設置菜單選項請 
輸入“P”。要知道,如果系統沒設置grub密碼的話是可以直接編輯菜單選項的: 
 

 

輸入“P”,然後輸入先前設置的密碼123 
 

 

可以發現密碼驗證過後,提示信息為輸入“e”可以編輯菜單選項了 
 

 

 

輸入“e”: 
 

 

這樣就可以設置Linux系統啟動級別了,所以說,沒有設置grub密碼的話,就算不知道root 
帳號密碼,通過編輯菜單選項就可以通過level 1 啟動系統設置密碼了。 
當然,在設置grub密碼的時候一般是使用MD5加密的,通過如下方法設置: 
[root@51cto ~]# grub-md5-crypt 
Password: 
//輸入123 
Retype password: 
//輸入123 
$1$q5Ppn/$MZr67rBdz6kIhk0lYDvFh0 
//這一行就是123的MD5加密密碼 
然後編輯/boot/grub/grub.conf文件: 
[root@51cto ~]# vim /boot/grub/grub.conf 
[root@51cto ~]# 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-version.img 
#boot=/dev/sda 
default=0 
timeout=5 
splashimage=(hd0,0)/grub/splash.xpm.gz 
#hiddenmenu 
password --md5 $1$q5Ppn/$MZr67rBdz6kIhk0lYDvFh0 
//修改成MD5加密的 
title Red Hat Enterprise Linux Server (2.6.18-128.el5) 
root (hd0,0) 
kernel /vmlinuz-2.6.18-128.el5 ro root=LABEL=/ rhgb quiet 
initrd /initrd-2.6.18-128.el5.img 
當重啟系統後想編輯菜單選項就輸入加密密碼123 
回到正題:忘記登陸系統的root密碼,忘記grub引導管理器的密碼 
開機--->第一張光盤啟動(使用虛擬機測試就按ESC鍵)--->linux rescue(進入救援模式) 
--->一路回車--->chroot /mnt/sysimage--->vi /boot/grub/grub.conf編輯文件, 
刪除password行(去除或重設密碼)--->reboot--->進入單用戶模式 
(開機-進入菜單界面-按e-選擇第二項-e-在末尾輸入空格1或空格single-回車) 
--->passwd(設置系統用戶root的密碼)--->reboot 
具體的步驟很簡單就不顯示了,去除或重設了grub密碼,使用root密碼就可以登陸系統了 
四、mbr故障 
[root@51cto ~]# dd if=/dev/zero of=/dev/sda bs=46 count=1 
//模擬mbr故障 
1+0 records in 
1+0 records out 
46 bytes (46 B) copied, 0.000197012 seconds, 233 kB/s 
[root@51cto ~]# reboot 
//重啟系統查看 
Broadcast message from root (pts/0) (Sun Oct 10 08:05:01 2010): 
The system is going down for reboot NOW! 
結果發現啟動不了系統,於是進入救援模式: 
通過如下兩個命令就可以解決mbr故障了: 
chroot /mnt/sysimage 
grub-install /dev/sda 
然後重啟系統 
 

 

登陸正常了,顯示如下: 
 

 

五、/etc/fstab文件錯誤 
[root@51cto ~]# cat /etc/fstab      //查看該文件 
LABEL=/                 /                       ext3    defaults        1 1 
LABEL=/home             /home                   ext3    defaults        1 2 
LABEL=/boot             /boot                   ext3    defaults        1 2 
tmpfs                   /dev/shm                tmpfs   defaults        0 0 
devpts                  /dev/pts                devpts  gid=5,mode=620  0 0 
sysfs                   /sys                    sysfs   defaults        0 0 
proc                    /proc                   proc    defaults        0 0 
LABEL=SWAP-sda5         swap                    swap    defaults        0 0 
/dev/sdb1               /51cto                  ext3    ro,noexec       0 0 
如果把該文件刪掉重啟系統: 
[root@51cto ~]# rm /etc/fstab 
rm:是否刪除 一般文件 “/etc/fstab”? y 
[root@51cto ~]# ll /etc/fstab 
ls: /etc/fstab: 沒有那個文件或目錄 
[root@51cto ~]# reboot 
Broadcast message from root (pts/0) (Sun Oct 10 08:42:43 2010): 
The system is going down for reboot NOW! 
 

 

2010-10-11 00:43

由於該文件的丟失,所以系統硬盤無法使用了,只有重新把/etc/fstab恢復,必須手寫進去 
 

 

然後重啟系統查看: 
 

 

 

六、/etc/inittab文件錯誤 
[root@51cto ~]# cat /etc/inittab 

# inittab 
This file describes how the INIT process should set up 

the system in a certain run-level. 

# Author: 
Miquel van Smoorenburg, <[email protected]

Modified for RHS Linux by Marc Ewing and Donnie Barnes 

# Default runlevel. The runlevels used by RHS are: 

0 - halt (Do NOT set initdefault to this) 

1 - Single user mode 

2 - Multiuser, without NFS (The same as 3, if you do not have networking) 

3 - Full multiuser mode 

4 - unused 

5 - X11 

6 - reboot (Do NOT set initdefault to this) 

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 
# Trap CTRL-ALT-DELETE 
ca::ctrlaltdel:/sbin/shutdown -t3 -r now 
# When our UPS tells us power has failed, assume we have a few minutes 
# of power left. 
Schedule a shutdown for 2 minutes from now. 
# This does, of course, assume you have powerd installed and your 
# UPS connected and working correctly. 
pf::powerfail:/sbin/shutdown -f -h +2 "Power Failure; System Shutting Down" 
# If power was restored before the shutdown kicked in, cancel it. 
pr:12345:powerokwait:/sbin/shutdown -c "Power Restored; Shutdown Cancelled" 
# Run gettys in standard runlevels 
1:2345:respawn:/sbin/mingetty tty1 
2:2345:respawn:/sbin/mingetty tty2 
3:2345:respawn:/sbin/mingetty tty3 
4:2345:respawn:/sbin/mingetty tty4 
5:2345:respawn:/sbin/mingetty tty5 
6:2345:respawn:/sbin/mingetty tty6 
# Run xdm in runlevel 5 
x:5:respawn:/etc/X11/prefdm -nodaemon 
然後把文件刪除,重啟系統: 
[root@51cto ~]# rm /etc/inittab 
rm:是否刪除 一般文件 “/etc/inittab”? y 
[root@51cto ~]# reboot 
 

 

 

結果顯示不存在系統運行的進程,就是因為/etc/inittab的丟失造成的,當然修復的話不可能 
手寫進去了,那麼多內容啊! 
這時候進入救援模式,安裝initscripts軟件包,自動創建/etc/inittab文件 
當然要通過mount /dev/dhc 
/media/cdrom/掛載光驅,然後安裝rpm包 
 

 

 

 

 

登陸了系統,可以查看到該文件了!

Copyright © Windows教程網 All Rights Reserved