diff --git a/image_creator/os_type/windows.py b/image_creator/os_type/windows.py index 5d56a0561f11a558f8a2f599b53a3574cae0f0e4..690a5695dc521eaba4f16492c10a81a49f52335d 100644 --- a/image_creator/os_type/windows.py +++ b/image_creator/os_type/windows.py @@ -768,18 +768,21 @@ class _VM(object): # Use ganeti's VNC port range for a random vnc port self.display = random.randint(11000, 14999) - 5900 - kvm = get_kvm_binary() + kvm, needed_args = get_kvm_binary() if kvm is None: FatalError("Can't find the kvm binary") - args = [ - kvm, '-smp', '1', '-m', '1024', '-drive', + args = [kvm] + args.extend(needed_args) + + args.extend([ + '-smp', '1', '-m', '1024', '-drive', 'file=%s,format=raw,cache=unsafe,if=virtio' % self.disk, '-netdev', 'type=user,hostfwd=tcp::445-:445,id=netdev0', '-device', 'virtio-net-pci,mac=%s,netdev=netdev0' % random_mac(), '-vnc', ':%d' % self.display, '-serial', 'file:%s' % self.serial, - '-monitor', 'stdio'] + '-monitor', 'stdio']) self.process = subprocess.Popen(args, stdin=subprocess.PIPE, stdout=subprocess.PIPE) diff --git a/image_creator/util.py b/image_creator/util.py index fcf5dd526fa9683c420b02f92439d319f6e215c3..e5fab4166797b63de8339a1cb6e009eb997ceb5b 100644 --- a/image_creator/util.py +++ b/image_creator/util.py @@ -65,21 +65,23 @@ def get_command(command): def get_kvm_binary(): - """Returns the path to the kvm binary""" + """Returns the path to the kvm binary and some extra arguments if needed""" uname = get_command('uname') which = get_command('which') - machine = str(uname('-m')) + machine = str(uname('-m')).strip() if re.match('i[3-6]86', machine): machine = 'i386' binary = which('qemu-system-%s' % machine) + needed_args = "--enable-kvm", + if binary is None: - return which('kvm') + return which('kvm'), tuple() - return binary + return binary, needed_args def try_fail_repeat(command, *args):