Difference between revisions of "VMware"

From ArchWiki
Jump to: navigation, search
m (3.0 kernels)
m (correct prompt on command lines)
Line 60: Line 60:
  
 
====2.6.39 kernels====
 
====2.6.39 kernels====
  mkdir /tmp/vmware && cd /tmp/vmware
+
  $ mkdir /tmp/vmware && cd /tmp/vmware
 
  # for t in /usr/lib/vmware/modules/source/*.tar; do tar xf $t; mv $t{,.original}; done
 
  # for t in /usr/lib/vmware/modules/source/*.tar; do tar xf $t; mv $t{,.original}; done
 
  # wget -qO- http://kaslit.com/downloads/vmware2.6.39fixed.patch | patch -Np1
 
  # wget -qO- http://kaslit.com/downloads/vmware2.6.39fixed.patch | patch -Np1
Line 69: Line 69:
 
====2.6.37 and .38 kernels====
 
====2.6.37 and .38 kernels====
 
  cd /tmp
 
  cd /tmp
  wget http://www.russo79.com/vmware7.1.3-patch-kernel-2.6.37.sh
+
  $ 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
+
  $ chmod +x vmware7.1.3-patch-kernel-2.6.37.sh
 
  # ./vmware7.1.3-patch-kernel-2.6.37.sh
 
  # ./vmware7.1.3-patch-kernel-2.6.37.sh
  
 
====2.6.36 kernels====
 
====2.6.36 kernels====
  cd /tmp
+
  $ cd /tmp
  wget http://files.archlinux.org.il/vmmon_fix_2.6.36.sh
+
  $ wget http://files.archlinux.org.il/vmmon_fix_2.6.36.sh
  # chmod +x vmmon_fix_2.6.36.sh
+
  $ chmod +x vmmon_fix_2.6.36.sh
 
  # ./vmmon_fix_2.6.36.sh
 
  # ./vmmon_fix_2.6.36.sh
  
 
====2.6.35 kernels====
 
====2.6.35 kernels====
  cd /tmp
+
  $ cd /tmp
  wget http://www.sputnick-area.net/scripts/vmware7.1.1-patch-kernel-2.6.35.bash
+
  $ 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
+
  $ chmod +x vmware7.1.1-patch-kernel-2.6.35.bash
 
  # ./vmware7.1.1-patch-kernel-2.6.35.bash
 
  # ./vmware7.1.1-patch-kernel-2.6.35.bash
  
Line 154: Line 154:
 
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.
 
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:
 
You can manually patch the sources by removing the _range suffix with a quick sed expression:
  cd /tmp
+
  $ cd /tmp
  tar xvf /usr/lib/vmware/modules/source/vmmon.tar
+
  $ tar xvf /usr/lib/vmware/modules/source/vmmon.tar
  sed 's/_range//' -i vmmon-only/linux/iommu.c
+
  $ sed 's/_range//' -i vmmon-only/linux/iommu.c
  tar cvf /usr/lib/vmware/modules/source/vmmon.tar vmmon-only
+
  # 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:
 
Please note that when upgrading the kernel you will have to rebuild the vmware modules with:

Revision as of 03:12, 14 August 2011

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 – فارسی

This article is about installing VMware in Arch, you may also be interested in Installing Arch Linux in VMware.

Tip: Instructions on installing packages from the AUR are available here.

VMware Server Installation

1. Install vmware-server from the AUR.

2. Install vmware-server-console. Alternatively, on Arch64, the bin32 version can also be installed.

3. Download the image from VMWare website.

4. Copy the image to the build directory.

5. Finish building.

VMware Workstation or VMware Player

Installation

Note: VMware Workstation/Player will not be manageable with pacman as the files aren't installed with it.
Note: For a 2.6.39 kernel you may also use this automated script: http://kaslit.com/downloads/vmwareinstallshell.sh - note that you still need to do steps 3, 4, 5(6), 10 and 11

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

1. Download VMware Workstation or VMware Player (you may also try the testing (Beta/RC) versions).

2. Create a fake System V init style directory for VMware and start the installation (the Template:Codeline flag uses terminal instead of the GUI and the Template:Codeline we need it to select the Template:Codeline 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

3. Read & accept the EULA to continue.

4. Accept the default settings until it prompts for Template:Codeline - set it to:

/etc/rc.d/vmware.d/

5. Set Template:Codeline to:

/etc/rc.d

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

VMware modules and patches

Tip: There is also a package called Template:Package AUR in the AUR with the intention of trying to automate the patching process.

3.1rc kernels

In addition to the kernel 3.0 patch just apply this one: http://weltall.heliohost.org/wordpress/2011/08/10/vmware-workstation-7-1-4-fix-for-linux-3-1/

3.0 kernels

There is a set of patches that handle correctly the linux kernel 3.0 on: http://weltall.heliohost.org/wordpress/2011/05/14/running-vmware-workstation-player-on-linux-2-6-39-updated/

VMware module builder does not handle correctly the new kernel version string which has only two parts (3.x) instead of three (2.6.xx). See this thread: https://bbs.archlinux.org/viewtopic.php?id=123695.

The easier solution for that point is to patch two binaries:

# sed 's/\x83\xe8\x03\x83\xf8\x01\x0f\x96\xc0/\x83\xe8\x02\x83\xf8\x01\x0f\x96\xc0/' -i /usr/lib/vmware/lib/libvmware-modconfig-console.so/libvmware-modconfig-console.so
# sed 's/\x83\xe8\x03\x83\xf8\x01\x0f\x96\xc0/\x83\xe8\x02\x83\xf8\x01\x0f\x96\xc0/' -i /usr/lib/vmware/lib/libvmware-modconfig.so/libvmware-modconfig.so

2.6.39 kernels

$ mkdir /tmp/vmware && cd /tmp/vmware
# for t in /usr/lib/vmware/modules/source/*.tar; do tar xf $t; mv $t{,.original}; done
# wget -qO- http://kaslit.com/downloads/vmware2.6.39fixed.patch | patch -Np1
# for d in *-only; do tar cf /usr/lib/vmware/modules/source/${d/%-only/}.tar $d; done

A Fedora community member has also uploaded the Template:Filename folder in a compressed tarball here: http://www.fedoraforum.org/leigh123linux/vm/source.tar.lzma

2.6.37 and .38 kernels

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

2.6.36 kernels

$ 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

2.6.35 kernels

$ 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)

7. At this point you would want to install the modules. First you need to either change the Template:Codeline in Template:Filename from Template:Filename to Template:Filename:

# sed -i "s|/sbin/lsmod|/bin/lsmod|g" /etc/rc.d/vmware

or create a symlink with:

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

8. Now you can install the modules. You can do this with either by launching VMware and letting it install the modules with the GUI or executing:

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

9. (Optional) Add vmware to the DAEMONS array in Template:Filename so that the service is started automatically on boot.

10. Install and run HAL:

# pacman -S hal
# rc.d start hal

11. Now, open your VMware Workstation (Template:Codeline in the console) or VMware Player (Template:Codeline in the console) to configure & use!

Uninstallation

Check the product name:

# vmware-installer -l

and uninstall:

# vmware-installer -u <vmware-product>

Manually included parts in Template:Filename have to be deleted manually. Don't forget to remove vmware from the Template:Filename 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 Template:Codeline file:

bios440.filename = "bios440.rom"

Troubleshooting

The installer won't start

If you just get back to the prompt when opening the Template:Filename, then you probably have an old version of the Template:Codeline and you should remove it (you may also refer to the Uninstallation section of this article):

# rm -r /etc/vmware-installer

Could not open /dev/vmmon: No such file or directory.

The full error is:

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

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

# rc.d start vmware

Kernel headers for version 3.x.x-xxxx were not found. If you installed them[...]

Install them with the following:

# pacman -S linux-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

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 Template:Filename:

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

This should fix that:

# chmod u-sw /usr/lib/cups/filter/thnucups
# rc.d restart cupsd