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