VirtualBox: added support for "virtio" ISO interface.

This commit is contained in:
Thomas Dreibholz 2021-02-14 23:43:48 +01:00
parent f48d7e3990
commit 591b1c2637
3 changed files with 24 additions and 7 deletions

View File

@ -80,6 +80,10 @@ func (s *StepAttachISOs) Run(ctx context.Context, state multistep.StateBag) mult
controllerName = "SATA Controller"
port = "1"
device = "0"
} else if s.ISOInterface == "virtio" {
controllerName = "VirtIO Controller"
port = "1"
device = "0"
}
ui.Message("Mounting boot ISO...")
case "guest_additions":
@ -90,6 +94,10 @@ func (s *StepAttachISOs) Run(ctx context.Context, state multistep.StateBag) mult
controllerName = "SATA Controller"
port = "2"
device = "0"
} else if s.GuestAdditionsInterface == "virtio" {
controllerName = "VirtIO Controller"
port = "2"
device = "0"
}
ui.Message("Mounting guest additions ISO...")
case "cd_files":
@ -100,7 +108,11 @@ func (s *StepAttachISOs) Run(ctx context.Context, state multistep.StateBag) mult
controllerName = "SATA Controller"
port = "3"
device = "0"
}
} else if s.ISOInterface == "virtio" {
controllerName = "VirtIO Controller"
port = "3"
device = "0"
}
ui.Message("Mounting cd_files ISO...")
}

View File

@ -211,9 +211,9 @@ func (b *Builder) Prepare(raws ...interface{}) ([]string, []string, error) {
errs, errors.New("nvme_port_count cannot be greater than 255"))
}
if b.config.ISOInterface != "ide" && b.config.ISOInterface != "sata" {
if b.config.ISOInterface != "ide" && b.config.ISOInterface != "sata" && b.config.ISOInterface != "virtio" {
errs = packersdk.MultiErrorAppend(
errs, errors.New("iso_interface can only be ide or sata"))
errs, errors.New("iso_interface can only be ide, sata or virtio"))
}
// Warnings

View File

@ -66,15 +66,20 @@ func (s *stepCreateDisk) Run(ctx context.Context, state multistep.StateBag) mult
}
}
if config.HardDriveInterface == "scsi" {
if err := driver.CreateSCSIController(vmName, "SCSI Controller"); err != nil {
// Add a VirtIO controller if we were asked to use VirtIO. We still attach
// the VirtIO controller above because some other things (disks) require
// that.
if config.HardDriveInterface == "virtio" || config.ISOInterface == "virtio" {
if err := driver.CreateVirtIOController(vmName, "VirtIO Controller"); err != nil {
err := fmt.Errorf("Error creating disk controller: %s", err)
state.Put("error", err)
ui.Error(err.Error())
return multistep.ActionHalt
}
} else if config.HardDriveInterface == "virtio" {
if err := driver.CreateVirtIOController(vmName, "VirtIO Controller"); err != nil {
}
if config.HardDriveInterface == "scsi" {
if err := driver.CreateSCSIController(vmName, "SCSI Controller"); err != nil {
err := fmt.Errorf("Error creating disk controller: %s", err)
state.Put("error", err)
ui.Error(err.Error())