FreeBSD as KVM guest

FreeBSD is a great O/S in itself but let's just run it as a KVM hypervised instance for testing purposes as described in the following quick introduction. 1. Base Install At first, we create an image by e.g.
qemu-img create -f raw NWS3-FBSD10 64G
Using VMM, the VM can be setup easily, choosing linux/wheezy as O/S will activate virtio drivers, which is quite important. For performance reasons, the VM should be set to use 4GB of RAM (also to enable zfs preloading) and 4 CPU cores. FreeBSD will be installed onto the vtblk device, and it will use vtnet as  10Gb ethernet adapter. Benchmarking via iperf shows that it comes quite close to the max:
[ ID] Interval Transfer Bandwidth
[ 3] 0.0-10.0 sec 9.68 GBytes 8.32 Gbits/sec

2. S/W Installation

After having installed the O/S, a couple of tweaks have to be made to be able to really run and use the KVM guest. First, I always want my tmux, so I build it via:
cd /usr/ports/sysutils/tmux; setenv BATCH yes; time make install
Installing other S/W from binary packages is as simple as e.g.
pkg install pidgin-otr firefox xorg nmap ettercap trafshow ngrep

3. Building a VESA Kernel for Xorg

The window manager shall startup after reboot, and we still need a VESA kernel for that, so we edit /etc/rc.conf and add:
gdm_enable="YES"
gnome_enable="YES"
allscreens_flags="MODE_280"
Now its time to build a new kernel w/ VESA enabled:
cd /usr/src/sys/amd64/conf
cp GENERIC VESAKERN
Edit VESAKERN and add:
options VESA
options SC_PIXEL_MODE
Then build and install the kernel:
cd /usr/src
time make buildkernel KERNCONF=VESAKERN
time make installkernel KERNCONF=VESAKERN
Gnome needs procfs, so we add the following line to /etc/fstab:
proc /proc procfs rw 0 0

4. Further Tweaks

Now, it is time to halt the VM, and do a backup if you wish so. I recommend using qemu-img convert (64GB => 8GB) and gpg (8GB > 4.5GB) to accomplish that. To make the mouse work, it is essential to do the following in VMM: Add USB Mouse,Remove Tablet, Set VMVGA Graphics Done! Overall time should be ~ 1hr

Comments

Comments powered by Disqus