Virtualbox + rump_fs + qemu
Christian Prochaska
christian.prochaska at ...1...
Tue Feb 24 19:21:54 CET 2015
Hello Adrian,
I could not reproduce the same problem you reported, but found two other
problems when trying to run VirtualBox in Qemu:
First, 'atapi_drv' does not run well on newer Qemu versions (I used Qemu
2.2.0), so I changed your run script to use the 'ahci' driver instead
(see attachment).
Then I tried to run TinyCore Linux in the VM (with both the .vbox and
the .iso file in the root directory of the ext2 image) and when the
Linux kernel started to boot, VirtualBox reported 'invalid gueststate'
errors and the kernel boot process never finished.
So, even if you can find out why your VirtualBox complains about the
'w7.vbox' file, I would not have too high hopes of getting your VM
running in VirtualBox on Qemu (or with AMD SVM hardware virtualization
in general) without some prior work on the VirtualBox port. So far we
have used and tested VirtualBox mainly on Intel hardware. Would that be
an option for you?
Regards,
Christian
-------------- next part --------------
set use_net 0
set build_components {
core init virtualbox
drivers/input
drivers/framebuffer
drivers/timer
server/rump_fs
test/libc_vfs
drivers/ahci
}
lappend_if [have_spec acpi] build_components drivers/acpi
lappend_if [have_spec pci] build_components drivers/pci
lappend_if [have_spec x86] build_components drivers/rtc
lappend_if [expr $use_net] build_components drivers/nic
build $build_components
create_boot_directory
set config {
<config prio_levels="4">
<parent-provides>
<service name="ROM"/>
<service name="RAM"/>
<service name="IRQ"/>
<service name="IO_MEM"/>
<service name="IO_PORT"/>
<service name="CAP"/>
<service name="PD"/>
<service name="RM"/>
<service name="CPU"/>
<service name="LOG"/>
<service name="SIGNAL"/>
</parent-provides>
<default-route>
<any-service> <any-child/> <parent/> </any-service>
</default-route>
<start name="timer">
<resource name="RAM" quantum="1M"/>
<provides><service name="Timer"/></provides>
</start>}
append_if [have_spec acpi] config {
<start name="acpi" priority="-1">
<resource name="RAM" quantum="8M"/>
<binary name="acpi_drv"/>
<provides>
<service name="PCI"/>
<service name="IRQ" />
</provides>
<route>
<service name="PCI"> <any-child /> </service>
<any-service> <parent/> <any-child /> </any-service>
</route>
</start>}
append_if [expr ![have_spec acpi] && [have_spec pci]] config {
<start name="pci_drv" priority="-1">
<resource name="RAM" quantum="2M"/>
<provides> <service name="PCI"/> </provides>
</start>}
append_if [have_spec ps2] config {
<start name="ps2_drv" priority="-1">
<resource name="RAM" quantum="1M"/>
<provides><service name="Input"/></provides>
</start>}
append_if [have_spec framebuffer] config {
<start name="fb_drv" priority="-1">
<resource name="RAM" quantum="4M"/>
<provides><service name="Framebuffer"/></provides>
</start>}
append_if [have_spec sdl] config {
<start name="fb_sdl" priority="-1">
<resource name="RAM" quantum="4M"/>
<provides>
<service name="Input"/>
<service name="Framebuffer"/>
</provides>
</start>}
append_if [have_spec x86] config {
<start name="rtc_drv" priority="-1">
<resource name="RAM" quantum="1M"/>
<provides>
<service name="Rtc"/>
</provides>
</start>}
append_if [expr $use_net] config {
<start name="nic_drv" priority="-1">
<resource name="RAM" quantum="4M"/>
<provides><service name="Nic"/></provides>
</start>
}
append config {
<start name="ahci">
<resource name="RAM" quantum="10M" />
<provides><service name="Block" /></provides>
</start>
<start name="rump_fs" priority="-1">
<resource name="RAM" quantum="32M" />
<provides><service name="File_system"/></provides>
<config fs="ext2fs"><policy label="" root="/" writeable="yes"/></config>
</start>
<start name="virtualbox" priority="-2">
<resource name="RAM" quantum="750M"/>
<config vbox_file="w7.vbox" vm_name="w7">
<libc stdout="/dev/log" stderr="/dev/log">
<vfs>
<dir name="dev"> <log/> </dir>
<fs/>
</vfs>
</libc>
</config>
</start>
</config>
}
install_config $config
exec cp ${genode_dir}/repos/ports/run/test.vbox bin/.
set boot_modules { core init timer virtualbox }
# 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 linux] boot_modules fb_sdl
lappend_if [have_spec nova] boot_modules pci_device_pd
lappend_if [have_spec x86] boot_modules rtc_drv
append boot_modules {
ld.lib.so libc.lib.so libm.lib.so pthread.lib.so libc_lock_pipe.lib.so
libc_terminal.lib.so libiconv.lib.so stdcxx.lib.so
rump.lib.so rump_fs.lib.so rump_fs
ahci
}
append_if [expr $use_net] boot_modules { nic_drv }
build_boot_image $boot_modules
append qemu_args " -m 512 "
append qemu_args " -cpu phenom -boot order=d -drive id=disk,file=/tmp/tmp.img,if=none -device ahci,id=ahci -device ide-drive,drive=disk,bus=ahci.0"
run_genode_until forever
More information about the users
mailing list