diff --git a/ports/run/virtualbox_auto.inc b/ports/run/virtualbox_auto.inc
new file mode 100644
index 0000000000..89f62409a6
--- /dev/null
+++ b/ports/run/virtualbox_auto.inc
@@ -0,0 +1,165 @@
+assert_spec nova
+
+if {[is_qemu_available]} {
+ puts "\nScript running on Qemu is not supported.\n"
+ exit
+}
+
+set build_components {
+ core init virtualbox
+ server/part_blk
+ server/rump_fs
+ drivers/ahci
+ drivers/input
+ drivers/framebuffer
+ drivers/timer
+}
+
+lappend_if [have_spec acpi] build_components drivers/acpi
+lappend_if [have_spec pci] build_components drivers/pci
+
+build $build_components
+
+create_boot_directory
+
+set config {
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+}
+
+append_if [have_spec acpi] config {
+
+
+
+
+
+
+
+
+
+
+
+ }
+
+append_if [expr ![have_spec acpi] && [have_spec pci]] config {
+
+
+
+ }
+
+append_if [have_spec ps2] config {
+
+
+
+ }
+
+append_if [have_spec framebuffer] config {
+
+
+
+
+ }
+
+append config $config_of_app
+
+append config {
+
+}
+
+install_config $config
+
+set boot_modules {
+ core init timer
+ part_blk ahci
+ ld.lib.so libc.lib.so libc_fs.lib.so
+ rump.lib.so rump_fs.lib.so rump_fs
+ virtualbox vbox-auto-test-helper
+}
+
+#
+# Stuff to generate overlay.vdi if required
+#
+# generate overlay VDI
+#proc vdi { } {
+# global vdi_image
+# return "bin/$vdi_image"
+#}
+#proc overlay_vdi { } { return "bin/overlay.vdi" }
+#proc vdi_size {} {
+# catch {
+# set result [ exec vboxmanage showhdinfo [vdi] | \
+# grep "^Logical" | sed "s/\[^0-9\]\\+//;s/ .*//" ]
+# }
+# return $result
+#}
+#
+#file delete -force [overlay_vdi]
+#if {$use_vdi} {
+# if {![file exists [vdi]]} {
+# puts "VDI image [vdi] missing!"
+# exit -1
+# }
+# catch {
+# exec -ignorestderr vboxmanage createhd --filename [overlay_vdi] --size [vdi_size] --format vdi
+# exec chmod a+r [overlay_vdi]
+# append boot_modules "overlay.vdi"
+# }
+#}
+
+# platform-specific modules
+lappend_if [have_spec ps2] boot_modules ps2_drv
+lappend_if [have_spec acpi] boot_modules acpi_drv
+lappend_if [have_spec pci] boot_modules pci_drv
+lappend_if [have_spec framebuffer] boot_modules fb_drv
+lappend_if [have_spec nova] boot_modules pci_device_pd
+
+build_boot_image $boot_modules
+
+append qemu_args " -m 1512 "
+append qemu_args " -cpu phenom "
diff --git a/ports/run/virtualbox_auto_disk.run b/ports/run/virtualbox_auto_disk.run
new file mode 100644
index 0000000000..94cdff9af2
--- /dev/null
+++ b/ports/run/virtualbox_auto_disk.run
@@ -0,0 +1,54 @@
+set use_vdi 1
+set use_iso 0
+set vdi_image "win7.vdi"
+
+set config_of_app {
+
+
+
+
+
+
+
+}
+
+source ${genode_dir}/ports/run/virtualbox_auto.inc
+
+run_genode_until "vbox_auto_test_helper is done." 20
+exec kill [exp_pid −i $spawn_id]
+
+set config_of_app {
+
+
+
+ }
+
+if {$use_iso} {
+append config_of_app "
+ "
+}
+
+if {$use_vdi} {
+append config_of_app "
+ "
+}
+
+append config_of_app {
+
+
+
+
+
+
+}
+
+source ${genode_dir}/ports/run/virtualbox_auto.inc
+
+
+run_genode_until "ignore resize request to 720x400" 20
+run_genode_until "ignore resize request to 640x480" 15 $spawn_id
+run_genode_until "ignore resize request to 800x600" 25 $spawn_id
+run_genode_until "ignore resize request to 800x600" 60 $spawn_id
+run_genode_until "ignore resize request to 720x400" 10 $spawn_id
+
+puts "\nTest succeeded"
diff --git a/ports/src/virtualbox/autotest/main.cc b/ports/src/virtualbox/autotest/main.cc
new file mode 100644
index 0000000000..41053d293f
--- /dev/null
+++ b/ports/src/virtualbox/autotest/main.cc
@@ -0,0 +1,34 @@
+#include
+#include
+
+#include
+#include
+
+static char buf[256];
+
+int main(int argc, char **argv)
+{
+ using Genode::printf;
+
+ int res = unlink("/ram/overlay.vdi");
+ printf("unlink result %d\n", res);
+
+ int fd_src = open("/ram/overlay-original.vdi", O_RDONLY);
+ int fd_dst = creat("/ram/overlay.vdi", O_CREAT);
+ size_t len, sum = 0;
+
+ printf("fd_src %d fd_dst %d\n", fd_src, fd_dst);
+ if (fd_src < 0 || fd_dst < 0)
+ return 1;
+
+ while ((len = read(fd_src, buf, sizeof(buf))) > 0) {
+ write(fd_dst, buf, len);
+ sum += len;
+ }
+ close(fd_src);
+ close(fd_dst);
+
+ printf("wrote %zu bytes to overlay.vdi - res=%d\n", sum, len);
+ printf("vbox_auto_test_helper is done.\n");
+ return 0;
+}
diff --git a/ports/src/virtualbox/autotest/target.mk b/ports/src/virtualbox/autotest/target.mk
new file mode 100644
index 0000000000..592292e517
--- /dev/null
+++ b/ports/src/virtualbox/autotest/target.mk
@@ -0,0 +1,3 @@
+TARGET = vbox-auto-test-helper
+SRC_CC = main.cc
+LIBS = libc libc_fs