Many people collect things as a hobby. I collect computers. Over the years, as my collection grew, my living room began to look like a data center. As soon as VMware Server became freely (as in beer) available I knew I had to migrate my servers and development boxes to virtual machines (VM). The problem is that most of my servers run OpenBSD, which is not officially supported by VMware. Out of the box, VMware can't properly shut down OpenBSD VMs; it just powers VMs off, causing data corruption. With a little bit of hacking, I managed to eliminate this issue. Here's how you can install OpenBSD as a guest OS under VMware Server, and possibly other VMware products.
VMware Server supports FreeBSD as a guest OS and offers vmware-tools built for it. You can fool VMware Server into thinking that an OpenBSD VM is FreeBSD, and use OpenBSD's FreeBSD emulation to run vmware-tools.
Select Install VMware Tools... on the VM menu; this creates a virtual CD-ROM image which is accessible from the VM and includes a tarball with vmware-tools for FreeBSD. From that tarball we need to install the vmware-guestd daemon, which triggers events sent for the host computer and runs commands accordingly -- such as halt and reboot -- on the guest OS. So, run the following commands to mount that image and install the daemon and its configuration:
mount /dev/cd0c /mnt
tar -zxvpf /mnt/vmware-freebsd-tools.tar.gz -C /tmp
mkdir -p /emul/freebsd/sbin
install -m 555 -o root -g wheel /tmp/vmware-tools-distrib/lib/sbin32/vmware-guestd /emul/freebsd/sbin
cp -r /tmp/vmware-tools-distrib/etc /etc/vmware-tools
rm -rf /tmp/vmware-tools-distrib
umount /mnt
Start the daemon with /emul/freebsd/sbin/vmware-guestd --background /var/run/vmware-guestd.pid --halt-command "/sbin/shutdown -p -h now". To have it started on boot add the following lines to your /etc/rc.local file just before the echo '.' line:
if [ -x /emul/freebsd/sbin/vmware-guestd ]; then
echo -n ' vmware-tools'
/emul/freebsd/sbin/vmware-guestd --background /var/run/vmware-guestd.pid \
--halt-command "/sbin/shutdown -p -h now"
fi
Now you can shut down the VM and check its status from the VMware Web-based management interface or console and have it halt and power off properly.