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/ 目录是空的也可以一并移除。