Difference between revisions of "VMware/Installing Arch as a guest"

From ArchWiki
Jump to: navigation, search
(move copy/paste below X; prune updatedb below shared folders)
(Dutch (which is more up to date) --> English translation)
Line 1: Line 1:
[[Category:Getting and installing Arch (English)]]
+
[[Category:Getting and installing Arch]]
 
[[Category:Virtualization]]
 
[[Category:Virtualization]]
 
{{i18n|Installing Arch Linux in VMWare}}
 
{{i18n|Installing Arch Linux in VMWare}}
{{Translateme|[[Installing Arch Linux in VMWare (Nederlands)|Dutch version]] is more up to date.}}
 
  
This article will explain how to install Arch Linux inside a virtual machine (e.g. in VMware Workstation on Windows or VMware Fusion on Mac OS X).
+
{{Article summary start}}
 +
{{Article summary text|Installing Archlinux in VMware: open-vm-tools and configuring Xorg}}
 +
{{Article summary heading|Related}}
 +
{{Article summary wiki|VMware}}
 +
{{Article summary wiki|Installing_VMWare_vCLI}}
 +
{{Article summary end}}
  
If using systemd, see: [[Installing_Arch_Linux_in_VMware_(systemd)|Installing Arch Linux in VMware (systemd)]].
+
This article handles installing Archlinux in a VMware-based virtual environment such as VMware ESX, VMware Workstation/Fusion and VMware Player.
  
You may also be interested in [[VMware|installing VMware in Arch]].
+
==VMware Tools versus Open-VM-Tools==
  
== VMware Tools ==
+
VMware Tools for linux exists in 2 forms: the [http://packages.vmware.com/tools official VMware Tools] and Open-VM-Tools. VMware Tools is based on a stable snapshot of Open-VM-Tools. Open-VM-Tools contains more experimental code and features.
The VMware Tools improve networking capability, cut and paste between the host and the guest under X, or access of the directories on host from the guest (called shared folders by VMware). They also provide a set of tools to access advanced options of the Virtual Machine, including shrinking and freeing unnecessary space in the virtual hard drives
+
The official VMware Tools are not available for Archlinux.
  
Install the {{ic|open-vm-tools}} package from <nowiki>[</nowiki>[[community]]<nowiki>]</nowiki>:
+
Originally, VMware Tools provided the best drivers for network and storage, combined with the functionality for other features such as time synchronization. However, for quite a while now the drivers for the network adapter en scsi adapter are part of the linux kernel, and VMware Tools is only needed for extra features and support for the "old" vmxnet adapter.
pacman -S open-vm-tools
+
  
and start {{ic|VMware tools}} with:
+
==Open-VM-Tools modules==
rc.d start open-vm-tools
+
  
To start them automatically at boot, add the daemon to the [[DAEMONS]] array in [[rc.conf]].
+
The open-vm-tools package contains the following modules:
DAEMONS=( ... open-vm-tools ... )
+
  
To start the {{ic|vmware toolbox}} (allows you to configure time synchronization, connect or disconnect devices, shrink the hard disk freeing unnecessary space, etc), run the following command:
+
* vmblock: kernel filesystem module, enables drag&drop functionality between the host system and the virtual machine in VMware Workstation/Fusion.
# vmware-toolbox
+
* vmhgfs: kernel filesystem module, enables file/directory sharing between the host system and the virtual machine in VMware Workstation/Fusion.
 +
* vmsync: experimental filesystem sync driver, enables filesystem quiescing when creating backups and snapshots.
 +
* vmci: virtual machine communication interface, high performance interface between virtual machines on the same host and between virtual machines and the host itself.
 +
* vsocket: part of vmci.
 +
* vmxnet: driver for the old vmxnet netwerk-adapter.
  
{{Note|In previous versions, starting this daemon was not strictly necessary; mouse integration, copy/paste and drag/drop under X would still work, as long as vmware-user was executed. This is no longer the case. Starting with version 2010.07.25 of open-vm-tools, vmware-user is no longer available and its functionality is implemented as a plugin managed by a new daemon (vmtoolsd).}}
+
==Open-VM-Tools utilities==
  
{{Note|1=You may find get the following error when starting {{ic|open-vm-tools}}:
+
The open-vm-tools package comes with the following utilities:
ERROR: could not insert 'vmhgfs': Invalid argument
+
In this case, the solution is to build the {{ic|open-vm-tools-modules}} package with [[ABS]] against the currently installed kernel. This is discussed [https://bbs.archlinux.org/viewtopic.php?pid=1057886 here].}}
+
  
== Installing X ==
+
* vmtoolsd: service responsible for the virtual machine status report.
 +
* vmware-check-vm: tool to check whether a utility has been started on a physical or virtual machine.
 +
* vmware-xferlogs: Dumps logging/debugging information to the virtual machine logfile.
 +
* vmware-toolbox-cmd: tool to obtain virtual machine information of the host such as statistics,...
  
The necessary [[Xorg]] packages can be installed with:
+
==Installating Open-VM-Tools==
# pacman -S xorg-server xf86-input-vmmouse xf86-video-vmware svga-dri
+
  
and the fallback X driver:
+
Install the {{ic|open-vm-tools}} package in the <nowiki>[</nowiki>[[community]]<nowiki>]</nowiki> repository:
# pacman -S xf86-video-vesa
+
  
Add de vmwgfx module to the MODULES array in rc.conf.
+
pacman -S open-vm-tools
  
# MODULES = (... vmwgfx ...)
+
and start the service by running:
  
Please notice: the virtual machine should have at least 32MB VGA memory !
+
rc.d start open-vm-tools
  
=== Copy and Paste between VM and Host ===
+
To start the service during boot, add it to the [[DAEMONS]] area in the [[rc.conf]] file.
  
Run {{ic|vmware-user-suid-wrapper}} after starting X, either manually or as part of your {{ic|~/.xinitrc}} file. From now on, your X clipboard selection will be automatically be copied to the Host's clipboard and vice versa. Enjoy!
+
DAEMONS = ( ... open-vm-tools ... )
  
== Enable Unity ==
+
==Time synchronization==
  
Unity is installed by default, but needs a bit of work to get it running.
+
Configuring time synchronization in a virtual machine is important: fluctuations are bound to occur more easily in a virtual machine compared to a physical host. This is mostly due to the fact that the cpu is shared by more than 1 virtual machine.
First, make sure that {{ic|open-vm-tools}} is installed and loaded on startup. If needed, add {{ic|open-vm-tools}} to the DAEMONS list.
+
  
Log out and restart. Unity will work. Unfortunately at the moment, menus may not display properly, so launch a terminal, switch to Unity and use the terminal to launch whatever you want. If you get an error like:
+
There are 2 options to set up time synchronization: the host machine as source or an external [[NTP]] server as source.
error while loading shared libraries: libgtkmm-2.4.so.1: cannot open shared object file: No such file or directory
+
  
Install {{ic|gtkmm}}:
+
When you choose to use the host as source (for example in an ESX server), this can be done by issuing the command:
pacman -S gtkmm
+
  
== Shared Folders with the Host ==
+
vmware-toolbox-cmd timesync enable
  
Create a new Shared Folder by selecting {{ic|VM}} -> {{ic|Settings...}} from the VMware Workstation menu. Select the {{ic|Options}} tab and then {{ic|Shared Folder}}.  Check the {{ic|Always enabled}} option and create a new share.  For Windows XP you can create a share with the Name {{ic|C}} and the Host Path {{ic|C:\}}.
+
==Xorg configuration==
  
Then add a line like the following to your {{ic|/etc/fstab}} file (changing uid/gid as needed) for each shared folder:
+
{{Note|To use Xorg in a virtual machine, a minimum of 32MB VGA memory is needed, and the VMware hardware version has to be > 8, version 7 is no longer functioning correctly.}}
  
.host:/shared_folder /mnt/shared vmhgfs defaults,user,ttl=5,uid=root,gid=root,fmask=0133,dmask=0022 0 0
+
Install the following dependencies:
  
Make the mount directories and mount the Shared Folders:
+
pacman -S xf86-input-vmmouse xf86-video-vmware xf86-video-vesa svga-dri
  
mkdir /mnt/shared
+
Add the vmwgfx module to the MODULES array in [[rc.conf]].
mount /mnt/shared
+
  
=== Prune mlocate DB ===
+
MODULES = (... vmwgfx ...)
  
It is useless to add the shared directories to the {{ic|locate DB}}. Add the shared directories to {{ic|PRUNEPATHS}} in {{ic|/etc/updatedb}}.
+
Create the file /etc/X11/xorg.conf.d/20-gpudriver.conf
  
== Paravirtualization ==
+
Section "Device"
 +
        Identifier "Card0"
 +
        Driver    "vmware"
 +
EndSection
  
=== Description ===
+
Afterwards, a reboot is required.
  
[[wikipedia:Paravirtualization|Paravirtualization]] (PV) is a virtualization feature\technique that allows some of the processing, which in an ideal virtualized environment happens inside the virtualization to be done outside of the virtualized context. This will, in most cases, greatly improve the base line performance of a virtual machine. Although in some cases, depending on many variables, it will not.
+
==Paravirtual SCSI-Adapter==
  
With the to-date distributions of Arch, PV works out of the box.
+
The paravirtual scsi-adapter can, because there's less overhead, give a substantial performance boost in ESX.
  
On newer x86 and x86-64 CPU models (Both AMD and Intel) PV is implemented as a hardware feature and no additional configuration is required.
+
This can be used as follows: open the [[mkinitcpio.conf]] file and add the following to the MODULES array:
For older CPU models, You must enable the deprecated VMI protocol that introduces modifications to the guest kernel that makes it aware of the fact that it is virtualized. (Microsoft refers to this as an Enlightened Guest OS)
+
  
=== VMI Retired ===
+
MODULES = (... vmw_pvscsi ...)
  
VMWare PV was once implemented as the VMI (Virtual Machine Interface) standard.
+
Afterwards, run the command:
  
In 2009, VMware announced they would [http://blogs.vmware.com/guestosguide/2009/09/vmi-retirement.html stop supporting VMI] in 2011. The Linux kernel [http://blog.quiettech.org/?p=780 should remove the VMI code] around version 2.6.37. VMI still remains useful since it allows for PV on older CPUs and Arch Linux is well built for a Linux VM Guest on hosts with low resources. VMI offers a tremendous impact on the VM performance under these circumstances.
+
mkinitcpio -p linux
  
In updated vmware products (Workstation 7+ and ESX 4+) VMI is retired. The functionality that was implemented in VMI and not covered by the improvements in modern CPUs is now implemented by the newer VMCI standard.
+
Shutdown the virtual machine and change the scsi-adapter type to: “VMware Paravirtual”. It's safe to ignore the warning that'll pop up.
Again, on to-date Arch Linux and open-vm-tools installations, VMCI works OOB and should not pose any problems. If you do encounter issues then the [http://communities.vmware.com/index.jspa Vmware Community] forums will offer all the aid you need.
+
  
On Vmware Workstation products VMCI is enabled by default. On Vmware ESX products VMCI is disabled by default on the basis that it COULD pose a security risk. You can enable or disable VMCI through the VM settings screen.
+
==VMCI==
VMCI provides extra features, as well as a generic platform, for the area of Guest-To-Host communication.
+
  
=== VMI Installation ===
+
The [http://www.vmware.com/support/developer/vmci-sdk VMCI interface] is enabled by default in VMware Workstation and Fusion. In VMware ESX the interface is restricted, which means that communication is only possible between ESX and the virtual machine, not between virtual machines themselves. This can be changed in the Virtual Machine settings, traffic between ESX and the Virtual Machine can not be disabled.
  
You must install the {{ic|open-vm-tools}} before enabling {{ic|VMI}}.
+
==DRAG AND DROP==
  
To enable {{ic|VMI}} click on {{ic|Settings...}} from the VM menu. Select the {{ic|Processors device}} and enable {{ic|VMWare kernel paravirtualization}}.
+
Drag and Drop from files, from VMware Workstation/Fusion into the Virtual Machines, can be disabled by editing /etc/conf.d/open-vm-tools:
  
Once Arch is up and running you can check if you have {{ic|VMI}} enabled or not by running the following command:
+
  VM_DRAG_AND_DROP="no"
  $ dmesg | grep vmi
+
  
If VMI is enabled you should see an output such as:
+
== Shared Folders with the Host ==
Booting paravirtualized kernel on vmi [deprecated]
+
vmi: registering clock event vmi-timer. mult=9202214 shift=22
+
vmi: registering clock event vmi-timer. mult=9202214 shift=22
+
vmi: registering clock source khz=2193979
+
Switching to clocksource vmi-timer
+
  
=== VMCI Installation ===
+
{{Note| This functionality is only available in VMware Workstation and Fusion}}
  
To verify that {{ic|VMCI}} is up and running, run the following command:
+
Create a new Shared Folder by selecting {{ic|VM}} -> {{ic|Settings...}} in the VMware Workstation menu. Select the {{ic|Options}} tab and then {{ic|Shared Folder}}. Enable the {{ic|Always enabled}} option and create a new share. For Windows XP, you can create a share named {{ic|C}} with the Host Path {{ic|C:\}}.
  $ dmesg | grep vmci
+
  
If {{ic|VMCI}} is enabled you should see an output such as:
+
Add the following rule to {{ic|/etc/fstab}} (adjust the uid/gid where needed) for each shared folder:
Probing for vmci/PCI.
+
vmci 0000:00:07.7: PCI INT A -> GSI (level, low) -> IRQ 16
+
Found vmci/PCI at 0x1080, irq 16.
+
Registered vmci device.
+
  
== Troubleshooting ==
+
.host:/shared_folder /mnt/shared vmhgfs defaults,user,ttl=5,uid=root,gid=root,fmask=0133,dmask=0022 0 0
  
=== Networking ===
+
Create the mount directories and Shared Folders:
  
If there is a problem with networking, it is possible that the module {{ic|pcnet32}} steals the network interface from VMware, disabling it works:
+
mkdir /mnt/shared
  MODULES=(!pcnet32 ...)
+
  mount /mnt/shared
  
=== Keyboard/Mouse not working in X ===
+
Temporary mounts are also possible:
  
If you have no keyboard or mouse in X make sure you don't have the following line in the {{ic|ServerFlags}} section of your Xorg configuration. Consult [[Xorg#InputClasses]] for further assistance:
+
mount -t -v -o rw .host:/shared_folder /mnt/shared
 +
 
 +
=== Prune mlocate DB ===
  
Remove Option "AutoAddDevices" "False"
+
When using mlocate, it's useless to index the shared directories in the {{ic|locate DB}}. Therefore, add the directories to {{ic|PRUNEPATHS}} in {{ic|/etc/updatedb}}.

Revision as of 18:51, 9 April 2012

This template has only maintenance purposes. For linking to local translations please use interlanguage links, see Help:i18n#Interlanguage links.


Local languages: Català – Dansk – English – Español – Esperanto – Hrvatski – Indonesia – Italiano – Lietuviškai – Magyar – Nederlands – Norsk Bokmål – Polski – Português – Slovenský – Česky – Ελληνικά – Български – Русский – Српски – Українська – עברית – العربية – ไทย – 日本語 – 正體中文 – 简体中文 – 한국어


External languages (all articles in these languages should be moved to the external wiki): Deutsch – Français – Română – Suomi – Svenska – Tiếng Việt – Türkçe – فارسی

Summary help replacing me
Installing Archlinux in VMware: open-vm-tools and configuring Xorg
Related
VMware
Installing_VMWare_vCLI

This article handles installing Archlinux in a VMware-based virtual environment such as VMware ESX, VMware Workstation/Fusion and VMware Player.

VMware Tools versus Open-VM-Tools

VMware Tools for linux exists in 2 forms: the official VMware Tools and Open-VM-Tools. VMware Tools is based on a stable snapshot of Open-VM-Tools. Open-VM-Tools contains more experimental code and features. The official VMware Tools are not available for Archlinux.

Originally, VMware Tools provided the best drivers for network and storage, combined with the functionality for other features such as time synchronization. However, for quite a while now the drivers for the network adapter en scsi adapter are part of the linux kernel, and VMware Tools is only needed for extra features and support for the "old" vmxnet adapter.

Open-VM-Tools modules

The open-vm-tools package contains the following modules:

  • vmblock: kernel filesystem module, enables drag&drop functionality between the host system and the virtual machine in VMware Workstation/Fusion.
  • vmhgfs: kernel filesystem module, enables file/directory sharing between the host system and the virtual machine in VMware Workstation/Fusion.
  • vmsync: experimental filesystem sync driver, enables filesystem quiescing when creating backups and snapshots.
  • vmci: virtual machine communication interface, high performance interface between virtual machines on the same host and between virtual machines and the host itself.
  • vsocket: part of vmci.
  • vmxnet: driver for the old vmxnet netwerk-adapter.

Open-VM-Tools utilities

The open-vm-tools package comes with the following utilities:

  • vmtoolsd: service responsible for the virtual machine status report.
  • vmware-check-vm: tool to check whether a utility has been started on a physical or virtual machine.
  • vmware-xferlogs: Dumps logging/debugging information to the virtual machine logfile.
  • vmware-toolbox-cmd: tool to obtain virtual machine information of the host such as statistics,...

Installating Open-VM-Tools

Install the open-vm-tools package in the [community] repository:

pacman -S open-vm-tools

and start the service by running:

rc.d start open-vm-tools

To start the service during boot, add it to the DAEMONS area in the rc.conf file.

DAEMONS = ( ... open-vm-tools ... )

Time synchronization

Configuring time synchronization in a virtual machine is important: fluctuations are bound to occur more easily in a virtual machine compared to a physical host. This is mostly due to the fact that the cpu is shared by more than 1 virtual machine.

There are 2 options to set up time synchronization: the host machine as source or an external NTP server as source.

When you choose to use the host as source (for example in an ESX server), this can be done by issuing the command:

vmware-toolbox-cmd timesync enable

Xorg configuration

Note: To use Xorg in a virtual machine, a minimum of 32MB VGA memory is needed, and the VMware hardware version has to be > 8, version 7 is no longer functioning correctly.

Install the following dependencies:

pacman -S xf86-input-vmmouse xf86-video-vmware xf86-video-vesa svga-dri

Add the vmwgfx module to the MODULES array in rc.conf.

MODULES = (... vmwgfx ...)

Create the file /etc/X11/xorg.conf.d/20-gpudriver.conf

Section "Device"
       Identifier "Card0"
       Driver     "vmware"
EndSection

Afterwards, a reboot is required.

Paravirtual SCSI-Adapter

The paravirtual scsi-adapter can, because there's less overhead, give a substantial performance boost in ESX.

This can be used as follows: open the mkinitcpio.conf file and add the following to the MODULES array:

MODULES = (... vmw_pvscsi ...)

Afterwards, run the command:

mkinitcpio -p linux

Shutdown the virtual machine and change the scsi-adapter type to: “VMware Paravirtual”. It's safe to ignore the warning that'll pop up.

VMCI

The VMCI interface is enabled by default in VMware Workstation and Fusion. In VMware ESX the interface is restricted, which means that communication is only possible between ESX and the virtual machine, not between virtual machines themselves. This can be changed in the Virtual Machine settings, traffic between ESX and the Virtual Machine can not be disabled.

DRAG AND DROP

Drag and Drop from files, from VMware Workstation/Fusion into the Virtual Machines, can be disabled by editing /etc/conf.d/open-vm-tools:

VM_DRAG_AND_DROP="no"

Shared Folders with the Host

Note: This functionality is only available in VMware Workstation and Fusion

Create a new Shared Folder by selecting VM -> Settings... in the VMware Workstation menu. Select the Options tab and then Shared Folder. Enable the Always enabled option and create a new share. For Windows XP, you can create a share named C with the Host Path C:\.

Add the following rule to /etc/fstab (adjust the uid/gid where needed) for each shared folder:

.host:/shared_folder /mnt/shared vmhgfs defaults,user,ttl=5,uid=root,gid=root,fmask=0133,dmask=0022 0 0

Create the mount directories and Shared Folders:

mkdir /mnt/shared
mount /mnt/shared

Temporary mounts are also possible:

mount -t -v -o rw .host:/shared_folder /mnt/shared

Prune mlocate DB

When using mlocate, it's useless to index the shared directories in the locate DB. Therefore, add the directories to PRUNEPATHS in /etc/updatedb.