一、系統故障分析方法和目標
重演出錯過程
查找進一步信息
從簡單的的方法入手
在修改的時候備份配置文件
將系統引導到不同的運行級別
使用救援模式
二、系統故障排錯示例
如下通過4個常見的示例說明系統故障排錯的過程,分別是:
三、系統密碼不正確(忘記了或者說想竊取修改)
這裡首先說明一個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包
登陸了系統,可以查看到該文件了!