Installing VMware Server on Arch64
Installing VMware Server on an Arch64 System
This document will cover how to get (*as well as upgrade, if you've followed this same set of instructions previously) VMware Server (as of initial writing of this document, Version "1.0.1 | 8/14/06 | Build 29996", but will also cover version "1.0.2 | 2/28/07 | Build 39867") up and running on your Arch64 system, using an Arch32 chroot method (*I assume, for the sake of this document, that your chroot will be in '/32root'). A multi-lib approach will not be covered here (feel free to come up with your own method, and then write the wiki document).
"Prerequisites", or Preparation
1. Get your Arch32 chroot set up (you can refer to Arch64_Install_bundled_32bit_system for some help).
3. Now go to this vmware.com page to "view" their EULA, "skip-scroll" all the way to the end... and just go ahead and click "Yes", you mindless nut. Now scroll down to the "(for Linux systems)" section, and download the tar.gz version!!! (RPMs 'R Not Us) (*TIP - if you're expecting to use VMware Server the way you've seen/used Workstation, then all you need is the main server itself - no need for the 'Management Interface', or the client package ('VMware Server Console', + APIs); the 'VMware Server Console' is already included in the Server package)
4. Wait for the VMware Server tarball to download... wait.... (101M) Say a silent prayer for Bill Gates, and his Virtual PC drones while you're still there.
Preparing the 'vmmon', and 'vmnet' modules for our running 64-bit kernel
1. Unpack the VMware Server tarball you just downloaded (*in your /32root/ chroot directory, pls....). (This will unzip into a 'vmware-server-distrib' directory)
tar zxvf VMware-server-1.0.1-29996.tar.gz
2. Now we go to search for the 'vmmon', and 'vmnet' module sources, and unpack those.
cd vmware-server-distrib/lib/modules/source tar xvf vmmon.tar tar xvf vmnet.tar
*Note (jf: not verified by me so I can't vouch for this): Using vmware server 1.0.1-29996 on linux 2.6.19 requires the following additional steps at this point:
touch /usr/src/linux-`uname -r`/include/linux/config.h sed -i 's/CHECKSUM_HW/CHECKSUM_PARTIAL/' vmnet-only/bridge.c sed -i 's/CHECKSUM_HW/CHECKSUM_PARTIAL/' vmnet-only/userif.c
3. Now we 'make'
make -C vmmon-only auto-build HEADER_DIR=/usr/src/linux-`uname -r`/include CC=gcc SUPPORT_SMP=1 GREP=grep IS_GCC_3=no make -C vmnet-only auto-build HEADER_DIR=/usr/src/linux-`uname -r`/include CC=gcc SUPPORT_SMP=1 GREP=grep IS_GCC_3=no
*Note that I assume here that your current 64-bit kernel (your kernel is still 64-bit, even in the 32-bit chroot) will have SMP support (*you should be able to see this from `uname -v`). If not, just simply use 'SUPPORT_SMP=0' instead of 'SUPPORT_SMP=1'.
***SPECIAL UPGRADING SHORTCUT NOTE! - if you have been following so far, and are upgrading from VMWare Server 1.0.1 to 1.0.2 (instead of doing a fresh install), well congratulations! You can skip the rest of the stuff below (since we've already done that during the last install), and be done with just the following...
mkdir -p /lib/modules/`uname -r`/misc cp *.o /lib/modules/`uname -r`/misc
(Other assumptions - (good to know, but which you won't have to worry about if you're running a "standard" Arch) - your kernel headers are installed in '/usr/src/linux-`uname -r`/include', your 'gcc' is in your path (if not, point 'CC' directly to it like as in 'CC=/usr/bin/gcc'), and you're not using gcc version 3 (see 'gcc --version')).
4. Now that the modules have been compiled, we resort to some sort of "trickery" in order to get the vmware install process (actually, the 'vmware-config.pl' script) to think that the modules have been pre-built already, and not prompt us to compile them again (we can't) during the install. (*This is necessary as we will be installing the vmware binaries in the 32-bit chroot - while needing to compile them in/for the 64-bit environment)
cd /32root/vmware-server-distrib/lib/modules/binary # (*or 'cd ../binary') mkdir -p `uname -r`/objects cd `uname -r` echo UtsRelease `uname -r` > properties echo SMP yes >> properties # (-> only these 2 lines are necessary - the rest are not) cp /32root/vmware-server-distrib/lib/modules/source/vmmon.o objects cp /32root/vmware-server-distrib/lib/modules/source/vmnet.o objects # (*or 'cp ../../source/*.o objects')
5. Now we're all set to do the actual install of the VMware Server!!!
Installing VMware Server into our 32root
1. 'chroot' into your chroot
2. Some preliminaries for the script before we begin our actual install....
cd /etc for i in `seq 0 6`; do ln -s rc.d rc$i.d; done ln -s /bin/lsmod /sbin/lsmod mkdir /lib/modules/`uname -r` pacman -S libxtst libxt libxrender libxi # (*note these are the absolute essential libraries (where X is concerned) which we cannot do without) pacman -S xinetd
(*Take note that we only install 'xinetd' to satisfy the installation requirements(/script) - we won't be using the installed 'vmware-authd' xinetd service at all if all we're going to be doing is only running and controlling the VMs from the local machine! We'll disable this service later on.)
3. Now run the actual install
cd vmware-server-distrib ./vmware-install.pl
*NOTE that for the third question
What is the directory that contains the init scripts? [/etc]
you should specify '/etc/rc.d'. There is only one other question for which you might like to specify something other than the default, but this comes much later... (see below) But for the rest of the questions, you can pretty much accept the default - unless you want to change something.
In which directory do you want to keep your virtual machine files? [/var/lib/vmware/Virtual Machines]
For this, you might like to specify something like '/home/Virtual Machines' (don't worry, spaces in the name are ok), so that you can get access to/manipulate your virtual machines files from both inside, and outside the chroot.
Continue on with the rest of the installation until the end.
4. That's it!!! We're all set to run and play with our VMs now. :))
Miscellaneous, / "Notes"
- you might want to "clean up a bit" after the installation in order to make things "neater",/"simpler",/"easier to handle", and to make things more Arch-like. Consider, for example, deleting the useless S*vmware, and K*vmware symlinks in /etc/rc.d. And consider editting the /etc/rc.d/vmware script too, to touch '/var/run/daemons' instead of '/var/lock/subsys'.
- the "containing directory" for your Virtual Machine directories (*if you followed the recommendation, '/home/Virtual Machines') is (as per the installation process) set to chmod 1777. For security's sake, if you want to prevent others from taking a look at your VM directories, consider doing a 'chmod' of this containing directory to something else more secure.
- as mentioned, if you're only going to be using one machine (as both "client", and "host",/"server") for running, and controlling VMware Server, then there is no need for the 'vmware-authd' xinetd service which will be installed by the installation script. You can simply disable it by either stopping xinetd outright.... or by removing the 'vmware-authd' file in /etc/xinetd.d, and then restarting xinetd. This is for your security as well.
- (see previous point as well) since it appears that the xinetd service will not be used, I can only conclude that (after taking a look at 'netstat') a socket will be used instead for internal communication between "client" and "host" when both are on the same machine. One might conclude then, that in order to save on the processing requirements, as well as the time for communication, one would do well to disable the SSL requirement for communication with the host (start vmware in the chroot as root, and click on Host -> Settings -> 'Connection' tab). Perhaps somebody more familiar with the workings of VMware Server might be able to comment on this???
- (an observation) - it appears, that despite whatever "missing libraries" we may have from VMware Server's dependencies (see 'ldd /usr/lib/vmware/bin/vmware' within the chroot), that we will still be able to run just fine?!!! (the binary will just be set up to use the replacement libraries from /usr/lib/vmware/lib) I just wonder, though, if we will experience any slowdowns from using these replacements????
- (last note): to uninstall VMware Server from your system, run '/usr/bin/vmware-uninstall.pl' within the chroot.
- Question: Installing_VMware (the old guide I used to install VMware Workstation) mentions a problem of 'slow networking between host and guest' - is this problem still relevant to VMware Server???? somebody pls comment.
- Further improvements to this document, or to this knowledge base: I haven't done anything about the VMware Tools yet. Anybody want to do up this document?