diff --git a/builder/qemu/builder.go b/builder/qemu/builder.go index cc2438423..bdbabcaf6 100644 --- a/builder/qemu/builder.go +++ b/builder/qemu/builder.go @@ -55,6 +55,7 @@ type config struct { common.PackerConfig `mapstructure:",squash"` Accelerator string `mapstructure:"accelerator"` + QemuBinary string `mapstructure:"qemu_binary"` BootCommand []string `mapstructure:"boot_command"` DiskInterface string `mapstructure:"disk_interface"` DiskSize uint `mapstructure:"disk_size"` @@ -110,6 +111,10 @@ func (b *Builder) Prepare(raws ...interface{}) ([]string, error) { // Accumulate any errors errs := common.CheckUnusedConfig(md) + if b.config.QemuBinary == "" { + b.config.QemuBinary = "qemu-system-x86_64" + } + if b.config.DiskSize == 0 { b.config.DiskSize = 40000 } @@ -372,7 +377,7 @@ func (b *Builder) Prepare(raws ...interface{}) ([]string, error) { func (b *Builder) Run(ui packer.Ui, hook packer.Hook, cache packer.Cache) (packer.Artifact, error) { // Create the driver that we'll use to communicate with Qemu - driver, err := b.newDriver() + driver, err := b.newDriver(b.config.QemuBinary) if err != nil { return nil, fmt.Errorf("Failed creating Qemu driver: %s", err) } @@ -471,8 +476,8 @@ func (b *Builder) Cancel() { } } -func (b *Builder) newDriver() (Driver, error) { - qemuPath, err := exec.LookPath("qemu-system-x86_64") +func (b *Builder) newDriver(qemuBinary string) (Driver, error) { + qemuPath, err := exec.LookPath(qemuBinary) if err != nil { return nil, err } diff --git a/website/source/docs/builders/qemu.html.markdown b/website/source/docs/builders/qemu.html.markdown index cecb8c179..91fdc11b1 100644 --- a/website/source/docs/builders/qemu.html.markdown +++ b/website/source/docs/builders/qemu.html.markdown @@ -192,6 +192,11 @@ Optional: qemu-system-x86 -m 1024m --no-acpi -netdev user,id=mynet0,hostfwd=hostip:hostport-guestip:guestport -device virtio-net,netdev=mynet0" +* `qemu_binary` (string) - The name of the Qemu binary to look for. This + defaults to "qemu-system-x86_64", but may need to be changed for some + platforms. For example "qemu-kvm", or "qemu-system-i386" may be a better + choice for some systems. + * `output_directory` (string) - This is the path to the directory where the resulting virtual machine will be created. This may be relative or absolute. If relative, the path is relative to the working directory when `packer`