VMware上的虛擬機開機黑屏如何解決?
前言:
作為一個剛接觸springBoot和Angular的小白,決定使用Linux系統(tǒng),一條指令就能安裝各種環(huán)境,配置起來感覺比win10方便的多,實在是非常適合用來搞開發(fā),然而在下只是一名家境貧寒的學(xué)生黨,么有多余的錢買一臺新的電腦,手上只有一臺華碩的飛行堡壘5代fx80,眾所周知,飛行堡壘裝Linux系統(tǒng)是非常不穩(wěn)的,身邊很多的同學(xué),包括一個學(xué)長,他的電腦是上代飛堡,Unbuntu用的好好的,突然顯卡驅(qū)動就沒了,導(dǎo)致筆記本不能外接顯示器,也有同學(xué)根本就裝不上顯卡驅(qū)動。。。所以經(jīng)過一番思想斗爭,就決定還是使用vmware,整一個linux虛擬機。一開始虛擬機是能正常使用的,然而突然有一天打開電腦,打開虛擬機,再也無法進入系統(tǒng),一遍又一遍重啟也還是黑屏。
如圖
解決問題
等了很久也沒有反應(yīng),但是掛起時能夠看到顯示,當(dāng)時以為虛擬機壞了,還以為要重裝系統(tǒng)和環(huán)境了,后來比較幸運的找到了解決辦法,需要我們在Windows下的cmd窗口中輸入 :
netsh winsock reset
然后重啟計算機即可。
但是這是為什么呢?這條指令又是什么意思呢?
什么是 netsh winsock reset
一下內(nèi)容摘自百度百科,附上鏈接:https://baike.baidu.com/item/netsh%20winsock%20reset
netsh winsock reset命令,作用是重置 Winsock 目錄。如果一臺機器上的Winsock協(xié)議配置有問題的話將會導(dǎo)致網(wǎng)絡(luò)連接等問題,就需要用netsh winsock reset命令來重置Winsock目錄借以恢復(fù)網(wǎng)絡(luò)。這個命令可以重新初始化網(wǎng)絡(luò)環(huán)境, 以解決由于軟件沖突、病毒原因造成的參數(shù)錯誤問題。 netsh是一個能夠通過命令行操作幾乎所有網(wǎng)絡(luò)相關(guān)設(shè)置的接口,比如設(shè)置IP,DNS,網(wǎng)卡,無線網(wǎng)絡(luò)等,Winsock是系統(tǒng)內(nèi)部目錄,Winsock是Windows網(wǎng)絡(luò)編程接口,winsock工作在應(yīng)用層,它提供與底層傳輸協(xié)議無關(guān)的高層數(shù)據(jù)傳輸編程接口,reset是對Winsock的重置操作。當(dāng)執(zhí)行完winsock的命令重啟計算機后,需要重新配置IP。
為什么要netsh winsock reset
網(wǎng)上有一種說法,是因為啟動了wegame之后,wegame修改了一些網(wǎng)絡(luò)的相關(guān)參數(shù),導(dǎo)致和vm的配置沖突。下面是知乎網(wǎng)友的解釋:
虛擬機和主機之間的通信,基本上是以 socket 的方式進行通信的(這里的 socket 泛指一切 socket,包括本地的、網(wǎng)絡(luò)的等等)
某個程序通過 LSP 給系統(tǒng)的 TCP/IP stack 注入了自己的 DLL,如果程序退出時,沒有把這個 DLL 收回來,或者回收失敗、沒有徹底回收等,那么這個 DLL 殘留的東西影響了整個 TCP/IP stack,而且是永久性的。
每個 socket 收發(fā)的數(shù)據(jù)包是要經(jīng)過 TCP/IP stack 的,這個 DLL 可能會對這些 socket 的數(shù)據(jù)包做了些什么操作(比如修改數(shù)據(jù)、直接丟棄等等),然后所以你的虛擬機就黑屏了……
所以我初步猜測,這個“某個程序”,應(yīng)該是wegame。