这是一篇实践经验的分享,很多人遇到系统崩溃就放弃了,实在无从下手,最多把数据备份出来就重装系统了,但有些数据要备份得在顺利进入系统、业务软件运行正常的情况下备份,光拿硬盘上的文件是不行的。此时,这篇文档就是福音。
由于问题过于复杂,涉及细分的5个子问题,我只能尽可能把关键字体现到标题里,方便网友搜到,但标题长度有限,仍然可能不够充分。
为了文档嫩被搜到,我标题有点奇葩了,但能方便遇到问题的人通过这些关键词搜到文档。
系统宕机过一次,recovery模式,从winpe修复启动引导后发现丢失了drivers目录大量关键驱动,一开始替换了一个,然后又继续报 ,干脆从正常系统拿来drivers目录(自然是从winpe里去拿的)整体替换,替换后又报critical service failed,禁用驱动程序强制签名后不报critical service failed了但又报另一个错0xc000021a
0xc000021a,一般是catroot 、catroot2目录有异样
我通过winpe进到windows目录按时间倒序排列发现最上面的是WindowsUpdate.log,时间是6月21日 上午11:20,当时winevt(C:WindowsSystem32winevtLogs)里的日志的时间也是11:20,我猜测宕机可能跟update有关,而catroot*目录跟update有密切关系,我跟正常系统对比了下,发现问题机器的C:WindowsSystem32CatRoot{F750E6C3-38EE-11D1-85E5-00C04FC295EE} 丢得就剩十来个oem*.cat,从正常系统拿来文件替换后顺利进入系统。
虽然顺利进入系统了,但是发现远程桌面有异常。进入系统后,termservice虽是运行状态,但是依赖页签点过去是报错的,不止termservice一个服务,还有其他一些服务也这样,后来发现winmgmt是禁止启动的,我弄好winmgmt服务后,依赖页签的报错就消失了。
同时还发现每次重启后,termservice是正常运行的,3389端口监听也正常,但是mstsc远程到了证书弹窗界面点"是"后立即就报错并伴随termservice立即停止运行。另外还发现wireshark功能异常,不清楚是否跟远程异常殊途同因,wireshark的问题我单独解决了,另记录了一个文档:https://cloud.tencent.com/developer/article/2029138。
event id 226 RDPClient_SSL: An error was encountered while transitioning from TsSslStateHandshakeInProgress to TsSlStateDisconnecting in response to 9 (error code 0x80004005).
event id 226 RDPClient_DTLS: An error was encountered while transitioning from TsDtlsStateHandshakeComplete to TsSlStateDisconnecting in response to 5 (error code 0x80004005).
远程证书界面失败的报错我研究了,查了很多资料都没能解决,procmon抓不到有用的信息,找不到突破口。不过我清理了证书,重新联网下载了一份最全的证书还是无济于事。
最后用nirsoft.net里的UninstallView看了下软件列表,发现6月19日12:05安装的wireshark,因为wireshark自带vc库,我查了资料,说vc库依赖KB2999226这个补丁,所以当时应该是触发了补丁安装,从eventvwr的setup里看到了。
替换文件修复系统时,找相同镜像购买的其他正常机器,后来发现那个正常机器并没有安装wireshark,为了排除6月19日安装wireshark的影响,在那台正常机器安装了相同版本的wireshark,没出现异常,此时又拿了catroot目录,C:WindowsSystem32CatRoot{F750E6C3-38EE-11D1-85E5-00C04FC295EE} 目录里比没安装wireshark时多了5个文件
因为问题机器是安装过wireshark的,所以我就想再多这5个文件再在winpe里替换一次试试,替换后,每次重启机器后termservice不能自动运行了,手动也启动不起来,在替换这5个文件之前,原本虽然远程会报错并伴随termservice自动停止运行,但至少每次重启后termservice是自动运行的。
而这5个文件,oem12.cat是wireshark自带的npcap相关的,其他4个是KB2999226相关的。反向证明系统异常跟wireshark安装引入的update有直接关系(因为是安装wireshark才引入了安装vc库、vc库又依赖KB2999226,安装wireshark又会引入npcap)。
另外还发现,磁盘管理器不能操作分区。
此外,还发现servermanager拉不出角色列表,安装拉不出,卸载也拉不出,右上侧红色旗子那个地方点一下会看到
Performance counter refresh failed
Role and feature refresh failed
The remote procedure call failed
查了很多资料,所说的方案试了很多种都解决不了
https://docs.microsoft.com/en-us/answers/questions/157874/server-2012-r2-server-manager-refresh-faild.html
https://social.technet.microsoft.com/Forums/en-US/99d37f05-3b74-4318-9b28-1a372bdc86e7/server-2016-server-manager-refresh-error?forum=winservermanager
修复命令也报错
sfc /scannow
DISM.exe /Online /Cleanup-image /Scanhealth
好在替换catroot和drivers目录修复进入系统后,业务程序运行一切正常,最后只能备份业务后重装系统了。
这个问题我会继续关注、深究,如果最终修复了远程问题、servermanager的问题、wireshark的vc库和npcap安装报错问题、磁盘管理器不能操作分区的问题,我会及时分享出来。
后记:
上述几个问题几乎同一卡点,已经定位解决了,是因为system32目录丢了4个.dat文件( C:WindowsSystem32perf*.dat),但如何丢的确认不了原因。
C:WindowsSystem32perfc009.dat
C:WindowsSystem32perfd009.dat
C:WindowsSystem32perfh009.dat
C:WindowsSystem32perfi009.dat
文档篇幅太长,不利于阅读,wireshark安装遇到的问题我拆分写了2个文档,我都汇总于此。
https://cloud.tencent.com/developer/article/2029138
https://cloud.tencent.com/developer/article/2043666