Just thought I’d share the incantations which were necessary to get FreeBSD 8.1 XENHVM kernel to work well on Flexiant, with paravirtualised network and disk:
Just before the kernel boots (which you have to be quick to catch with Flexiant’s VNC client) hit F6 on the bootloader and type:
set hw.clflush_disable=1 boot
This will allow you to boot even a GENERIC kernel. Once you’re booted, chuck hw.clflush_disable="1" into /boot/loader.conf to make this permanent.
You’ll then want to build your own kernel for paravirtualised network and disk drivers. Edit the XENHVM kernel config (see the FreeBSD handbook on compiling your own kernel) – comment out the MODULES_OVERRIDE line which disables building all the modules (assuming you want ZFS support) and also comment out the whole section about WITNESS and INVARIANT, as having this enabled will slow down your kernel quite significantly.
Then you’ll need to patch the network driver as per this post (manually, since the code has changed a bit), else you get a lot of dropped packets:
http://www.mail-archive.com/freebsd-xen@freebsd.org/msg00598.html
Then just (as root):
cd /usr/src make buildkernel KERNCONF=XENHVM make installkernel KERNCONF=XENHVM shutdown -r now
And enjoy your speedy FreeBSD 8.1 VM in the cloud!
Oh and check out our cloud web hosting platform, Hybrid Web Cluster which takes advantage of this
