--- /dev/null
+package kvm;
+
+use warnings;
+use strict;
+use autodie;
+
+use File::Slurp;
+
+use server;
+
+my $interfaces = read_file '/etc/network/interfaces';
+
+if ( $interfaces !~ m{tap0.*$server::ip}s ) {
+
+ system "sudo apt-get install vde2";
+
+ $interfaces .= qq{
+
+iface tap0 inet static
+ address $server::ip
+ netmask $server::netmask
+ vde2-switch -
+
+ };
+
+ write_file '/etc/network/interfaces', $interfaces;
+
+}
+
+if ( grep /tap0/, read_file '/proc/net/dev' ) {
+ warn "tap0 started";
+} else {
+ system "sudo ifup tap0";
+}
+
+our $memory_size = 512;
+our $mac = '52:54:00:00:00:01';
+
+sub start {
+
+ my $kvm = qq|
+ vdeq kvm -m $memory_size -net nic,vlan=1,macaddr=$mac
+ -net vde,vlan=1,sock=/var/run/vde2/tap0.ctl
+ -boot n
+ |;
+ $kvm =~ s{\s+}{ }gs;
+ warn $kvm;
+ system $kvm;
+
+}
+
+warn 'loaded';
+
+1;