Install vmware-workstation AUR, vmware-workstation14 AUR, vmware-workstation12 AUR or vmware-workstation11 AUR for respectively versions 15, 14, 12 and 11 of VMware Workstation. It is also necessary to install the appropriate headers package(s) for your installed kernel(s): for example linux-headers or linux-lts-headers.
This article is about installing Arch Linux in a VMware product, such as Player (Plus), Fusion or Workstation.
- 3Open-VM-Tools
- 4Official VMware Tools
- 6Tips and tricks
- 6.1Shared Folders with vmhgfs-fuse utility
- 6.2Legacy Shared Folders with vmhgfs module
- 6.2.1Enable at boot
- 6.33D Acceleration
- 6.4Time synchronization
- 6.5Performance Tips
- 7Troubleshooting
- 7.5Boot problems
- 7.6Window resolution autofit problems
In-kernel drivers
Note: Arch's Udev auto-detects and enables some of these modules. If any of them is not auto-detected (check by runninglsmod grep modulename
) and if it is required, the module can be added to mkinitcpio's MODULES
array. For example:Make sure to regenerate the initramfs.
vmw_balloon
- The physical memory management driver. It acts like a 'balloon' that can be inflated to reclaim physical pages by reserving them in the guest and invalidating them in the monitor, freeing up the underlying machine pages so they can be allocated to other guests. It can also be deflated to allow the guest to use more physical memory. Deallocated Virtual Machine memory can be reused in the host without terminating the guest.vmw_pvscsi
- For VMware's Paravirtual SCSI (PVSCSI) HBA.vmw_vmci
- The Virtual Machine Communication Interface. It enables high-speed communication between host and guest in a virtual environment via the VMCI virtual device.vmwgfx
- For 3D acceleration. This is a KMS enabled DRM driver for the VMware SVGA2 virtual hardware.vmxnet3
- For VMware's vmxnet3 virtual ethernet NIC.- a fuse-based hgfs implementation has been added to
open-vm-tools
10.0+ and is supported from kernel version 4.0+.
The following drivers are only needed if you are running Arch Linux on a hypervisor like VMware vSphere Hypervisor. Client-server applications can write to the VMCI Sock (vsock) interface to make use of the VMCI virtual device, when communicating between virtual machines.
vsock
- The Virtual Socket Protocol. It is similar to the TCP/IP socket protocol, allowing communication between Virtual Machines and hypervisor or host.vmw_vsock_vmci_transport
- Implements a VMCI transport for Virtual Sockets.
Some modules, such as the legacy vmhgfs
shared folder module, will require additional work to manually compile
and systemd enable
in order to function properly.
VMware Tools versus Open-VM-Tools
In 2007, VMware released large partitions of the VMware Tools under the LGPL as Open-VM-Tools. The official Tools are not available separately for Arch Linux.
Originally, VMware Tools provided the best drivers for network and storage, combined with the functionality for other features such as time synchronization. However, now the drivers for the network/SCSI adapter are part of the Linux kernel.
The official VMware Tools also had the advantage of being able to use the Unity mode feature, but as of VMWare Workstation 12, Unity mode for Linux guests has been removed due to lack of use and developer difficulties in maintaining the feature. See this thread.
Open-VM-Tools
Utilities
The open-vm-tools package comes with the following utilities:
vmtoolsd
- Service responsible for the Virtual Machine status report.vmware-checkvm
- Tool to check whether a program is running in the guest.vmware-toolbox-cmd
- Tool to obtain Virtual Machine information of the host.vmware-user
- Tool to enable clipboard sharing (copy/paste) between host and guest.vmware-vmblock-fuse
- Filesystem utility. Enables drag & drop functionality between host and guest through FUSE (Filesystem in Userspace).vmware-xferlogs
- Dumps logging/debugging information to the Virtual Machine logfile.vmhgfs-fuse
- Utility for mounting vmhgfs shared folders.
Modules
vmhgfs
- Legacy filesystem driver. Enables legacy sharing implementation between host and guest.vmxnet
- for the old VMXNET network adapter.
Installation
Installopen-vm-tools. If the legacy vmhgfs
shared folder module is desired, the open-vm-tools-dkmsAUR package must be installed (the new vmhgfs-fuse
driver is included in open-vm-tools). Start and/or enablevmtoolsd.service
and vmware-vmblock-fuse.service
.
Try to install gtkmm3 manually if it does not work properly. To enable copy and paste between host and guest gtkmm3 is required.
Official VMware Tools
Modules
vmblock
- Filesystem driver. Enables drag & drop functionality between host and guest (superseded by thevmware-vmblock-fuse
utility).vmci
- High performance communication interface between host and guest.vmmon
- Virtual Machine Monitor.vmnet
- Networking driver.vsock
- VMCI sockets.
vmware-vmblock-fuse
, and vmblock
has been removed from the kernel unless you disable fuse
. Instead, systemd services need to be enabled
to allow these functions. See instructions below.Installation (from guest)
Install the dependencies: base-devel (for building), net-tools (for ifconfig
, used by the installer) and linux-headers (for kernel headers). A make dependency for checking out open-vm-tools
is asp.
Then, create bogus init directories for the installer:
The installer can then be mounted:
Extracted (e.g. to /root
):
And started:
The following build failures can safely be ignored:
- VMNEXT 3 virtual network card
- 'Warning: This script could not find mkinitrd or update-initramfs and cannot remake the initrd file!'
- Fuse components not found on the system.
Install Arch Linux Vmware Player
Enable vmware-vmblock-fuse
systemd services (make sure the dependencies are manually installed, or that the -s
flag) used. The open-vm-tools
source code should be checked out using the Arch Build System.
Reboot the Virtual Machine:
Log in and start the VMware Tools:
Additionally, to auto start vmware-tools
on boot, create a new file /etc/systemd/system/vmwaretools.service
:
And enable the new systemd service:
Xorg configuration
Install the dependencies: xf86-input-vmmouse, xf86-video-vmware, and mesa.
These packages should be all that are required to get started with booting into a graphical target
: . /etc/xdg/autostart/vmware-user.desktop
will get started which will set up most of what is needed to work with the Virtual Machine.
However, if booting into multi-user.target
or using an uncommon setup (e.g. multiple monitors), then vmtoolsd.service
needs to be enabled. In addition to this, edit:
to give permission for loading drivers.
Tips and tricks
Shared Folders with vmhgfs-fuse
utility
open-vm-tools
v.10.x and kernel 4.x onwards and with VMware Workstation and Fusion.Share a folder by selecting Edit virtual machine settings > Options > Shared Folders > Always enabled, and creating a new share.
The shared folders should be visible with:
Now the folder can be mounted:
If the error message fusermount: option allow_other only allowed if 'user_allow_other' is set in /etc/fuse.conf
is displayed, uncomment the following line in /etc/fuse.conf
:
Other vmhgfs-fuse
mount options can be viewed by using the -h
input flag:
fstab
Add a rule for each share:
Create and mount the Shared Folders:
Systemd
Create the following .service
:
Ensure the <shared folders root directory>
folder exists on the system. If this folder does not exist then it must be created, as the systemd service depends on it:
Enable the <shared folders root directory>-<shared_folder>.service
mount target.
If all shared folders should be mounted automatically then omit <shared_folder>.
Legacy Shared Folders with vmhgfs module
Share a folder by selecting Edit virtual machine settings > Options > Shared Folders > Always enabled, and creating a new share.
Ensure the vmhgfs
driver is loaded:
The shared folders should be viewable with:
Now the folder can be mounted:
Enable at boot
Edit mkinitcpio.conf
thusly:
and then regenerate the initramfs.
fstab
Add a rule for each share:
Create and mount the Shared Folders:
Systemd
For shared folders to work the vmhgfs
driver must be loaded. Create the following .service
s:
Ensure the <shared folders root directory>
folder exists on the system. If this folder does not exist then it must be created, as the systemd scripts depend on it:
Enable the mnt-hgfs.automount
mount target.
If all shared folders should be mounted automatically then omit <shared_folder>.
Prune mlocate DB
When using mlocate, it is pointless to index the shared directories in the locate DB
. Therefore, add the directories to PRUNEPATHS
in /etc/updatedb
.
3D Acceleration
If not selected at guest creation time, 3D Acceleration can be enabled in: Edit virtual machine settings > Hardware > Display > Accelerate 3D graphics.
OpenGL and GLSL support
It is possible to update OpenGL and GLSL with new kernel modules, overriding Arch-controlled versions.
Currently, OpenGL 3.3 and GLSL 3.30 can be supported. See https://bbs.archlinux.org/viewtopic.php?id=202713 for more details.
Time synchronization
Configuring time synchronization in a Virtual Machine is important; fluctuations are bound to occur more easily in a guest VM. This is mostly due to the CPU being shared by more than one guest.
There are 2 options to set up time synchronization: the host or an external source.
Host machine as time source
To use the host as a time source, ensure vmtoolsd.service
is started. Then enable the time synchronization:
To synchronize the guest after suspending the host:
External server as time source
Install Vmware Player Linux Mint
See NTP.
Performance Tips
This article or section is a candidate for merging with VMware.
To improve the performance of your virtual machine, try the following tips:
Paravirtual SCSI adapter
VMware Paravirtual SCSI (PVSCSI) adapters are high-performance storage adapters for VMware ESXi that can result in greater throughput and lower CPU utilization. PVSCSI adapters are best suited for environments, where hardware or applications drive a very high amount of I/O throughput.
The SCSI adapter type VMware Paravirtual
is available in the Virtual Machine settings.
If these settings are not in the virtual machine's configuration, the paravirtual SCSI adapter can still be enabled. Ensure that the paravirtual SCSI adapter is included in the kernel image by modifying the mkinitcpio.conf
:
Regenerate the initramfs.
Shut down the virtual machine and change the SCSI adapter: set the .vmx
to the following:
Paravirtual Network Adapter
VMware offers multiple network adapters for the guest OS. The default adapter used is usually the e1000
adapter, which emulates an Intel 82545EM Gigabit Ethernet NIC. This Intel adapter is generally compatible with the built-in drivers across most operating systems, including Arch.
For more performance and additional features (such as multiqueue support), the VMware native vmxnet3
network adapter can be used.
Arch has the vmxnet3
kernel module available with a default install. Once enabled in mkinitcpio (or if it is auto-detected; check by running lsmod grep vmxnet3
to see if it is loaded), shut down and change the network adapter type in the .vmx file to the following:
After changing network adapters, the network and dhcpcd settings will need to be updated to use the new adapter name and MAC address.
The new interface name can be obtained by running ip link
.
Virtual Machine Settings
These settings could help improve the responsiveness of the virtual machine by reducing disk I/O, at the expense of using more host memory. Vmware's KB1008885 provides the following optimizations:
- mainMem.useNamedFile: This will only work for Windows hosts and this parameter can be used if high disk activity is experienced upon shutting down the virtual machine. This will prevent VMware from creating a .vmem file. Use mainmem.backing = 'swap' on Linux hosts instead.
- MemTrimRate: This setting prevents that memory which was released by the guest is released on the host also.
- prefvmx.useRecommendedLockedMemSize: Unfortunately there does not seem to exist a proper explanation for this setting; it seems to prevent the host system from swapping parts of the guest memory.
- MemAllowAutoScaleDown: Prevents VMware from adjusting the memory size of the virtual machine if it cannot allocate enough memory.
- sched.mem.pshare.enable: If several virtual machines are running simultaneously, VMware will try to locate identical pages and share these between the virtual machines. This can be very I/O intensive.
The following settings can also be set in the configuration dialog of VMware Workstation(Edit -> Preferences... -> Memory/Priority).
- prefvmx.minVmMemPct: Sets amount of RAM in percent which should be reserved by the virtual machine on the host system. If this is set to a lower value it is possible to assign the virtual machine more memory than is available in the host system. Be careful though, as in this case it will most likely lead to excessive hard drive usage. If enough RAM is on the host system, this value should be left at 100.
- mainMem.partialLazySave and mainMem.partialLazyRestore: These two parameters will prevent the virtual machine from creating partial snapshots for suspends. When these parameters are used, virtual machine suspension will take slightly longer, but there should be less hard disk activity from VMware trying to store this information.
Troubleshooting
Network slow on guest
Arch Linux, as well as other Linux guests, may have slow network speeds while using NAT. To resolve this, switch the network type to Bridged mode in the guest settings on the host, changing the configuration file for the network on the guest where necessary. For more information on configuration, see Network configuration. If on a Windows host and it is not connecting properly despite correct guest configuration, open the Virtual Network Editor on the host as Administrator and press the Restore defaults button at the bottom left.
File share problems with legacy vmhgfs module and newer kernels
As the open-vm-tools-dkmsAUR package is no longer being updated, newer kernels are not patched correctly using it to be compatible with a host-guest file share. The Github repository has some patch files that can be manually applied to restore functionality.
It is also recommended that the AUR comment section be checked for this package.
Sound problems
If unacceptably loud or annoying sounds occur, then it may be related to the PC speaker. The issue may be resolved by disabling the PC speaker within the guest image:
Mouse problems
The following problems may occur with the mouse:
- The automatic grab/ungrab feature does not automatically grab input when the cursor enters the window
- Missing buttons
- Input lag
- Clicks are not registered in some applications
- Mouse cursor jumps when entering/leaving virtual machine
- Mouse position jumps to where it left the guest VM
These may be fixed by uninstalling the xf86-input-vmmouse package. xf86-input-vmmouse and xf86-input-libinput should be sufficient for handling mouse and keyboard inputs.
Adding settings to the .vmx
configuration file may help (Mouse position jumps to where it left the guest VM):
VMware also attempts to automatically optimize the mouse for gaming. If problems are experienced, disabling the optimization is recommended: Edit > Preferences > Input > Optimize mouse for games: Never
Alternatively, attempting to disable the catchall
event in 60-libinput.conf
may be required:
Boot problems
Slow boot time
The following errors may be displayed if VMWare's memory hot-add feature is enabled:
- add_memory failed
- acpi_memory_enable_device() error
Disable the memory hot-add feature by setting mem.hotadd = 'FALSE'
to the .vmx
.
Vmware Player Linux Install Bundle
Shutdown/Reboot hangs
Adjust the timeout for the vmtoolsd service (defaults to 90 seconds).
Window resolution autofit problems
'Autofit' means that when the VMWare window's size is adjusted in the host, ArchLinux in the guest should automatically follow and readjust its resolution to fit the new size of the host window.
Potential solution 1
Ensure autofit is enabled. For VMware Workstation the setting can be found in: View -> Autosize -> Autofit Guest
Potential solution 2
For some reason, autofit requires the packages gtkmm and gtk2, so ensure they are installed. If X windows is not installed or a non–GTK-based desktop environment (such as KDE) is being used, the might have to be installed independently.
Potential solution 3
The relevant modules may have to be added to mkinitcpio.conf:
Do not forget to regenerate the initramfs.
Potential solution 4
Enablevmtoolsd.service
.
If this doesn't work, ensure the vmtoolsd.service
is restarted.
Potential solution 5
If GNOME is running on Wayland, installxf86-video-vmware (FS#57473).
See [1].
Drag and drop, copy/paste
The drag-and-drop (copy/paste) feature requires both open-vm-tools and gtkmm3 packages to be installed.
Make the command vmware-user
run after X11 by either:
- Ensuring
etc/xdg/autostart/vmware-user.desktop
exists, and if not, running:
OR
- Add
vmware-user
to Xinitrc.
Problems when running as a shared VM on Workstation 11
Workstation 11 has a bug where vmware-hostd crashes if an Arch guest is running as a shared VM and vmtoolsd is running in the guest. A patch to open-vm-tools to work around the bug is here.
Shared folder not mounted after system upgrade
Most likely, this should only happen to open-vm-tools. Since the vmhgfs
module belongs to open-vm-tools-dkmsAUR, the legacy filesystem driver would not be upgraded by using the command pacman -Syu
. Therefore, open-vm-tools-dkmsAUR should be manually upgraded before the official repositories.
If a shared folder is not mounted after a system upgrade, then remove the shared filesystem automount, upgrade open-vm-tools-dkmsAUR, run pacman -Syu
, and finally regenerate the initramfs. Don't forget to restore the filesystem automount.