VMware

From ArchWiki
Revision as of 05:18, 15 April 2010 by Warriant (talk | contribs) (Hopefully a tiny bit better)
Jump to navigation Jump to search

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

Template:Moveto

Tango-edit-clear.pngThis article or section needs language, wiki syntax or style improvements. See Help:Style for reference.Tango-edit-clear.png

Reason: please use the first argument of the template to provide a brief explanation. (Discuss in Talk:VMware#)

VMware Server Installation

Install vmware-server from the AUR.

VMware Server modules

Install vmware-server-modules from the AUR

VMware Server Console

Install vmware-server-console from the AUR.

Alternatively, on Arch64, the bin32 version can also be installed.

VMware Workstation Installation

The following is from the VMWare Workstation AUR user comments, by whompus. It describes how to install VMWare Workstation 6.5.x on either architecture.

As a temp measure use this method to install 6.5. Note that it will not install with pacman, so the files installed will not be traceable/removable with pacman and that creating the directories manually is not needed with 7.x.x (the latest versions).

To install Workstation on a Linux host using a bundle:

1. Download Template:Filename. Replace xxxxx for whichever minor version & architecture.

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

3. Become root to perform the initial installation steps:

# mkdir -p /etc/rc.d/vmware.d/{rc{0..6},init}.d
# sh VMware-Workstation-6.5.xxxxxx.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

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, this requires us to symlink Template:Filename => Template:Filename, run:

# ln -sv /bin/lsmod /sbin
# vmware-modules --console --install-all

9. Open Workstation (Template:Codeline in the console) to configure & use!

Troubleshooting

If the VMware installation hangs during the "Configuring VMWare Player" stage, see the following post on the VMware forums for an explanation and workaround: http://communities.vmware.com/message/1357476

Note: For VMWare Workstation 7, if the VMWare complains about kernel headers, install them with the following:

# sudo pacman -S kernel26-headers

After launching vmware, if you experience an errors stating, "modinfo: could not find module vmmon" you may need to rebuild vmware's binary modules. Use the following commands:

1. Make a backup (required before recompiling models):

# sudo mv /usr/lib/vmware/modules/binary /usr/lib/vmware/modules/binary.old

2. Recompile modules and load them into memory:

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

3. If and when for versions 6.5.x and 7.x.x of Vmware Workstation you get an error like

/etc/rc.d/vmware: line 108: /sbin/lsmod: File or directory not found

in the beginning of execution of vmware-modconfig, or when restarting vmware, check the file Template:Filename. Search for two occurances of '/sbin/lsmod', and replace them with '/bin/lsmod'.

Running

It's a possibility the first time you try to run Vmware server it'll throw an error stating something about "Unable to power virtual machine". Stop the VMware server and restart xinetd wtih /etc/rc.d/vmware stop;wait;/etc/rc.d/xinetd restart.

Rerun sudo /home/vmware/bin/vmware-config.pl again. If this still fails, restart your computer and do the above again. It should be fixed.

There is now a Template:Filename init script in /etc/rc.d. You can add this to your daemons list if you want. I personally dont do this, but if you intend to use the vmware's network when not actually using vmware, then you will need to do this. You will need to start it before you can run vmware though.

There is a problem with vmware unable to run correctly after a reboot. To fix this edit Template:Filename, find the text below

case "$1" in
  start)

and put

rm /etc/vmware/not_configured

immediately after that line.

To start vmware, you just do Template:Codeline from a console window, or create a shortcut or menu item however you like.

Some notes:

Leave the /etc/rc.d/vmware.d directory there, because it is needed whenever you perform Template:Codeline.

Remember, if the kernel is changed or updated, you will need to run Template:Codeline again.

Kernel 2.6 and udev

Follow the steps above and then:

1. Modify udev config

Edit/create Template:Filename and add 2 lines:

# tty devices
KERNEL="tty[[0-9]]*", NAME="vc/%n", SYMLINK="%k"

# floppy devices
KERNEL="fd[[0-9]]*", NAME="floppy/%n" , SYMLINK="fd%n"

2. Start/stop script

It takes care of devices and starts vmware, also stops vmware and removes dev entries. Call it, for example, Template:Filename, chmod it 755 and put in /etc/rc.d. You can create it by e.g. (as root):

# touch /etc/rc.d/mkvmdev; chmod 755 /etc/rc.d/mkmdev

Now paste the following to the file you created:

#!/bin/sh

. /etc/rc.conf
. /etc/rc.d/functions

case "$1" in
    start)
    stat_busy "Creating /dev entries and starting VMware"
    for i in `seq 0 9`; do
        mknod /dev/vmnet$i c 119 $i
        chmod 0600 /dev/vmnet$i
    done
    for i in `seq 0 3`; do
        mknod /dev/parport$i c 99 $i
        chmod 0600 /dev/parport$i
    done
    mknod /dev/vmmon c 10 165
    chmod 0660 /dev/vmmon
    /etc/rc.d/vmware start
    ;;

    stop)
    stat_busy "Stopping VMware and removing /dev entries"
    /etc/rc.d/vmware stop
    rm /dev/vmmon
    for i in `seq 0 3`; do
        rm /dev/parport$i
    done
    for i in `seq 0 9`; do
        rm /dev/vmnet$i
    done
    ;;

    restart)
    $0 stop
    $0 start
    ;;

    *)
    echo "usage: $0 {start|stop|restart}"
esac
exit 0

3. Modify Template:Filename. (*Note - this step is optional! See also the notes under the "Running" section above)

Add Template:Codeline to daemons in your Template:Filename, and remember to remove Template:Codeline from Template:Filename. Or if you prefer, you can delete the lines that launch vmware from Template:Filename and leave your original Template:Codeline in Template:Filename – your choice.


Comments:

hi guys, a couple of quick questions:
- why is /dev/vmmon chmod 0660, as opposed to the rest (0600)?
- i suppose /dev/vmmon should be "rm"-ed as well in the "stop" section for the script above? (that line is missing) - FIXED

Compile Modules Problem

VMware and kernel 2.6.32

To patch VMware modules we have to add #include "compat_sched.h" to some files (the tarring is not needed with vmware 7.x.x).

# 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 ready script http://communities.vmware.com/thread/239221

VMware and kernel 2.6.31

Patch files are at http://communities.vmware.com/message/1305526#1305526

If you have installed previous patches:

# cd /usr/lib/vmware/modules/
# rm -rf source
# mv source-backup source

Next, we need to run downloaded sh file and rebuild kernel modules...

# wget "http://communities.vmware.com/servlet/JiveServlet/download/1305526-25349/vmware-6.5.2-modules-2.6.31-fix.patch"
# wget "http://communities.vmware.com/servlet/JiveServlet/download/1305526-25348/vmware-6.5.2-modules-2.6.31-fix.sh"
# chmod +x vmware-6.5.2-modules-2.6.31-fix.sh
# ./vmware-6.5.2-modules-2.6.31-fix.sh
# vmware-modconfig --console --install-all

VMware and kernel 2.6.30

In Kernel 2.6.30 the modules fail to compile out of the box again. I followed these instructions over here

Download this script and this patch:

# cd /tmp
# wget http://communities.vmware.com/servlet/JiveServlet/download/1314835-25722/vmware-6.5.2-newkernmods.sh
# wget http://communities.vmware.com/servlet/JiveServlet/download/1314438-25709/vmware-6.5.2-newkernmods.patch
# chmod +x vmware-6.5.2-newkernmods.sh
# ./vmware-6.5.2-newkernmods.sh

This will unpack, patch and repack the module sources. Afterwards one can manually trigger to build the modules or just start VMware, which will also build the modules when trying to start a vm.

VMware and kernel 2.6.29

In Kernel 2.6.29 some internal data-structs were changed. Download this patch and apply it to the vmware modules sources as follows:

# cd /usr/lib/vmware/modules/source/
# mkdir orig
# cp *.tar orig/
# for i in *.tar; do tar -xf $i; done
# rm *.tar
# patch -p1 -i /path/to/vmware-workstation-6.5.1.126130-2.6.29_x86_64.patch
# for i in mblock mci mmon mnet mppuser sock; do tar -cf v$i.tar v$i-only; done
# rm -r *-only
Note: Modify /path/to/vmware-workstation-6.5.1.126130-2.6.29_x86_64.patch to match the path to the downloaded patch.
Note: If you're using Workstation 6.5.2, see this thread for the equivalent patch, and a script for applying it.

Afterwards, build the modules manually or just start vmware, as it will start building the modules for you automatically (using the patched sources). For further information read this thread.

VMware and kernel 2.6.28

A tested solution is to fetch the patched modules and replace them. To achieve this, you will need to extract the downloaded archive, and replace both vmmon.tar and vmnet.tar to /usr/lib/vmware/modules/source. After that, run /usr/bin/vmware-config.pl to rebuild the modules.

VMware and kernel 2.6.26

If after compiling the modules following the method for 2.6.25 you receive the "Version mismatch with vmmon module:" error when powering on a virtual machine you will need to take one additional step.

$ cd /usr/lib/vmware/moduels/source/;
$ sudo tar -xvf vmmon.tar;
$ sudo vi vmmon-only/include/iocontrols.h;

Find the line 48:

#define VMMON_VERSION           (161 << 16 | 0)

and change it to:

#define VMMON_VERSION           (167 << 16 | 0)

Save and exit.

$ sudo tar -cf vmmon.tar vmmon-only;

Finally, run vmware-config.pl.

Slow networking between host and guest

"Those oversized improperly checksummed packets are TCP Segmentation Offload packets. Use 'ethtool -K eth0 tso off' to disable TSO on eth0 (or any other interface which you want to get bridged). At this moment vmnet does not understand TSO, and in addition to that it is silly to use TSO together with bridged networking as vmnet will have to split such packet anyway to pass it to the guest, so splitting will be done anyway, and in addition to it kernel will have to prepare metadata about TCP stream for hardware, so you'll probably get worse performance with TSO enabled than with disabled when you'll have some guest running."

Note: ethtool is in extra packages.

Samba issues

The guest os under vmware cannot see a samba share running on the linux host. To fix this problem, edit Template:Filename and make some changes under [global]. The following are suggested:

workgroup = YOUR_WORKGROUP
netbios name = YOUR_SERVER_NAME
encrypt passwords = yes
socket options = TCP_NODELAY IPTOS_LOWDELAY SO_KEEPALIVE SO_RCVBUF=8192 SO_SNDBUF=8192
interfaces = eth0 vmnet1 vmnet8
sysv shm key=/dev/vmnet1
bind interfaces only = true

Connecting Remotely

If you setup a server that you would like to connect to remotely, please add the following to Template:Filename:

vmware-authd: ALL

This will enable xinetd to allow connections from a remote vmware client.

If this condition is not met, you may see in your Template:Filename:

Feb  4 03:34:12 jeffc xinetd[7232]: libwrap refused connection to vmware-authd (libwrap=vmware-authd) from 192.168.1.1

Keycode issues

  1. VMware console may mess up your keyboard mapping after VMware tools is installed, effectively making the host desktop unusable until you restart X.
  2. If you have Windows guests, some/most keycodes might not be working within the guest (especially arrow-keys, ctrl, alt, windows-key, etc.).


First solution, by forcing VMware to map keysyms instead of keycodes: Edit or create the file Template:Filename and add the following option:

xkeymap.usekeycodeMap = true

If the first solution still fails to bind certain keys, try the second solution: Edit or create the file Template:Filename and add the following keycode-mappings:

xkeymap.keycode.108 = 0x138 # Alt_R
xkeymap.keycode.106 = 0x135 # KP_Divide
xkeymap.keycode.104 = 0x11c # KP_Enter
xkeymap.keycode.111 = 0x148 # Up
xkeymap.keycode.116 = 0x150 # Down
xkeymap.keycode.113 = 0x14b # Left
xkeymap.keycode.114 = 0x14d # Right
xkeymap.keycode.105 = 0x11d # Control_R
xkeymap.keycode.118 = 0x152 # Insert
xkeymap.keycode.119 = 0x153 # Delete
xkeymap.keycode.110 = 0x147 # Home
xkeymap.keycode.115 = 0x14f # End
xkeymap.keycode.112 = 0x149 # Prior
xkeymap.keycode.117 = 0x151 # Next
xkeymap.keycode.78 = 0x46 # Scroll_Lock
xkeymap.keycode.127 = 0x100 # Pause
xkeymap.keycode.133 = 0x15b # Meta_L
xkeymap.keycode.134 = 0x15c # Meta_R
xkeymap.keycode.135 = 0x15d # Menu

VMware 6.5 Fails to launch vmware-modconfig

If vmware-modconfig crash at the first start, download and run this http://communities.vmware.com/servlet/JiveServlet/download/1088282-15379/vmware-build-modules See more here http://communities.vmware.com/thread/172023

The above script will fail to compile vsock.so. To fix get vmware to work without it just run (as root):

# depmod -a;
# /etc/rc.d/vmware restart