2015-10-5系统崩溃记录
在3系统级别切换至5系统级别的时候,出现了报错
[root@localhost linux]# init 5
Calling the system activity data collector (sadc)…
并且在切换到3系统级别的时候也是出现了同样的提示
Calling the system activity data collector (sadc)…
立刻拍摄当前系统快照,并且恢复上一次系统快照,进行系统级别切换的操作
之前快照版本的系统没有任何问题,再次切换到当前版本系统时,错误依旧
整理了一下两个版本系统之间我做的系统改动
我关闭了selinux防火墙
我更改了系统字体,由en-US改为了zh-CN
我把开机系统自动启动级别5改为了3
我关闭了大部分开机自启动服务
我更改了CRT远程服务的端口,由22改为了52113
我更改了网络监听地址,由0.0.0.0改为自己本身ip
进过逻辑排查,我排除了2.5.6的可能性,把原因锁定在了1.4上,但不排除3的可能性
按照顺序来,我先把selinux防火墙重新开启,发现了自己十月一日更改时做的备份,备份真的很重要,也方便很多,直接cp回来就OK了
[root@localhost selinux]# getenforce
Disabled
[root@localhost selinux]# ls /etc/selinux/
config restorecond.conf semanage.conf
config.cp.20151001 restorecond_user.conf targeted
重新开启防火墙,
[root@localhost selinux]# cp config.cp.20151001 config
cp: overwrite `config'? y
检查一下
[root@localhost selinux]# cat config | grep SELINUX=
SELINUX=enforcing
这个防火墙比较蛋疼,必须要重启
启动看到这个,selinux启动还要读条。。。
Selinux启动是搞定了,但是并没有什么作用提示依然存在
接着就更改启动级别
[root@localhost linux]# cat /etc/inittab
# inittab is only used by upstart for the default runlevel.
#
# ADDING OTHER CONFIGURATION HERE WILL HAVE NO EFFECT ON YOUR SYSTEM.
#
# System initialization is started by /etc/init/rcS.conf
#
# Individual runlevels are started by /etc/init/rc.conf
#
# Ctrl-Alt-Delete is handled by /etc/init/control-alt-delete.conf
#
# Terminal gettys are handled by /etc/init/tty.conf and /etc/init/serial.conf,
# with configuration in /etc/sysconfig/init.
#
# For information on how to write upstart event handlers, or how
# upstart works, see init(5), init(8), and initctl(8).
#
# Default runlevel. The runlevels used 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:
查看启动文件可以看到目前的启动级别是3级别,直接启动进来没有任何问题,那我现在改回到5级别为系统的默认启动级别,这里为了尽快处理问题为主,直接vi修改
修改好了再检查一下
[root@localhost linux]# cat /etc/inittab |grep id:
id:5:initdefault:
继续重启
然后发现,系统直接进不去了
卡在了读取界面
切换到CRT观察一下,意外的是CRT竟然登录进去了,说明系统启动完成了,只是无法加载图形化界面,那基本就可以确定了是关于5系统级别的某项启动服务没有开启
为了验证自己的猜想,在CRT下直接init 3切换一下级别
果然3级别直接让我输入账号密码准备让我登录了
既然确定具体原因了,就不浪费时间了,直接把矛头指向开机启动服务
我现在要做的就是把排除每一个启动服务,当然一些用肉眼看就能排除的就不需要额外浪费功夫了,比如network,ip6,VMtools等,为了减少工作量,我找到了上一个快照版本系统的启动服务的状态,能明显看出来,我关掉了很多
最后,罪魁祸首被抓了出来,messagebus这个服务
事件监控服务,负责在各个系统进程之间传递消息。google是这么定义它的
不过在我这里,他也就起到能init 5的作用,检查的时候还发现,我把haldaemon服务也给关掉了,平时都用CRT这些错误还真的很难发现
开启这两个服务的开机自启动
[root@localhost linux]# chkconfig |egrep 'messagebus|haldaemon' | awk '{print "chkconfig " $1 " on"}' | bash
检查一下
[root@localhost linux]# chkconfig --list | egrep 'messagebus|haldaemon'
haldaemon 0:off 1:off 2:on 3:on 4:on 5:on 6:off
messagebus 0:off 1:off 2:on 3:on 4:on 5:on 6:off
然后init 5一下,登录成功