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