Virtual machines with qemu

Some hints to get a networked (bridging mode) virtual machine with qemu.

Loading the relevant kernel modules at boot time

Put the following options into /boot/loader.conf (note that the accelerator kernel module kqemu is still considered "alpha"):




Setting kernel parameters at boot time

Put the following lines into your /etc/sysctl.conf (replace xl0 with the interface name on your machine):


sysctl net.link.ether.bridge.config=xl0,tap0

Example: Booting a FreeBSD ISO

Assuming you have created a directory which houses the ISO image, bios.bin, vgabios.bin and vgabios-cirrus.bin, you might want to create a script called "boot.sh" which looks something like this:


qemu -boot c -m 128 -localtime -net nic -net tap,script=qemu-ifup -L . -cdrom FreeBSD.iso

The script qemu-ifup script should look something like this:


ifconfig $1

Now you can start your virtual machine by simply running boot.sh. Bridging will be done by using /dev/tap0. The virtual machine will come up with a NE2000 compatible network interface. You can assign an IP address to it and have bidirectional networking (i.e. the virtual machine can access the network and vice versa).