VMware

出自 Arch Linux 中文维基

本文或本節需要翻譯。要貢獻翻譯,請訪問簡體中文翻譯團隊

附註: need translation(在 Talk:VMware# 中討論)

本文介紹的是最新的主要 VMware 版本,意思是 VMware Workstation Pro 和 Player 17、16、15、14 和 12.5。

你可能也會想了解下 /安裝 Arch Linux 為虛擬機

安裝[編輯 | 編輯原始碼]

這一章節正在考慮移除。

原因: 需移除 AUR 外的其它安裝方法,不應推崇手動安裝操作。 (在 Talk:VMware 討論)


您可以使用 VMware 捆綁包或軟體包 vmware-workstationAUR 進行安裝。 如果在 x86_64 上使用 VMware Workstation,則首選後者。

注意: 自版本 14 以來,VMware 已放棄對許多 CPU 的支持,包括早期的 Intel Core i7 CPU。請查看 Processor Requirements for Host Systems。如果較新版本不支持您的 CPU,則可以使用 vmware-workstation12AUR

VMware 捆綁包[編輯 | 編輯原始碼]

安裝正確的依賴:

並下載最新版的 VMware Workstation Pro 或者 Player

開始安裝:

# sh VMware-edition-version.release.architecture.bundle
提示:一些有用的標誌:
  • --eulas-agreed - 跳過 EULA
  • --console - 使用控制台UI.
  • --custom - 允許改變安裝目錄,例如到:/usr/local (確保在 #systemd 服務中更新 vmware-usbarbitrator.service 路徑)。
  • -I, --ignore-errors - 忽略致命錯誤。
  • --set-setting=vmware-workstation serialNumber XXXXX-XXXXX-XXXXX-XXXXX-XXXXX - 在安裝過程中設定許可證(適用於腳本化安裝)。
  • --required - 只詢問必答選項(搭配 --eulas-agreed--console 選項可進行靜默安裝)。

對於 System service scripts directory 一項,請使用 /etc/init.d(即默認值)。

注意: 在安裝過程中可能會出現 "No rc*.d style init script directories" 報錯,由於 Arch 使用 systemd,因此可以忽略該報錯。
提示:如後續需使用命令行重新編譯模塊,可以使用:
# vmware-modconfig --console --install-all

如果出現 Unable to install all modules 報錯,請參考 #無法加載 vmmon 模塊 一節。

為 x86_64 構建的軟體包[編輯 | 編輯原始碼]

vmware-workstationAURvmware-workstation16AURvmware-workstation15AURvmware-workstation14AURvmware-workstation12AURvmware-workstation11AUR 分別適用於 VMware Workstation 的版本 17、16、15、14、12 和 11,請根據需要選擇安裝。還需要為已安裝的內核安裝適當的頭文件包:例如 linux-headerslinux-lts-headers

對於 vmware-workstationAUR,請先啟動 vmware-networks-configuration.service 來生成 /etc/vmware/networking 文件。

然後,根據需要啟用以下一些服務:

  • vmware-networks.service 用於虛擬機網絡訪問(否則您將收到錯誤 could no connect 'ethernet 0' to virtual network 並且您將無法使用 vmware-netcfg
  • vmware-usbarbitrator.service 用於將 USB 設備連接到虛擬機
  • vmware-hostd.service 用於共享虛擬機(從版本 16 起不可用)

最後,加載 VMware 模塊:

# modprobe -a vmw_vmci vmmon

如果加載時長時間無響應,請參考 #無法加載 vmmon 模塊

配置[編輯 | 編輯原始碼]

內核模塊[編輯 | 編輯原始碼]

VMware Workstation 16.0 默認支持內核 5.8。 本文提到的舊版本及其原生支持的內核如下:15.5(最高為 5.4 的內核)、14.1.7 (4.18) 和 12.5.9 (4.12)。

對於 VMware 捆綁包版本,可以從 vmware-host-modules GitHub 存儲庫中找到針對最新內核構建 VMware 主機模塊所需的補丁集合。有關 VMware Workstation 12.5.5 及更高版本的最新模塊安裝說明,請參閱存儲庫中的 INSTALL 安裝文檔。

systemd 服務[編輯 | 編輯原始碼]

(可選)除直接使用 /etc/init.d/vmwarestart|stop|status|restart)和 /usr/bin/vmware-usbarbitrator 管理服務外,你也可以使用 .service 文件(vmware-workstationAUR 也提供了有部分修改的 vmware-usbarbitratorvmware-networks):

/etc/systemd/system/vmware.service
[Unit]
Description=VMware daemon
Requires=vmware-usbarbitrator.service
Before=vmware-usbarbitrator.service
After=network.target

[Service]
ExecStart=/etc/init.d/vmware start
ExecStop=/etc/init.d/vmware stop
PIDFile=/var/lock/subsys/vmware
RemainAfterExit=yes

[Install]
WantedBy=multi-user.target
/etc/systemd/system/vmware-usbarbitrator.service
[Unit]
Description=VMware USB Arbitrator
Requires=vmware.service
After=vmware.service

[Service]
ExecStart=/usr/bin/vmware-usbarbitrator
ExecStop=/usr/bin/vmware-usbarbitrator --kill
RemainAfterExit=yes

[Install]
WantedBy=multi-user.target

添加該服務以啟用網絡連接:

/etc/systemd/system/vmware-networks-server.service
[Unit]
Description=VMware Networks
Wants=vmware-networks-configuration.service
After=vmware-networks-configuration.service

[Service]
Type=forking
ExecStartPre=-/sbin/modprobe vmnet
ExecStart=/usr/bin/vmware-networks --start
ExecStop=/usr/bin/vmware-networks --stop

[Install]
WantedBy=multi-user.target

如果要從其他 Workstation Server 控制台連接到你的 VMware Workstation,則也一併添加該服務:

/etc/systemd/system/vmware-workstation-server.service
[Unit]
Description=VMware Workstation Server
Requires=vmware.service
After=vmware.service

[Service]
ExecStart=/etc/init.d/vmware-workstation-server start
ExecStop=/etc/init.d/vmware-workstation-server stop
PIDFile=/var/lock/subsys/vmware-workstation-server
RemainAfterExit=yes

[Install]
WantedBy=multi-user.target

完成後將啟用這些服務。

Workstation Server 服務[編輯 | 編輯原始碼]

儘管已經被重命名為 vmware-wssc-adminToolvmware-workstation-server.service 還是會在它的命令鏈中調用 wssc-adminTool

為防止服務啟動出現問題,可通過軟連結進行修復:

# ln -s wssc-adminTool /usr/lib/vmware/bin/vmware-wssc-adminTool

運行程序[編輯 | 編輯原始碼]

打開 VMware Workstation Pro:

$ vmware

打開 VMware Player:

$ vmplayer

技巧和訣竅[編輯 | 編輯原始碼]

輸入 Workstation Pro 許可證密鑰[編輯 | 編輯原始碼]

從終端輸入[編輯 | 編輯原始碼]

# /usr/lib/vmware/bin/vmware-vmx-debug --new-sn XXXXX-XXXXX-XXXXX-XXXXX-XXXXX

其中 XXXXX-XXXXX-XXXXX-XXXXX-XXXXX 是許可證密鑰

注意: -debug 二進位文件會遇到無效許可證時提示用戶。

從 GUI 輸入[編輯 | 編輯原始碼]

如果上述方法不起效,您可以嘗試:

# /usr/lib/vmware/bin/vmware-enter-serial

提取 VMware BIOS[編輯 | 編輯原始碼]

$ objcopy /usr/lib/vmware/bin/vmware-vmx -O binary -j bios440 --set-section-flags bios440=a bios440.rom.Z
$ perl -e 'use Compress::Zlib; my $v; read STDIN, $v, '$(stat -c%s "./bios440.rom.Z")'; $v = uncompress($v); print $v;' < bios440.rom.Z > bios440.rom

提取安裝程序[編輯 | 編輯原始碼]

要查看安裝程序 .bundle 中的內容:

$ sh VMware-edition-version.release.architecture.bundle --extract /tmp/vmware-bundle/

使用修改後的 BIOS[編輯 | 編輯原始碼]

如果您決定修改提取的 BIOS,您可以通過將其移動到以下位置讓虛擬機使用它:~/vmware/虛擬機名稱

$ mv bios440.rom ~/vmware/虚拟机名称/

然後將名稱添加到 虛擬機名稱.vmx 文件:

~/vmware/虛擬機名稱/虛擬機名稱.vmx
bios440.filename = "bios440.rom"

在 Intel、Optimus 和 AMD 上啟用 3D 圖形加速[編輯 | 編輯原始碼]

由於 3D 圖形加速的性能或穩定性原因,有些圖形驅動默認被禁用。在啟用 Accelerate 3D graphics 後,可能會出現如下日誌:

Disabling 3D on this host due to presence of Mesa DRI driver.  Set mks.gl.allowBlacklistedDrivers = TRUE to override.

日誌提到的設置對應的配置文件為 ~/.vmware/preferences

VMware Workstation 16.2 從 OpenGL 改用到了 Vulkan,因此設置會有些不同。如果你的驅動不受支持,日誌會顯示:

mks Vulkan Renderer: Only the AMDVLK driver is supported at this time.
mks Vulkan Renderer: No supported Vulkan device/driver found (See mks.vk.allowUnsupportedDevices or mks.vk.forceDevice configuration options).

如果你的驅動被禁用,你得把 mks.vk.allowUnsupportedDevices = "TRUE" 添加到 ~/.vmware/preferences 或者換一個支持的驅動 - 如果不確定要進行哪種操作,就看看虛擬機目錄裡的 vmware.log

注意: You might need to add the mks.gl.allowBlacklistedDrivers = "TRUE" inside the .vmx file for the specific virtual machine as well, for 3D acceleration with intel drivers to be enabled.

在主機掛起/休眠之前掛起虛擬機[編輯 | 編輯原始碼]

創建一個可執行文件:

/usr/lib/systemd/system-sleep/vmware_suspend_all.sh
#!/bin/bash

set -eu

if [[ $# -ne 2 ]]; then
    echo "Usage: $0 <period> <action>"
    exit 1
fi

period=$1
action=$2

echo "vmware system-sleep hook argv: ${period} ${action}"

if ! command -v vmrun &>/dev/null; then
    echo "command not found: vmrun"
fi

if [[ "${period}" = "pre" ]]; then
    readarray -t vms < <(vmrun list | tail -n +2)

    echo "Number of running VMs: ${#vms[@]}"

    if [[ ${#vms[@]} -eq 0 ]]; then
        exit
    fi

    for vm in "${vms[@]}"; do
        echo -n "Suspending ${vm}... "
        vmrun suspend "${vm}"
        echo "done"
    done

    sleep 1
else
    echo "Nothing to do"
fi

See also Power management/Suspend and hibernate#Hooks in /usr/lib/systemd/system-sleep, suspend all virtual machines with vmrun and Support for hibernation.

系統提速技巧[編輯 | 編輯原始碼]

參考性能優化

禁用透明大頁[編輯 | 編輯原始碼]

本文或本章節可能需要合併到Improving performance

附註: Not specific to VMware.(在 Talk:VMware 中討論)

If you notice the guest and/or the host frequently freezing when running a VM, you may want to disable transparent hugepages. To disable them for the current session, run (on the host):

# echo never > /sys/kernel/mm/transparent_hugepage/enabled

To make the change persistent across boots, add the kernel parameter transparent_hugepage=never.

You can also use madvise instead of never to still allow applications that are optimized for transparent hugepages to obtain the performance benefits[1]. This does the same for vmware as above.

確保直接訪問內存[編輯 | 編輯原始碼]

默認情況下,VMware 會將虛擬機系統的內存寫入到硬碟上的文件內。如果你確定內存空間足夠,可以添加以下設置到虛擬機的 .vmx 文件內以確保虛機系統直接寫入到內存中:

Virtual_machine_name.vmx
MemTrimRate = "0"
sched.mem.pshare.enable = "FALSE"
prefvmx.useRecommendedLockedMemSize = "TRUE"
mainmem.backing = "swap"

性能提示[編輯 | 編輯原始碼]

要提升虛擬機的性能,可以參考下列技巧:

准虛擬化 SCSI 適配器[編輯 | 編輯原始碼]

VMware 准虛擬化 SCSI(PVSCSI)適配器是用於 VMware ESXi 的高性能存儲適配器,可以達到更高的吞吐量和更低 CPU 占用。PVSCSI 適配器適用於需要高 I/O 吞吐量的軟硬體環境。

SCSI 適配器類型 VMware Paravirtual 可在虛擬機設置中應用。

如果在虛擬機設置中沒有這些選項,也還是可以啟用准虛擬化 SCSI 適配器。首先,通過修改 mkinitcpio.conf 確保准虛擬化 SCSI 適配器包含在內核鏡像中:

/etc/mkinitcpio.conf
...
MODULES=(... vmw_pvscsi)
...

重新生成 initramfs

關閉虛擬機,並修改 SCSI 適配器:修改 .vmx 中的對應項為如下:

scsi0.virtualDev = "pvscsi"

准虛擬化網絡適配器[編輯 | 編輯原始碼]

VMware 為客戶機系統提供了多種網絡適配器。默認適配器通常為 e1000,它會模擬一張 Intel 82545EM 千兆乙太網卡。該 Intel 網卡通常兼容包括 Arch 在內的多數作業系統的內置驅動。

為了獲得更高性能和更多特性(例如多隊列支持),可以使用 VMware 原生的 vmxnet3 網絡適配器。

Arch 的默認安裝方式已包含了 vmxnet3 內核模塊。通過 mkinitcpio 啟用(或者自動檢測啟用;可通過執行 lsmod | grep vmxnet3 檢查是否已加載模塊)後,關機並按如下步驟在 .vmx 中修改網絡適配器類型:

ethernet0.virtualDev = "vmxnet3"

在修改網絡適配器後,需要修改網絡和 dhcpcd 設置以使用新網卡名稱和 MAC 地址。

# dhcpcd new_interface_name
# systemctl enable dhcpcd@new_interface_name.service

可通過執行 ip link 來獲取新的網卡名稱。

虛擬機設置[編輯 | 編輯原始碼]

下列設置以主機內存占用為代價降低硬碟 I/O,可以提升虛擬機響應度。Vmware 的 KB1008885[失效連結 2024-10-12 ⓘ] 提供了下列優化設置:

mainMem.useNamedFile = "FALSE"
MemTrimRate = "0"
prefvmx.useRecommendedLockedMemSize = "TRUE"
MemAllowAutoScaleDown = "FALSE"
sched.mem.pshare.enable = "FALSE"
  • mainMem.useNamedFile:僅適用於 Windows 主機,適用於關閉虛擬機時出現高硬碟占用率的情況,該選項會阻止 VMware 創建 .vmem 文件。在 Linux 主機上請使用 mainmem.backing = "swap"
  • MemTrimRate:該選項阻止虛擬機釋放的內存同時被主機釋放掉。
  • prefvmx.useRecommendedLockedMemSize:該選項似乎沒有具體功能解釋;其作用似乎為防止主機交換虛擬機的部分內存。
  • MemAllowAutoScaleDown:防止 VMware 在無法分配足夠內存的情況下調整虛擬機的內存大小。
  • sched.mem.pshare.enable:如果同時運行了多個虛擬機,VMware 會試圖在多個虛擬機間尋找並共享相同的內存頁。可能產生高 I/O 負載。

也可以在 VMware workstation 的配置窗口內添加如下設置(Edit -> Preferences... -> Memory/Priority):

prefvmx.minVmMemPct = "100"
mainMem.partialLazySave = "FALSE"
mainMem.partialLazyRestore = "FALSE"
  • prefvmx.minVmMemPct:在主機上為虛擬機預留的內存大小百分比。更低的值會允許為虛擬機分配比主機系統可用大小更多的內存。但請注意,該情況很可能會導致高硬碟占用率。如果主機上的內存足夠,建議保留該值為 100。
  • mainMem.partialLazySavemainMem.partialLazyRestore:這兩個選項會防止虛擬機在掛起時創建部分快照。在使用這兩個選項時,虛擬機掛起耗時會稍微增加,但會降低 VMware 存儲這些數據產生的磁碟占用率。

解難答疑[編輯 | 編輯原始碼]

Kernel headers for version x.y-zzzz were not found. If you installed them[...][編輯 | 編輯原始碼]

安裝你使用內核所對應的 headers,如 linux 對應linux-headers

注意: 較常見的錯誤有:更新內核及頭文件後,重啟一次才能啟動到與頭文件版本一致的新內核。

無法加載 vmmon 模塊[編輯 | 編輯原始碼]

根據 VMware 社區中的描述,需要禁用安全啟動才能加載 vmmon 模塊。

無法識別 USB 設備[編輯 | 編輯原始碼]

如果沒有使用 systemd 服務來自動處理服務,就需要每次都以根用戶手動啟動 vmware-usbarbitrator

啟動方法:

# vmware-usbarbitrator

停止方法:

# vmware-usbarbitrator --kill

遠程連接 VMware 時提示登錄憑據錯誤[編輯 | 編輯原始碼]

可以通過 vmware-workstation-server 服務遠程管理 VMware Workstation 已共享的虛擬機,但是,vmware-authd 服務中的 PAM 配置問題會導致 "incorrect username/password" 報錯出現。要修復該問題,需參考如下編輯 /etc/pam.d/vmware-authd 文件:

/etc/pam.d/vmware-authd
#%PAM-1.0
auth     required       pam_unix.so
account  required       pam_unix.so
password required       pam_permit.so
session  required       pam_unix.so

然後重啟 vmware systemd 服務。

你現在可以使用安裝過程提供的憑據連接到伺服器了。

注意: 啟動虛擬機可能需要安裝 libxslt

ALSA 輸出問題[編輯 | 編輯原始碼]

修復音頻質量問題或啟用正確的 HD 音頻輸出,首先執行:

$ aplay -L

如果要在虛擬機中使用 5.1 聲道,請找到 surround51:CARD=vendor_name,DEV=num;如果遇到音頻質量問題,請找到 front:CARD=vendor_name,DEV=num。最後,將名稱填入到 .vmx 內:

~/vmware/Virtual_machine_name/Virtual_machine_name.vmx
sound.fileName="surround51:CARD=Live,DEV=0"
sound.autodetect="FALSE"

另外,需要禁用 OSS 模擬

基於內核的虛擬機(KVM)尚在運行[編輯 | 編輯原始碼]

可以通過如下方法在啟動時禁用 KVM

/etc/modprobe.d/vmware.conf
blacklist kvm
blacklist kvm-amd   # For AMD CPUs
blacklist kvm-intel # For Intel CPUs
提示:如果加入黑名單後 kvm 模塊還會加載,且你使用的設備帶有 Intel 集成顯卡(i915,i965),那有可能需要同時在內核命令行選項中將 kvmgt 模塊添加到黑名單。詳細信息請查閱內核模塊#使用內核命令行_2

在 HiDPI 顯示器上,VMware 應用 UI 上的圖標及間距沒有正確縮放[編輯 | 編輯原始碼]

參閱 HiDPI#VMware

Wayland 問題[編輯 | 編輯原始碼]

GNOME 下鍵盤捕獲無效[編輯 | 編輯原始碼]

VMWare Player/Workstation 17.5(及更舊版本)中存在問題:具體信息

要允許用戶界面捕獲鍵盤:

$ gsettings set org.gnome.mutter.wayland xwayland-allow-grabs "true"
$ gsettings set org.gnome.mutter.wayland xwayland-grab-access-rules "['vmplayer','vmware-vmx','mksSandbox']"

要修復 super 鍵未被捕獲問題:

  • 使用 Win+Alt+Tab 取代 Alt+Tab
  • 使用 Ctrl+Esc 顯示開始菜單

模塊問題[編輯 | 編輯原始碼]

找不到 /dev/vmmon[編輯 | 編輯原始碼]

完整報錯如下:

Could not open /dev/vmmon: No such file or directory.
Please make sure that the kernel module 'vmmon' is loaded.

這表示至少 vmmon 模塊沒有被加載。自動加載方法可參考 #systemd 服務一節。

另一種可能是由 5.18 版本內核以及 11 代和更新 Intel 處理器的間接分支跟蹤功能導致。

在這種情況下,將 ibt=off 添加到你的內核參數中。具體信息請參考 [2]

找不到 /dev/vmci[編輯 | 編輯原始碼]

完整報錯如下:

Failed to open device "/dev/vmci": No such file or directory
Please make sure that the kernel module 'vmci' is loaded.

首先嘗試手動加載內核:

# modprobe -a vmw_vmci

也可以試試重新編譯 VMware 內核模塊:

# vmware-modconfig --console --install-all

無法啟動安裝包[編輯 | 編輯原始碼]

如果啟動 .bundle 後會回到輸入提示,那你的 VMware 安裝器版本可能已經過時或損壞,需要將其移除(也可以參考#卸載一節):

# rm -r /etc/vmware-installer/

用戶界面初始化失敗[編輯 | 編輯原始碼]

你可能會見到如下報錯:

 Extracting VMware Installer...done.
 No protocol specified
 No protocol specified
 User interface initialization failed.  Exiting.  Check the log for details.

該錯誤可以通過安裝 ncurses5-compat-libsAUR 依賴或臨時允許根訪問權限解決:

 $ xhost +
 $ sudo ./<vmware filename>.bundle
 $ xhost -

無法啟動 VMware[編輯 | 編輯原始碼]

CPUIDEarly 模塊上電失敗[編輯 | 編輯原始碼]

版本 14 比 12 有更嚴格的 CPU 需求。如果你嘗試在不兼容的 CPU 上啟動虛擬機,會出現如下報錯:

 This host does not support virtualizing real mode.
 The Intel "VMX Unrestricted Guest" feature is necessary to run this virtual machine on an Intel processor.

解決方法為卸載版本 14,並重新安裝版本 12(vmware-workstation12AUR)。

如果 VMware 平時可用,但忽然出現該錯誤,那有可能是在暖/軟啟動或系統掛起後導致的。請嘗試進行一次冷啟動(關機並重新開機)。

舊 Intel 微碼導致的分段錯誤[編輯 | 編輯原始碼]

舊 Intel 微碼可能會在啟動時導致如下分段報錯:

/usr/bin/vmware: line 31: 4941 Segmentation fault "$BINDIR"/vmware-modconfig --appname="VMware Workstation" --icon="vmware-workstation"

微碼更新方法請參考微碼一文。

vmplayer/vmware 版本 14 啟動失敗[編輯 | 編輯原始碼]

librsvg 版本 2:2.44.0 及以上的系統中,/tmp/vmware-<id> 位置下的日誌文件會顯示數條如下報錯:

appLoader| I125+ undefined symbol

一種臨時處理方法為將 librsvg 降級到更早版本;更好的方法為強制 VMware 使用其自帶的 librsvg

# export LD_LIBRARY_PATH=/lib/vmware/lib/librsvg-2.so.2:$LD_LIBRARY_PATH

VMware 同時提供了一個 VMWARE_USE_SHIPPED_LIBS 變量:

$ env VMWARE_USE_SHIPPED_LIBS=1 vmware

從 12.5.4 版本開始無法啟動 vmplayer/vmware[編輯 | 編輯原始碼]

參考 [3],臨時解決方法為將 libpng 降級到 1.6.28-1 版本,並將其寫入到 /etc/pacman.conf 中的 IgnorePkg 參數:

更簡單的方法為讓 VMware 使用系統提供的 zlib,而不是其自帶的版本:

# cd /usr/lib/vmware/lib/libz.so.1
# mv libz.so.1 libz.so.1.old
# ln -s /usr/lib/libz.so.1 .

無法啟動 12.5.3 至 12.5.5 版本的 vmplayer/vmware[編輯 | 編輯原始碼]

似乎是 /usr/lib/vmware/lib/libstdc++.so.6/libstdc++.so.6 文件缺少 CXXABI_1.3.8 導致的問題。

如果系統安裝了 gcc-libs,那就已有了該庫文件。因此,可以嘗試將其移除,然後 vmplayer 會轉而使用 gcc-libs 提供的文件。以根用戶權限執行:

# mv /usr/lib/vmware/lib/libstdc++.so.6/libstdc++.so.6 /usr/lib/vmware/lib/libstdc++.so.6/libstdc++.so.6.bak

另一種繞過方法為:

# export VMWARE_USE_SHIPPED_LIBS='yes'

啟動 vmware 12 後進程閃退,未能加載圖形界面[編輯 | 編輯原始碼]

Registered bug at Mageia, but it seems that there are no error messages shown in terminal with arch. When inspecting the logs, which are in /tmp/vmware-<id>, there are VMWARE_SHIPPED_LIBS_LIST is not set, VMWARE_SYSTEM_LIBS_LIST is not set, VMWARE_USE_SHIPPED_LIBS is not set, VMWARE_USE_SYSTEM_LIBS is not set issues. Process simply terminates with Unable to execute /usr/lib/vmware/bin/vmware-modconfig. after vmware or vmplayer is executed. Solution is the same, as root do:

# mv /etc/vmware/icu/icudt44l.dat /etc/vmware/icu/icudt44l.dat.bak

Also there is a workaround:

# export VMWARE_USE_SHIPPED_LIBS='yes'

Despite setting the VMWARE_USE_SHIPPED_LIBS variable, VMWare may still fail to find certain libraries. An example is the libfontconfig.so.1 library. Check vmware logs in the tmp directory to see which libraries are still not found. Copy them to the appropriate path with libraries existing on the system:

# cp /usr/lib/libfontconfig.so.1 /usr/lib/vmware/lib/libfontconfig.so.1/

Instead of copying all these files manually, you may want to try exporting an additional setting:

# export VMWARE_USE_SYSTEM_LIBS='yes'

On systems with fontconfig version 2.13.0 and above, it may be needed to force VMware to use the shipped libfontconfig file instead of the newer system file. In such case, it is also necessary to provide a shared object library file libexpat.so.0 for the shipped fontconfig. This applies for at least VMware version 12.5.9. As root do:

# ln -s /usr/lib/libexpat.so /usr/lib/vmware/lib/libfontconfig.so.1/libexpat.so.0
# export LD_LIBRARY_PATH=/usr/lib/vmware/lib/libfontconfig.so.1:$LD_LIBRARY_PATH

虛擬機問題[編輯 | 編輯原始碼]

無法為客戶機下載 VMware Tools[編輯 | 編輯原始碼]

可以通過訪問 VMware 存儲庫手動下載工具:

訪問 "application name / version / build ID / linux / packages/" 路徑並下載對應的工具。

使用如下命令解壓:

$ tar -xvf vmware-tools-name-version-buildID.x86_64.component.tar

然後使用 VMware 安裝器進行安裝:

# vmware-installer --install-component=/path/vmware-tools-name-version-buildID.x86_64.component

如果以上方法無效,可以嘗試安裝 ncurses5-compat-libsAUR

虛擬機的系統時間錯誤或無法啟動:"[...]timeTracker_user.c:234 bugNr=148722"[編輯 | 編輯原始碼]

本文內容或本節內容已經過期。

原因: ondemand is no longer the default governor, does this still apply to the schedutil governor? (在Talk:VMware討論)

This is due to incomplete[失效連結 2024-10-12 ⓘ] support of power management features (Intel SpeedStep and AMD PowerNow!/Cool'n'Quiet) in VMware Linux that vary the CPU frequency. In March 2012, with the release of linux 3.3-1 the maximum frequency Performance governor was replaced with the dynamic Ondemand. When the host CPU frequency changes, the Guest system clock runs too quickly or too slowly, but may also render the whole Guest unbootable.

To prevent this, the maximum host CPU frequency can be specified, and Time Stamp Counter (TSC) disabled, in the global configuration:

/etc/vmware/config
host.cpukHz = "X"  # The maximum speed in KHz, e.g. 3GHz is "3000000".
host.noTSC = "TRUE" # Keep the Guest system clock accurate even when
ptsc.noTSC = "TRUE" # the time stamp counter (TSC) is slow.
提示:To periodically correct the time (once per minute), in the Options tab of VMware Tools, enable: "Time synchronization between the virtual machine and the host operating system".

系統重啟後客戶機丟失網絡連接[編輯 | 編輯原始碼]

該問題很可能由 vmnet 未被加載導致 [4]。關於自動加載的內容請參考 #systemd 服務部分。

滑鼠問題[編輯 | 編輯原始碼]

超出 5 個後的滑鼠按鍵無法使用[編輯 | 編輯原始碼]

如果你滑鼠的拇指或其它額外按鈕無法正常工作,可以設置客戶機使用高級滑鼠

客戶機上的滑鼠滾輪表現怪異[編輯 | 編輯原始碼]

This is related to the current Xorg keyboard layout on Host system. Keep primary layout (e.g., English) selected on Host while working on Guest.

嵌套虛擬機沒有 IP 地址及網絡連接[編輯 | 編輯原始碼]

該問題與混雜模式有關。根據標準 Linux 實踐,該模式僅能由根用戶啟用。為了繞過該限制,需要修改對應網絡設備的權限。

對單個用戶組給予權限:

# chgrp group /dev/vmnetX

# chmod g+rw /dev/vmnetX

對所有用戶給予權限:

# chmod a+rw /dev/vmnetX

卸載[編輯 | 編輯原始碼]

你必須先知道你安裝的產品的名稱(無論是 vmware-workstation 還是 vmware-player)。要列出已安裝的產品:

$ vmware-installer -l

然後進行卸載 (使用 --required 跳過了確認步驟):

# vmware-installer -u product --required
提示:添加 --console 使用圖形界面

記得禁用並移除服務:

# rm /etc/systemd/system/vmware.service
# rm /etc/systemd/system/vmware-usbarbitrator.service

再看看 /usr/lib/modules/kernel_name/misc/ 模塊目錄下有沒有未移除的內核模塊,然後如果 /etc/init.d/ 目錄是空的也可以一併移除。