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