I tried getting ESXi running together with unraid 5 but was unsuccessful (transfer speeds were atrocious) so I thought I'd have a go at getting VMWare server running. Fortunately I was successful
First of all, these instructions are not good enough to be blindly followed, but anyone who is somewhat familiar with the existing process should be able to figure this out. I would recommend re-reading every command you run to make sure it's correct for unraid 5.
I got this working on unraid 5.0-rc5 but the basic idea should be the same for any version.
Steps
0. Setup an unraid development environment. Note that this can be done on your running unraid system by following Installing the kernel source and making your own headers. I did all this on my main unraid machine.
1. After building kernel headers, we need to move some files to where the VMWare installer expects them to be
cp /usr/src/linux/include/generated/* /usr/src/linux/include/linux
and
touch /usr/src/linux/include/linux/smp_lock.h
2. Create the init directories that VMWare expects
cd /etc/rc.d
mkdir init.d
for i in {0,1,2,3,4,5,6}; do mkdir rc$i.d; done
3. Follow steps 1-3 in the existing instructions. Get the latest version of VMWare server (2.0.2-203138.i386)
4. Download the ubuntu flavour of the VMWare server patch here: http://llg.cubic.org/patches/vmwareserver/
5. Unzip the patch downloaded in step 4 to an empty directory
6. Copy the VMWare server package to the directory containing the patch
7. Edit the patch script (vmware-server-2.0.2-kernel-3.0-install.sh) in notepad++ or similar. Change the following
VMWARE_ARCHIVE=`ls "$VMWARE_HOME" 2> /dev/null | egrep "^(VMware-server-2.0.[0-9]-)[0-9]*.[A-Za-z0-9_]*.tar.gz"`
to
VMWARE_ARCHIVE=`ls "$VMWARE_HOME" 2> /dev/null | egrep "(VMware-server-2.0.[0-9]-)[0-9]*.[A-Za-z0-9_]*.gz"`
and delete the following block (we don't need to test compilation and it will fail anyway on unraid)
for BASE in $BASES
do
# Skip checking vmppuser and vsock modules (they don't compile and are not
# critical)
if [[ "vmppuser" != "$BASE" && "vsock" != "$BASE" ]]; then
MODDIR="${BASE}-only"
echo "Trying to compile $BASE module to see if it works"
echo "Performing make in $MODULES_SOURCE/$MODDIR"
make -s -C "$MODULES_SOURCE/$MODDIR"
RESULT=$?
if [ "0" != "$RESULT" ]; then
echo "There is a problem compiling the $BASE module after it was patched. "
exit 1
fi
fi
done
8. Run the patch script from the directory you unzipped it to without any arguments
vmware-server-2.0.2-kernel-3.0-install.sh
9. After applying the patch it will automatically kick off the VMWare server install process. Continue following the existing process from step 5. Watch out for the following however:
- Do not create the package directories in the root dir (eg. /pkgONETIME) if you are doing this on your unraid server. They must be created on a disk. I created mine in /mnt/cache/.custom/pkgONETIME.
- As with the above, your cache drive may not be empty so when creating the package tree for the ONETIME install, use the following
mkdir -p /mnt/cache/.custom/pkgONETIME/mnt/cache/.custom/vmware
cd /mnt/cache/.custom/pkgONETIME
cp -a /mnt/cache/.custom/vmware mnt/cache/.custom/vmware
- I could not access the VMWare web interface on either FF or Chrome, I would either get no login box or some obscure error pop up. But oddly enough, IE8 worked perfectly
- If you did this on your running unraid server, you won't actually need to install the ONETIME package. Hang on to it in case you need to reinstall though.