vnet

posted 11 years ago by Ben Cordero

Hey future me! I know it's not that often that you require it, but there are a lot of virtualization solutions out there that use qemu as a backend machine translator.

It isn't the most optimal vm environment when used on it's own, but it provides some useful features that other projects build upon.

There's KVM, Xen-HVM and when you need it in a pinch, raw qemu itself. But there's something that you've never gotten right. Not without external tools and graphical managers. Networking.

So, here's a quick reference.

startvm.sh

#!/bin/sh
BRIDGE=$(/sbin/ip route list | awk '/^default / { sub(/.* dev /, ""); print $1}')
TAP=$(sudo tunctl -b -u $USER)
sudo ifconfig $TAP promisc up
sudo brctl addif $BRIDGE $TAP`

qemu-system-x86_64 \
    -hda \
    -cdrom -boot 'dc' \
    -m 1024 \
    -net nic -net tap,ifname=${TAP},script=no,downscript=no

# Dissappearing network interfaces will be removed from the bridge automatically.
sudo tunctl -d $TAP

The requirement are that you use modern networking, iproute2, bridge-utils and usermode-utilities (for tunctl). Also, it's a good idea to attach the eth0/eth1 interfaces to a bridge. There's no need for external scripts that are stored in distro specific locations, and if bridged networking is used anyway, there's no extra legwork outside this script.

/etc/conf.d/net

bridge_br0="eth1"
config_eth0="null"
config_eth1="null"
rc_need_br0="net.eth1"`
config_br0="dhcp"

Recent Posts

Feeds

Atom / RSS