VMware 上的虚拟机开机黑屏,解决方案

前言:

作为一个刚接触springBoot和Angular的小白,决定使用Linux系统,一条指令就能安装各种环境,配置起来感觉比win10方便的多,实在是非常适合用来搞开发,然而在下只是一名家境贫寒的学生党,么有多余的钱买一台新的电脑,手上只有一台华硕的飞行堡垒5代fx80,众所周知,飞行堡垒装Linux系统是非常不稳的,身边很多的同学,包括一个学长,他的电脑是上代飞堡,Unbuntu用的好好的,突然显卡驱动就没了,导致笔记本不能外接显示器,也有同学根本就装不上显卡驱动。。。所以经过一番思想斗争,就决定还是使用vmware,整一个linux虚拟机。一开始虚拟机是能正常使用的,然而突然有一天打开电脑,打开虚拟机,再也无法进入系统,一遍又一遍重启也还是黑屏
如图
image.png

解决问题

等了很久也没有反应,但是挂起时能够看到显示,当时以为虚拟机坏了,还以为要重装系统和环境了,后来比较幸运的找到了解决办法,需要我们在Windows下的cmd窗口中输入 :
netsh winsock reset
然后重启计算机即可
但是这是为什么呢?这条指令又是什么意思呢?

什么是 netsh winsock reset

一下内容摘自百度百科,附上链接
https://baike.baidu.com/item/netsh%20winsock%20reset
netsh winsock reset命令,作用是重置 Winsock 目录。如果一台机器上的Winsock协议配置有问题的话将会导致网络连接等问题,就需要用netsh winsock reset命令来重置Winsock目录借以恢复网络。这个命令可以重新初始化网络环境,以解决由于软件冲突、病毒原因造成的参数错误问题。 netsh是一个能够通过命令行操作几乎所有网络相关设置的接口,比如设置IP,DNS,网卡,无线网络等,Winsock是系统内部目录,Winsock是Windows网络编程接口,winsock工作在应用层,它提供与底层传输协议无关的高层数据传输编程接口,reset是对Winsock的重置操作。当执行完winsock的命令重启计算机后,需要重新配置IP。

为什么要netsh winsock reset

网上有一种说法,是因为启动了wegame之后,wegame修改了一些网络的相关参数,导致和vm的配置冲突。下面是知乎网友的解释:
虚拟机和主机之间的通信,基本上是以 socket 的方式进行通信的(这里的 socket 泛指一切 socket,包括本地的、网络的等等)

某个程序通过 LSP 给系统的 TCP/IP stack 注入了自己的 DLL,如果程序退出时,没有把这个 DLL 收回来,或者回收失败、没有彻底回收等,那么这个 DLL 残留的东西影响了整个 TCP/IP stack,而且是永久性的。

每个 socket 收发的数据包是要经过 TCP/IP stack 的,这个 DLL 可能会对这些 socket 的数据包做了些什么操作(比如修改数据、直接丢弃等等),然后所以你的虚拟机就黑屏了……
所以我初步猜测,这个“某个程序”,应该是wegame


奇天大郑
70 声望10 粉丝