diff --git a/builder/virtualbox/builder.go b/builder/virtualbox/builder.go
index 09ed1a8fb21b73d7e5cb128c95aff55fb7178163..b53e4bb736409648da4c00bce1e1397e09010c3a 100644
--- a/builder/virtualbox/builder.go
+++ b/builder/virtualbox/builder.go
@@ -18,6 +18,7 @@ type Builder struct {
 }
 
 type config struct {
+	GuestOSType string `mapstructure:"guest_os_type"`
 	OutputDir string `mapstructure:"output_directory"`
 }
 
@@ -27,6 +28,10 @@ func (b *Builder) Prepare(raw interface{}) error {
 		return err
 	}
 
+	if b.config.GuestOSType == "" {
+		b.config.GuestOSType = "Other"
+	}
+
 	if b.config.OutputDir == "" {
 		b.config.OutputDir = "virtualbox"
 	}
diff --git a/builder/virtualbox/builder_test.go b/builder/virtualbox/builder_test.go
index fe102130d44c65e756cab4c3731fbe870a5ccb92..904e8f8475d1230777e4b98ad16bf80f459f919d 100644
--- a/builder/virtualbox/builder_test.go
+++ b/builder/virtualbox/builder_test.go
@@ -16,3 +16,20 @@ func TestBuilder_ImplementsBuilder(t *testing.T) {
 		t.Error("Builder must implement builder.")
 	}
 }
+
+func TestBuilderPrepare_Defaults(t *testing.T) {
+	var b Builder
+	config := testConfig()
+	err := b.Prepare(config)
+	if err != nil {
+		t.Fatalf("should not have error: %s", err)
+	}
+
+	if b.config.GuestOSType != "Other" {
+		t.Errorf("bad guest OS type: %s", b.config.GuestOSType)
+	}
+
+	if b.config.OutputDir != "virtualbox" {
+		t.Errorf("bad output dir: %s", b.config.OutputDir)
+	}
+}