0x00 問題場景
1. 環境配置
角色 | 版本 | 位數 | 備註 | |
---|---|---|---|---|
虛擬機軟件 | VMware Workstation | 15 | \ | 原始版本12,升到15 |
Host OS | Windows 7 Professional | 6.1.7601, Service Pack 1 | 64-bit | \ |
Guest OS | Windows XP | service Pack 3 | 32 bit | \ |
2. 環境說明
- VMware在很久以前是version12,後來因爲要兼容一個高版本虛擬就升級到了15。
- 以前裝的xp虛擬機,使用沒有任何問題。開機很快,操作很流暢。不知爲什麼前一段時間突然變得很卡。看了下虛擬機中的cpu使用率達到了100%,一度懷疑中了病毒。而且曾經配置過雙機調試,是不是系統的某個debug模式沒有關。
0x01 問題分析
1. 是否爲電腦病毒
嚴重懷疑中了病毒。
排查
XP中有安裝360,然而在虛擬機十分卡頓的情況下,打開任務管理器需2-3分鐘,殺毒估計得等到過年。這裏LZ直接恢復到一版純淨的快照。
恢復後發現,cpu使用率依然是滿載。說明這可能不是病毒的問題,因爲即使是,VMware 虛擬機逃逸漏洞相關的利用門檻還是太高了,不會普遍存在。
2. 是否爲XP虛擬機配置變更導致
莫非是xp虛擬機本身配置已經被更改了?虛擬機中毒了?
排查
徹底銷燬xp的虛擬機。使用乾淨的xp鏡像新建虛擬機。
然而,安裝鏡像一般半個小時,整整等了3個小時。安裝過程中能感受到明顯卡頓,估計cpu在安裝過程就滿載了。
作爲剛出鍋的熱乎虛擬機,在鍋裏就就炸裂,完全無法理解。
3. 死馬當活馬醫
52破解上的老貼,說是把【設備管理】中的【計算機】的 ACPI Multiprocessor PC 模式 改爲 Standard PC即可消除問題。
排查
按照此法,在xp卡爆的情況下完成了操作。重啓後,各種彈窗發現新xx。當然,還是卡到爆。
那麼問題來了,什麼是ACPI?
ACPI其實是一種電源管理標準,Advanced Configuration and Power Interface,一般翻譯成高級電源管理,是Intel、Microsoft和東芝共同開發的一種電源管理標準。
ACPI三種電源模式
- ACPI Multiprocessor PC 用於多處理器 ACPI 計算機
- ACPI Uniprocessor PC 用於只安裝了一個處理器的 ACPI 多處理器主板
- Advanced Configuration Power Interface PC 用於帶有單處理器 ACPI 系統的單處理器主板
2000年以前的老機器,主要支持Standard PC電源模式(任何標準 PC、非 ACPI、或非 MPS)
2003年以前的主要支持Advanced Configuration Power Interface PC模式
2003年以後的主要支持ACPI Uniprocessor PC
這下明白了,ACPI Multiprocessor PC 是2003年以後出來的高級電源管理模式。我這xp是9102的虛擬機,必須是多處理器,硬件配置擺着呢,要回到原始社會?而且系統安裝時就在炸,跟電源驅動不可能有半毛錢關係。
以後有同學遇到這個問題時,就不要再去採坑了,這條路行不通。
4. 虛擬化硬件加速導致
國內外的網友都遇到過這種問題,情況基本都是殺毒軟件開啓了虛擬化硬件加速功能,導致虛擬機卡死。比如,國內的火絨和360,國外的avast等。我第一時間否定了這種場景,因爲我的機器是裸奔的。別問我看片怎麼辦?我也不會說虛擬機能做甚多事情的。
排查
廢話就不多說了,關鍵問題就在這裏。只能是虛擬化的問題導致的cpu過載問題。剩下的就是尋找虛擬化在那裏配置。
- vmware虛擬機自身有【虛擬化引擎】的配置,然而模式是關閉的,也不用費心去開了。關還關不了呢。
- LZ經過一天思考人生,神交徐階,夢聊張太嶽,謂曰:
君子處其實,不處其華;治其內,不治其外。
頓悟,是Host OS本身的問題吧。
重啓電腦,進入BIOS設置界面,關閉虛擬化中的VT for Direct I/O選項。保存後,啓動電腦。xp開機速度快的起飛,運行速度也正常了。cpu恢復了正常。
切記:
虛擬化本身選項是不能關的,因爲VMware需要。虛擬化的硬件加速功能不是必要條件,這裏關閉就可以了。
0x02 解決方案
問題原因爲虛擬化硬件加速與VMware產生了衝突,需要關閉掉硬件加速。
如果有殺毒軟件的,可以看下殺毒軟件中是否有該配置。
如果沒有殺毒軟件,可以重啓電腦,在BIOS設置中關閉掉VT for Direct I/O選項。
0x03 參考文獻
https://docs.vmware.com/en/VMware-vSphere/6.5/com.vmware.vsphere.monitoring.doc/GUID-5F8147A1-6416-4D29-BA3D-E4CED3966016.html