共计 1273 个字符,预计需要花费 4 分钟才能阅读完成。
VMware 上的虚拟机开机黑屏,解决方案
前言:
作为一个刚接触 springBoot 和 Angular 的小白,决定使用 Linux 系统,一条指令就能安装各种环境,配置起来感觉比 win10 方便的多,实在是非常适合用来搞开发,然而在下只是一名家境贫寒的学生党,么有多余的钱买一台新的电脑,手上只有一台华硕的飞行堡垒 5 代 fx80,众所周知,飞行堡垒装 Linux 系统是非常不稳的,身边很多的同学,包括一个学长,他的电脑是上代飞堡,Unbuntu 用的好好的,突然显卡驱动就没了,导致笔记本不能外接显示器,也有同学根本就装不上显卡驱动。。。所以经过一番思想斗争,就决定还是使用 vmware,整一个 linux 虚拟机。一开始虚拟机是能正常使用的,然而突然有一天打开电脑,打开虚拟机,再也无法进入系统,一遍又一遍重启也还是黑屏
如图
解决问题
等了很久也没有反应,但是挂起时能够看到显示,当时以为虚拟机坏了,还以为要重装系统和环境了,后来比较幸运的找到了解决办法,需要我们在 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