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。