VMware (Українська)

From ArchWiki
Jump to: navigation, search

Ця стаття про встановлення VMware в Arch Linux, вам також може буде цікаво прочитати про Встановлення Arch Linux на VMware.

Встановлення VMware Server

Встановіть vmware-serverAUR[broken link: archived in aur-mirror] з AUR.

VMware Server Console

Install vmware-server-consoleAUR[broken link: archived in aur-mirror] from the AUR. Alternatively, on Arch64, the bin32 version can also be installed.

Note

On both cases, the vmware image is not included in the AUR anymore. So you should:

  • download and extract the tarball from the AUR
  • download the image from VMWare website.
  • copy VMware-server-2.0.2-203138.i386.tar.gz to the build directory
  • finish building

VMware Workstation or VMware Player

Installation

Note: This will not install with pacman, so the files installed will not be traceable/removable with pacman.

To install Workstation or Player on a Linux host using a bundle:

1. Download VMware-Workstation-<version>.<release>.<architecture>.bundle or VMware-Player-<version>-<release>.<architecture>.bundle from the VMware site. (Note: you can also try the testing (Beta/RC) versions found in here: http://communities.vmware.com/community/beta/ws but please note that they indeed are beta and so there's no guarantee you will not run into issues).

2. In a terminal cd to the directory where you downloaded the file.

3. Become root and create a fake System V init style directory for VMware and start the installation (the --console flag uses terminal instead of the GUI and the --custom asks all the unnecessary questions that nobody cares about - but we need it to select the System service runlevels directory):

# mkdir -p /etc/rc.d/vmware.d/{rc{0..6},init}.d
# chmod +x VMware-<edition>-<version>.<release>.<architecture>.bundle
# ./VMware-<edition>-<version>.<release>.<architecture>.bundle --console --custom

4. (Read &) accept the EULA to continue.

5. Accept the default settings until it prompts for System service runlevels then set to:

/etc/rc.d/vmware.d/

6. For System service scripts set to:

/etc/rc.d

It might happen that you need to set the directory for System service scripts as /etc/rc.d/vmware.d/init.d (the default) or else the installation would fail. If you do, you can create a symlink from /etc/rc.d/vmware.d/init.d/vmware to /etc/rc.d/vmware afterwards or the other way around (note that you can't remove the VMware System service script after you've placed it somewhere because that's where VMware will be looking for it).

7. (Optional) Enter the directory path to the Integrated Virtual Debugger for Eclipse if Eclipse is installed.

8. Mash enter to install. Note that if nothing happens at this point and you are returned to the prompt, try re-running the installation without the --console option.

9. At this point you would want to install the modules. First you need to either change the lsmod binary path in /etc/rc.d/vmware at the lines 88 and 108 from:

/sbin/lsmod

to:

/bin/lsmod

or create a symlink from /bin/lsmod to /sbin/lsmod with:

# ln -s /bin/lsmod /sbin/lsmod

VMware modules and patches

Tango-view-fullscreen.pngThis article or section needs expansion.Tango-view-fullscreen.png

Reason: please use the first argument of the template to provide a brief explanation. (Discuss in Talk:VMware (Українська)#)
  • For 2.6.39 kernel and VMware player 3.1.4, there is a required
Note: like the scripts below, you must extract all of the VMware sources out first and then run this patch. The patch is setup for the source to be in the same local directory of the patch. If you want to run the patch directly against the source in the directory where it already resides, change every instance of "source-original" in the patch file to "/usr/lib/vmware/modules/source" after extracting all five of the tar files in that directory. Patch and then tar them again.
$ wget http://weltall.heliohost.org/wordpress/wp-content/uploads/2011/05/vmware2.6.39fixed.patch
  • For 2.6.38 kernel and VMware player 3.1.4, there is no patch required
  • For 2.6.37 kernel and VMware 7.x.x (tested with 7.1.3), there's a script to patch the VMware sources (run as root):
Note: This script also works for 2.6.38 kernels and VMware 7.1.4
$ cd /tmp
$ wget http://www.russo79.com/vmware7.1.3-patch-kernel-2.6.37.sh
# chmod +x vmware7.1.3-patch-kernel-2.6.37.sh
# ./vmware7.1.3-patch-kernel-2.6.37.sh

This script was based on the patch taken from http://communities.vmware.com/thread/293321

  • For 2.6.37 kernel and VMware player 3.1.4, there is no patch required
  • For 2.6.36 kernel and VMware 7.x.x, there's a script to patch the vmmon (run as root):
$ cd /tmp
$ wget http://files.archlinux.org.il/vmmon_fix_2.6.36.sh
# chmod +x vmmon_fix_2.6.36.sh
# ./vmmon_fix_2.6.36.sh
  • For 2.6.35 kernel and VMware 7.x.x, there's a script to patch the VMware sources :
$ cd /tmp
$ wget http://www.sputnick-area.net/scripts/vmware7.1.1-patch-kernel-2.6.35.bash
# chmod +x vmware7.1.1-patch-kernel-2.6.35.bash
# ./vmware7.1.1-patch-kernel-2.6.35.bash

Installation (concluded)

Now you can install the modules. You can do this with either by launching VMware and letting it install the modules from there with the GUI or alternatively you can execute the command:

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

10. (Optional) Add vmware to the DAEMONS array in /etc/rc.conf so that the service is started automatically on boot.

11. Install and run HAL

#/etc/rc.d/hal start

12. Now, open your VMware Workstation (vmware in the console) to configure & use!

Uninstallation

Check the product name

# vmware-installer -l

uninstall product

# vmware-installer -u <vmware-product>

Manually included parts in /etc/rc.d have to be deleted manually. Don't forget to remove vmware from the /etc/rc.conf DAEMONS array.

Extracting the VMware BIOS

To extract the VMware BIOS, which can be manipulated and later used with your virtual machines:

$ 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

Once you've modified the BIOS in whatever way required, move it to the directory where your VM is stored, and add it to the .vmx file:

bios440.filename = "bios440.rom"

Troubleshooting

Kernel upgrades and VMware modules

If when you ran

./VMware-<edition>-<version>.<release>.<architecture>.bundle

you get back to the prompt and VMware don't ask you to makes choices, then you probably have an old install, so you should rename /etc/vmware-installer/ :

# mv /etc/vmware-installer /etc/vmware-installer.old


If you get an error like this when launching up a Virtual Machine:

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

It means that at least the one VMware service isn't started up. You can start them all up by running (as root):

# /etc/rc.d/vmware start


If, on the other hand VMware complains about kernel headers like this:

Kernel headers for version 2.6.xx-xxxx were not found. If you installed them.......

Install them with the following:

# pacman -S kernel26-headers

error: implicit declaration of function ‘iommu_unmap_range’

If the following error happens while compiling modules

...
/tmp/vmware-root/modules/vmmon-only/linux/iommu.c:403:7: erreur: implicit declaration of function ‘iommu_unmap_range’
make[2]: *** [/tmp/vmware-root/modules/vmmon-only/linux/iommu.o] Erreur 1
make[1]: *** [_module_/tmp/vmware-root/modules/vmmon-only] Erreur 2
make[1]: quittant le répertoire « /usr/src/linux-2.6.35-ARCH »
make: *** [vmmon.ko] Erreur 2

This error is due to a change in the kernel API, the change is merely just a change of name which removes the suffixed '_range' from the iommu functions. You can manually patch the sources by removing the _range suffix with a quick sed expression:

cd /tmp
tar xvf /usr/lib/vmware/modules/source/vmmon.tar
sed 's/_range//' -i vmmon-only/linux/iommu.c
tar cvf /usr/lib/vmware/modules/source/vmmon.tar vmmon-only

Please note that when upgrading the kernel you will have to rebuild the vmware modules with:

$ vmware-modconfig --console --install-all

Otherwise your whole system might crash when trying to power up VMs so keep that in mind.

error: implicit declaration of function ‘kernel_locked’

If you're getting this error it means you're most likely on a 2.6.36 > kernel and require some additional attention. Attention that VMware rarely pays.

There's a patch available for this and several more compile errors over at [1]

error: ‘struct sock’ has no member named ‘sk_sleep’

This error often occures when compiling the vsock module, the error looks something like:

make[1]: Entering directory `/usr/src/linux-headers-2.6.35-7-generic-pae'
  CC [M]  /tmp/vmware-root/modules/vsock-only/linux/af_vsock.o
/tmp/vmware-root/modules/vsock-only/linux/af_vsock.c:312: warning: initialization from incompatible pointer type
/tmp/vmware-root/modules/vsock-only/linux/af_vsock.c:359: warning: initialization from incompatible pointer type
/tmp/vmware-root/modules/vsock-only/linux/af_vsock.c: In function ‘VSockVmciStreamConnect’:
/tmp/vmware-root/modules/vsock-only/linux/af_vsock.c:3224: error: ‘struct sock’ has no member named ‘sk_sleep’
/tmp/vmware-root/modules/vsock-only/linux/af_vsock.c:3247: error: ‘struct sock’ has no member named ‘sk_sleep’

...

To fix this we do a similar approach as the one mentioned above:

cd /tmp
tar xvf /usr/lib/vmware/modules/source/vsock.tar
sed 's/\([a-z_]*\)->compat_sk_sleep/compat_sk_sleep(\1)/g' -i vsock-only/linux/af_vsock.c
tar cvf /usr/lib/vmware/modules/source/vsock.tar vsock-only

Then rerun:

$ vmware-modconfig --console --install-all

And you should be fine.

Compiling modules on kernel 2.6.32

Note: not needed with vmware 7.x.x

To patch VMware modules we have to add #include "compat_sched.h" to some modules's source:

cd /tmp
tar xf /usr/lib/vmware/modules/source/vmnet.tar
nano vmnet-only/vnetUserListener.c (near line 37 add #include "compat_sched.h")
tar cf /usr/lib/vmware/modules/source/vmnet.tar vmnet-only
tar xf /usr/lib/vmware/modules/source/vmci.tar
nano vmci-only/linux/vmciKernelIf.c vmci-only/include/pgtbl.h (add #include "compat_sched.h" around 30 line)
tar cf /usr/lib/vmware/modules/source/vmci.tar vmci-only
vmware-modconfig --console --install-all

You can also use a ready script: http://communities.vmware.com/thread/239221

Printing from the guest OS

If you've configured your guest OS to use the printers on your host, and the print jobs aren't going through, there may be a permissions problem with the ThinPrint CUPS filter (thnucups), which is used by VMware.

From /var/log/cups/error_log:

E [22/Nov/2010:14:10:11 -0800] Unable to execute /usr/lib/cups/filter/thnucups: insecure file permissions (0104755)

This should fix that:

$ sudo chmod u-sw /usr/lib/cups/filter/thnucups
$ sudo /etc/rc.d/cupsd restart

VMware 7.xx gui won't start

When executing vmware from a terminal, you see the following output but the GUI won't start,

$ vmware
Logging to /tmp/vmware-jcosta/setup-5527.log
filename:       /lib/modules/2.6.38-ck/misc/vmmon.ko
supported:      external
license:        GPL v2
description:    VMware Virtual Machine Monitor.
author:         VMware, Inc.
depends:
vermagic:       2.6.38-ck SMP preempt mod_unload
filename:       /lib/modules/2.6.38-ck/misc/vmnet.ko
supported:      external
license:        GPL v2
description:    VMware Virtual Networking Driver.
author:         VMware, Inc.
depends:
vermagic:       2.6.38-ck SMP preempt mod_unload
filename:       /lib/modules/2.6.38-ck/misc/vmblock.ko
supported:      external
version:        1.1.2.0
license:        GPL v2
description:    VMware Blocking File System
author:         VMware, Inc.
srcversion:     400149ED038D22A87322D56
depends:
vermagic:       2.6.38-ck SMP preempt mod_unload
parm:           root:The directory the file system redirects to. (charp)
filename:       /lib/modules/2.6.38-ck/misc/vmci.ko
supported:      external
license:        GPL v2
description:    VMware Virtual Machine Communication Interface (VMCI).
author:         VMware, Inc.
depends:
vermagic:       2.6.38-ck SMP preempt mod_unload
filename:       /lib/modules/2.6.38-ck/misc/vsock.ko
supported:      external
license:        GPL v2
version:        1.0.0.0
description:    VMware Virtual Socket Family
author:         VMware, Inc.
srcversion:     CF8ABF14AFA7E44C2CC4C9C
depends:        vmci
vermagic:       2.6.38-ck SMP preempt mod_unload
filename:       /lib/modules/2.6.38-ck/misc/vmmon.ko
supported:      external
license:        GPL v2
description:    VMware Virtual Machine Monitor.
author:         VMware, Inc.
depends:
vermagic:       2.6.38-ck SMP preempt mod_unload


This seems to be a problem with glibmm-2.28, downgrade glibmm to 2.24.2.1, and it should work.