< VMware

VMware/Install Arch Linux as a guest

This article is about installing Arch Linux in a VMware product, such as Player (Plus), Fusion or Workstation.

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 running lsmod | grep modulename ) and if it is required, the module can be added to mkinitcpio's MODULES array. For example:
/etc/mkinitcpio.conf
...
MODULES=(... vmw_balloon vmw_pvscsi vsock vmw_vsock_vmci_transport ...)

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.

  • - The Virtual Socket Protocol. It is similar to the TCP/IP socket protocol, allowing communication between Virtual Machines and hypervisor or host.
  • - Implements a VMCI transport for Virtual Sockets.

Some modules, such as the legacy shared folder module, will require additional work to manually 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 package comes with the following utilities:

  • vmtoolsd - Service responsible for the Virtual Machine status report.
  • - Tool to check whether a program is running in the guest.
  • - Tool to obtain Virtual Machine information of the host.
  • - Tool to enable clipboard sharing (copy/paste) between host and guest.
  • - Filesystem utility. Enables drag & drop functionality between host and guest through FUSE (Filesystem in Userspace).
  • - Dumps logging/debugging information to the Virtual Machine logfile.
  • - Utility for mounting vmhgfs shared folders.

Installation

Install . Start and/or enable and .

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

  • - Filesystem driver. Enables drag & drop functionality between host and guest (superseded by the utility).
  • - High performance communication interface between host and guest.
  • - Virtual Machine Monitor.
  • - Networking driver.
  • - VMCI sockets.

Installation (from guest)

Install the dependencies: (for building), (for ifconfig, used by the installer) and (for kernel headers). A make dependency for checking out open-vm-tools is .

Then, create bogus init directories for the installer:

# for x in {0..6}; do mkdir -p /etc/init.d/rc${x}.d; done

The installer can then be mounted:

# mount /dev/cdrom /mnt

Extracted (e.g. to /root):

# tar xf /mnt/VMwareTools*.tar.gz -C /root

And started:

# perl /root/vmware-tools-distrib/vmware-install.pl

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.

Enable systemd services (make sure the dependencies are manually installed, or that the flag) used. The open-vm-tools source code should be checked out using the Arch Build System.

 $ asp checkout open-vm-tools
 $ cd open-vm-tools/repos/community-x86_64/
 $ makepkg -s --asdeps
 # cp vm* /usr/lib/systemd/system

Enable and .

Reboot the Virtual Machine.

Log in and start the VMware Tools:

# /etc/init.d/rc6.d/K99vmware-tools start

Additionally, to auto start on boot, create a new file :

And enable the new .

Xorg configuration

Note: To use Xorg in a Virtual Machine, a minimum of 32MB VGA memory is needed.

Install the dependencies: , , and mesa.

These packages should be all that are required to get started with booting into a : . will get started which will set up most of what is needed to work with the Virtual Machine.

However, if booting into or using an uncommon setup (e.g. multiple monitors), then needs to be enabled. In addition to this, run Xorg as root to give permission for loading drivers.

Tips and tricks

Shared Folders with utility

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:

$ vmware-hgfsclient

Now the folder can be mounted:

# mkdir <shared folders root directory>
# vmhgfs-fuse -o allow_other -o auto_unmount .host:/<shared_folder> <shared folders root directory>

If the error message is displayed, uncomment the following line in :

user_allow_other

Other mount options can be viewed by using the -h input flag:

# vmhgfs-fuse -h

fstab

Add a rule for each share:

Create and mount the Shared Folders (if not done so already):

# mkdir <shared folders root directory>
# mount <shared folders root directory>

Systemd

Create the following :

/etc/systemd/system/''<shared folders root directory>''-''<shared_folder>''.service
[Unit]
Description=Load VMware shared folders
Requires=vmware-vmblock-fuse.service
After=vmware-vmblock-fuse.service
ConditionPathExists=.host:/''<shared_folder>''
ConditionVirtualization=vmware

[Service]
Type=oneshot
RemainAfterExit=yes
ExecStart=/usr/bin/vmhgfs-fuse -o allow_other -o auto_unmount .host:/''<shared_folder>'' ''<shared folders root directory>''

[Install]
WantedBy=multi-user.target

Ensure the folder exists on the system. If this folder does not exist then it must be created, as the systemd service depends on it:

# mkdir -p <shared folders root directory>

Enable the 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 driver is loaded:

# modprobe vmhgfs

The shared folders should be viewable with:

$ vmware-hgfsclient

Now the folder can be mounted:

# mkdir /home/user1/shares
# mount -n -t vmhgfs .host:/<shared_folder> /home/user1/shares

Enable at boot

Edit thusly: and then regenerate the initramfs.

fstab

Add a rule for each share:

Create and mount the Shared Folders:

# mkdir /home/user1/shares
# mount /home/user1/shares
Systemd

For shared folders to work the driver must be loaded. Create the following s:

/etc/systemd/system/''<shared folders root directory>''-''<shared_folder>''.automount
[Unit]
Description=Load VMware shared folders
ConditionPathExists=.host:/''<shared_folder>''
ConditionVirtualization=vmware

[Automount]
Where=''<shared folders root directory>''/''<shared_folder>''

[Install]
WantedBy=multi-user.target

Ensure the folder exists on the system. If this folder does not exist then it must be created, as the systemd scripts depend on it:

# mkdir -p <shared folders root directory>

Enable the 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 . Therefore, add the directories to 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 is started. Then enable the time synchronization:

# vmware-toolbox-cmd timesync enable

To synchronize the guest after suspending the host:

# hwclock --hctosys --localtime

External server as time source

See NTP.

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.

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 package. and should be sufficient for handling mouse and keyboard inputs.

Adding settings to the 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 event in may be required:

/usr/share/X11/xorg.conf.d/60-libinput.conf
#Section "InputClass"
#        Identifier "libinput pointer catchall"
#        MatchIsPointer "on"
#        MatchDevicePath "/dev/input/event*"
#        Driver "libinput"
#EndSection

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 to the .

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, Arch Linux 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

Enable .

If this does not work, ensure the is restarted.

Potential solution 5

If GNOME is running on Wayland, install ().

See .

Drag and drop, copy/paste

Tip: There is an unspecified relationship between these features and gtkmm3 that causes them to silently fail. This is documented in FS#43159.

The drag-and-drop (copy/paste) feature requires both and gtkmm3 packages to be installed.

Make the command run after X11 by either:

  • Ensuring exists, and if not, running:
# cp /etc/vmware-tools/vmware-user.desktop /etc/xdg/autostart/vmware-user.desktop

OR

Copy/paste does not currently work on Wayland, though applications running through XWayland work fine.

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.

gollark: We'll need an excuse to obtain their faces.
gollark: Hmm, actually, issue: Momin is, I believe, capable of turning around.
gollark: So yes, add it muahahahaha.
gollark: But we could use similar logic to for tidy the toys and whatever to automatically chase Momin, for example.
gollark: There's no reason to NOT have it apart from some complexity.
This article is issued from Archlinux. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.