diff --git a/util/vm/build.py b/util/vm/build.py
index eb0206cc25f48aaaaee49bf90956a9e8796342ac..eca4096ce9f07a04600078837d0df8062c969772 100755
--- a/util/vm/build.py
+++ b/util/vm/build.py
@@ -441,7 +441,12 @@ def boot( cow, kernel, initrd, logfile, memory=1024 ):
        returns: pexpect object to qemu process"""
     # pexpect might not be installed until after depend() is called
     global pexpect
-    import pexpect
+    if not pexpect:
+        import pexpect
+    class Spawn( pexpect.spawn ):
+        "Subprocess is sudo, so we have to sudo kill it"
+        def close( self, force=False ):
+            srun( 'kill %d' % self.pid )
     arch = archFor( kernel )
     log( '* Detected kernel architecture', arch )
     if NoKVM:
@@ -462,7 +467,7 @@ def boot( cow, kernel, initrd, logfile, memory=1024 ):
     cmd = ' '.join( cmd )
     log( '* BOOTING VM FROM', cow )
     log( cmd )
-    vm = pexpect.spawn( cmd, timeout=TIMEOUT, logfile=logfile )
+    vm = Spawn( cmd, timeout=TIMEOUT, logfile=logfile )
     return vm