Virtualbox + rump_fs + qemu

a3an a3an at ...294...
Mon Feb 23 00:22:29 CET 2015


Hello,

I am trying get Virtualbox using rump_fs in a qemu environment.

I am using a modified virtualbox.run script called vb_ide.run. 
Eventually Virtualbox is started as follows:

qemu-system-x86_64 -no-kvm -cpu core2duo -m 512 -boot order=d, -hda 
/GV/QV.img -serial mon:stdio -cdrom var/run/vb-ide.iso

Device -hda contains an ext2 filesystem upon which an original 
VirtualBox VMs directory environment
is installed.

The following is part of the init script that is used.

    <start name="atapi_drv">
         <resource name="RAM" quantum="5M"/>
         <provides><service name="Block"/></provides>
         <config ata="yes"/>
     </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>
                 </vfs>
             </libc>
         </config>
     </start>

This part of the script and a similar qemu invocation have been used in 
a variation of the rump_ext2 script as well and works fine. The NOVA 
hypervisor is booted from -cdrom the programs are loaded from -cdrom as 
well. The test program issues filesystem operation resulting in 
manipulations of the filesystem on device -hda.

When stating Virtualbox however, is does not work. Everything starts 
fine, however, virtualbox does not seem to use rump_fs (I have placed a 
PWRN message in the rump_fs server code that did not show up). It 
terminates because it cannot find w7.vbox.

Genode 14.11
int main(): --- create local services ---
int main(): --- start init ---
int main(): transferred 456 MB to init
Quota exceeded! amount=24576, size=4096, consumed=24576
[init] upgrading quota donation for Env::CPU (8192 bytes)
Quota exceeded! amount=32768, size=4096, consumed=32768
[init] upgrading quota donation for Env::CPU (8192 bytes)
Quota exceeded! amount=40960, size=4096, consumed=40960
[init] upgrading quota donation for Env::CPU (8192 bytes)
[init -> atapi_drv] IDE 0 Device 0: ATA IRQ: 14
[init -> acpi] available memory for ACPI 2048 kiB, for PCI_DRV 5468 kiB
[init -> ps2_drv] Detected ExPS/2 mouse - activating scroll-wheel and 
5-button support.
[init -> ps2_drv] Using keyboard with scan code set 1 (xlate).
[init -> rump_fs] Using ext2fs as file system
[init -> rump_fs] int rumpuser_init(int, const rumpuser_hyperup*): RUMP 
ver: 17
[init -> rump_fs] int rumpuser_getparam(const char*, void*, size_t): 
RUMP_THREADS
[init -> rump_fs] int rumpuser_getparam(const char*, void*, size_t): 
RUMP_VERBOSE
[init -> rump_fs] int rumpuser_getparam(const char*, void*, size_t): 
_RUMPUSER_NCPU
[init -> rump_fs] int rumpuser_getparam(const char*, void*, size_t): 
RUMP_MEMLIMIT
[init -> rump_fs] Asserting rump kernel 28732 KB of RAM
Quota exceeded! amount=24576, size=4096, consumed=24576
[init -> rump_fs] upgrading quota donation for Env::CPU (8192 bytes)
Quota exceeded! amount=32768, size=4096, consumed=32768
[init -> rump_fs] upgrading quota donation for Env::CPU (8192 bytes)
[init -> rump_fs] BOOTSTRAP
[init -> rump_fs] int rumpuser_getparam(const char*, void*, size_t): 
RUMP_NVNODES
[init -> rump_fs] int rumpuser_getparam(const char*, void*, size_t): 
RUMP_BLKFAIL
[init -> rump_fs] int rumpuser_getparam(const char*, void*, size_t): 
RUMP_BLKSECTSHIFT
Quota exceeded! amount=40960, size=4096, consumed=40960
[init -> rump_fs] upgrading quota donation for Env::CPU (8192 bytes)
[init -> acpi] void Acpi_table::_parse_tables(T*, Genode::uint32_t) 
[with T = unsigned int; Genode::uint32_t = unsigned int]: Found MADT
Quota exceeded! amount=49152, size=4096, consumed=49152
[init -> rump_fs] upgrading quota donation for Env::CPU (8192 bytes)
[init -> acpi] MADT IRQ 0 -> GSI 2 flags: 0
[init -> acpi] MADT IRQ 5 -> GSI 5 flags: d
[init -> acpi] MADT IRQ 9 -> GSI 9 flags: d
[init -> acpi] MADT IRQ 10 -> GSI 10 flags: d
[init -> acpi] MADT IRQ 11 -> GSI 11 flags: d
Quota exceeded! amount=61440, size=4096, consumed=61440
[init -> rump_fs] upgrading quota donation for Env::RM (8192 bytes)
Quota exceeded! amount=57344, size=4096, consumed=57344
[init -> rump_fs] upgrading quota donation for Env::CPU (8192 bytes)
[init -> rump_fs] int rumpuser_getparam(const char*, void*, size_t): 
RUMP_MODULEBASE
Quota exceeded! amount=69632, size=4096, consumed=69632
[init -> rump_fs] upgrading quota donation for Env::RM (8192 bytes)
Quota exceeded! amount=65536, size=4096, consumed=65536
[init -> rump_fs] upgrading quota donation for Env::CPU (8192 bytes)
Quota exceeded! amount=77824, size=4096, consumed=77824
[init -> rump_fs] upgrading quota donation for Env::RM (8192 bytes)
[init -> acpi -> pci_drv] PCI driver started
Quota exceeded! amount=73728, size=4096, consumed=73728
[init -> rump_fs] upgrading quota donation for Env::CPU (8192 bytes)
[init -> rump_fs] int rumpuser_getparam(const char*, void*, size_t): 
_RUMPUSER_HOSTNAME
Quota exceeded! amount=86016, size=4096, consumed=86016
[init -> rump_fs] upgrading quota donation for Env::RM (8192 bytes)
Quota exceeded! amount=81920, size=4096, consumed=81920
[init -> rump_fs] upgrading quota donation for Env::CPU (8192 bytes)
[init -> acpi -> pci_drv -> pci_device_pd] PCI device pd starting ...
[init -> acpi -> pci_drv -> pci_device_pd] PCI device pd started
[init -> acpi] ACPI table format not supported - will not rewrite GSIs
[init -> atapi_drv] Found IDE Bus Master (Vendor ID: 8086 Device ID: 
7010 Class: 00010180)
[init -> atapi_drv]     Bus master interface base addr: 0000c100 (I/O) 
secondary (no) (supported)
[init -> atapi_drv] Adress mode is LBA48
[init -> atapi_drv] UDMA Modes supported:
[init -> atapi_drv]     0 and below: yes enabled: no
[init -> atapi_drv]     1 and below: yes enabled: no
[init -> atapi_drv]     2 and below: yes enabled: no
[init -> atapi_drv]     3 and below: yes enabled: no
[init -> atapi_drv]     4 and below: yes enabled: no
[init -> atapi_drv]     5 and below: yes enabled: yes
[init -> atapi_drv] PRD base at 03035000 (physical) at 00004000 (virtual)
[init -> atapi_drv] Device initialized! Enabling interrupts ...
[init -> atapi_drv] First block: 0 last block 104857599, block size 512
[init -> rump_fs] Backend::Backend(): Backend blk_size 512
[init -> fb_drv] int Framebuffer_drv::map_io_mem(Genode::addr_t, 
Genode::size_t, bool, void**, Genode::addr_t, 
Genode::Dataspace_capability*): fb mapped to 1000
Quota exceeded! amount=94208, size=4096, consumed=94208
[init -> rump_fs] upgrading quota donation for Env::RM (8192 bytes)
[init -> virtualbox] void init_libc_lock_pipe(): init_libc_lock_pipe()
[init -> virtualbox] using the pipe libc plugin
[init -> virtualbox] getenv called for non-existent variable 
"XML_MEM_BREAKPOINT"
[init -> virtualbox] getenv called for non-existent variable "XML_MEM_TRACE"
[init -> virtualbox] getenv called for non-existent variable "LC_ALL"
[init -> virtualbox] getenv called for non-existent variable "LC_CTYPE"
[init -> virtualbox] getenv called for non-existent variable "LANG"
[init -> virtualbox] getenv called for non-existent variable "PATH_LOCALE"
[init -> virtualbox] getenv called for non-existent variable 
"VBOX_DISABLE_HOST_DISK_CACHE"
[init -> virtualbox] getenv called for non-existent variable 
"CHARSETALIASDIR"
[init -> virtualbox] plugin()->open("") failed
[init -> virtualbox] fcntl(): command 2 not supported
[init -> virtualbox] Log created: 2015-02-22T21:29:03.000000000Z
[init -> virtualbox] main     Executable: /virtualbox
[init -> virtualbox] C++ runtime: xml::EIPRTFailure
[init -> virtualbox] C++ runtime: Runtime error opening 'w7.vbox' for 
reading: -102(File not found.)
[init -> virtualbox] void* abort(): abort called

What I do not understand is, how one can tell/direct Virtualbox to use a 
particular device or filesystem.
Can somebody explain this ?

Regards, Adrian




More information about the users mailing list