Mounting ext2 filesystem fails

Alexander Boettcher alexander.boettcher at genode-labs.com
Tue Oct 17 08:59:55 CEST 2023


Hello,

On 16.10.23 15:18, Radu Aron wrote:
> Hello,
> 
> I am running into an issue when trying to setup a VBox Guest on top of NOVA
> on a PC platform. Basically I have a SATA SSD with an ext2 filesystem on it
> containing a .vdi file from which the VBox guest should boot. The error
> that I am getting is on the `vfs` component when using rump to mount the
> disk drive, namely `Mounting 'ext2fs' file system failed (22)`. It also
> reported a similar issue [1], but there it was an ISO fs and on QEMU.

I tried using your script. When adding an empty disk with just an ext2 (so no partitions on it) to Qemu, the script works in principle and the mounting error of the vfs did not occur for me, e.g

dd if=/dev/zero of=bin/hdd_disk.raw bs=1M count=32
exec mke2fs -F bin/hdd_disk.raw

-device ahci,id=ahci
-drive id=hdd,file=bin/hdd_disk.raw,format=raw,if=none -device ide-hd,drive=hdd,bus=ahci.1

If you use a partition table ony your SSD, and in one of the partition is your ext2, then you will have to use the part_block component between ahci_drv and vfs. In part_block you will have to write a policy to let the vfs point to the right partition on your SSD.

> Could anyone help me with fixing this error, or maybe recommend another way
> to setup a persistent VBox guest on a PC?

Use Sculpt, if you need a ready to go solution.

Cheers,

Alex.

> I have attached the logs and the run configuration that I am using.
> 
> Thank you!
> [1] https://lists.genode.org/pipermail/users/2023-September/008798.html
> 
> ############### LOGS
> 
> [init] Warning: vbox1: configured RAM exceeds available RAM, proceed with
> 4745643552
> [init] child "rtc_drv" announces service "Rtc"
> [init] child "nic_report_rom" announces service "Report"
> [init] child "nic_report_rom" announces service "ROM"
> [init] child "platform_reports" announces service "Report"
> [init] child "platform_reports" announces service "ROM"
> [init] child "ahci_report_rom" announces service "Report"
> [init] child "ahci_report_rom" announces service "ROM"
> [init -> ahci_drv] --- Starting AHCI driver ---
> [init -> nic_drv] --- iPXE NIC driver started ---
> [init] child "log_terminal" announces service "Terminal"
> [init] child "timer" announces service "Timer"
> [init] child "report_rom" announces service "Report"
> [init] child "report_rom" announces service "ROM"
> [init] child "platform_drv" announces service "Platform"
> [init -> nic_router] [uplink] dynamic IP config: none
> [init -> nic_router] [uplink] NIC sessions: 0
> [init] child "nitpicker" announces service "Gui"
> [init] child "nitpicker" announces service "Capture"
> [init] child "clipboard" announces service "Report"
> [init -> wm -> decorator] Warning: decorator: configured RAM exceeds
> available RAM, proceed with 11060881
> [init -> nic_router] [downlink] static IP config: interface 10.0.3.1/24,
> gateway 0.0.0.0, P2P 0
> [init] child "nitpicker" announces service "Event"
> [init] child "event_filter" announces service "Event"
> [init] child "pointer" announces service "Report"
> [init] child "clipboard" announces service "ROM"
> [init -> acpi_drv] Found MADT
> [init -> acpi_drv] MADT IRQ 0 -> GSI 2 flags: 0
> [init -> wm -> decorator] Warning: decorator: configured caps exceed
> available caps, proceed with 337
> [init -> nic_router] [downlink] NIC sessions: 0
> [init] child "nic_router" announces service "Nic"
> [init -> usb_hid_drv] --- USB HID input driver ---
> [init -> usb_hid_drv] Warning: use compatibility mode: will claim all HID
> devices from USB report
> [init -> acpi_drv] MADT IRQ 9 -> GSI 9 flags: 13
> [init -> acpi_drv] Found MCFG
> [init -> acpi_drv] MCFG BASE 0xf8000000 seg 0x0 bus 0x0-0x3f
> [init] child "nic_router" announces service "Uplink"
> [init -> nic_report_rom] report 'nic_router -> state'
> [init -> usb_hid_drv] Configured HID screen with 0x0 (multitouch=false)
> [init -> acpi_drv] Found DMAR
> [init -> acpi_drv] 39 bit DMA physical addressable , IRQ remapping supported
> [init -> nic_report_rom]   <state>
> [init -> nic_report_rom]   <ram quota="52259268" used="716800" shared="0"/>
> [init -> acpi_drv] DMA remapping structure type=0
> [init -> acpi_drv] DMA remapping structure type=0
> [init -> nic_report_rom]   <cap quota="85" used="27" shared="0"/>
> [init -> nic_report_rom]   <domain name="downlink" rx_bytes="0"
> tx_bytes="0" ipv4="10.0.3.1/24" gw="0.0.0.0"/>
> [init -> acpi_drv] DMA remapping structure type=1
> [init -> nic_report_rom]   <domain name="uplink" rx_bytes="0" tx_bytes="0"
> ipv4="0.0.0.0/32" gw="0.0.0.0"/>
> [init -> acpi_drv] DMA remapping structure type=1
> [init -> acpi_drv] XSDT OEM 'HPQOEM', table id 'SLIC-BPC', revision 0,
> creator '    ' (16777235)
> [init -> nic_report_rom]   </state>
> [init -> acpi_drv] SMBIOS table (entry point: 0x15000 structures:
> 0xb97eb000)
> [init -> usb_drv] NR_IRQS: 4352, nr_irqs: 4352, preallocated irqs: 256
> [init -> ahci_drv] version: major=0x1 minor=0x301
> [init -> ahci_drv] command slots: 32
> [init -> usb_drv] time-clocksource: dde_counter: mask: 0xffffffffffffff
> max_cycles: 0x1d854df40, max_idle_ns: 3526361616960 ns
> [init -> nic_drv] Found:  8086:15b7 (rev 31)
> [init -> fb_drv] fb mapped to 0x6000
> [init -> ahci_drv] native command queuing: yes
> [init -> ahci_drv] 64-bit support: yes
> [init -> ahci_drv] number of ports: 5
> [init -> usb_drv] time-clocksource: jiffies: mask: 0xffffffff max_cycles:
> 0xffffffff, max_idle_ns: 7645041785100000 ns
> [init -> nic_drv]
> [init -> nic_drv] using driver i219lm-2
> [init -> usb_drv] usbcore: registered new interface driver usbfs
> [init -> usb_drv] usbcore: registered new interface driver hub
> [init -> nic_drv]
> [init -> nic_drv] PCI device 00:01.0 latency timer is unreasonably low at
> 0. Setting to 32.
> [init -> usb_drv] usbcore: registered new device driver usb
> [init -> nic_drv]
> [init -> nic_drv]
> [init -> nic_drv] bus_addr = 160000 len = 20000
> [init -> ahci_drv] #0: ATA
> [init -> ahci_drv] #1: off (ATAPI)
> [init -> usb_drv] time-clocksource: Switched to clocksource dde_counter
> [init -> nic_drv]
> [init -> ahci_drv] #2:  off (unknown device signature)
> [init -> ahci_drv] #3:  off (unknown device signature)
> [init -> usb_drv] usbcore: registered new interface driver genode
> [init -> usb_drv] xhci_hcd 00:14.0: xHCI Host Controller
> [init -> ahci_drv] #5:  off (unknown device signature)
> [init -> ahci_report_rom] report 'ahci_drv -> ports'
> [init -> nic_drv] snprintf not implemented
> [init -> usb_drv] xhci_hcd 00:14.0: new USB bus registered, assigned bus
> number 1
> [init -> ahci_report_rom]   <ports>
> [init -> ahci_report_rom]   <port num="0" type="ATA"
> block_count="500118192" block_size="512" model="SanDisk SD7TB3Q-256G-1006"
> serial="154825402719"/>
> [init -> nic_drv]
> [init -> fb_drv] Found: VESA BIOS version 3.0
> [init -> fb_drv] OEM: Intel(R) SKL Mobile/Desktop Graphics Chipset
> Accelerated VGA BIOS
> [init -> usb_drv] xhci_hcd 00:14.0: hcc params 0x200077c1 hci version 0x100
> quirks 0x0000000001109810
> [init -> ahci_report_rom]   </ports>
> [init -> nic_drv] MAC address 48:0f:cf:3a:c4:09
> [init -> usb_drv] xhci_hcd 00:14.0: xHCI Host Controller
> [init -> usb_drv] xhci_hcd 00:14.0: new USB bus registered, assigned bus
> number 2
> [init] child "ahci_drv" announces service "Block"
> [init -> usb_drv] xhci_hcd 00:14.0: Host supports USB 3.0 SuperSpeed
> [init -> usb_drv] hub 1-0:1.0: USB hub found
> [init -> usb_drv] hub 1-0:1.0: 16 ports detected
> [init] child "usb_drv" announces service "Usb"
> [init -> vfs] Error: Mounting 'ext2fs' file system failed (22)
> [init -> usb_drv] hub 2-0:1.0: USB hub found
> [init -> usb_drv] hub 2-0:1.0: 10 ports detected
> [init -> vfs] Error: failed to create <rump> VFS node
> [init -> vfs] Error: fs="ext2fs"
> [init -> usb_drv] sched_clock: Marking stable (262790000,
> 426294000)->(794891000, -105807000)
> [init -> vfs] Error: ram="10M"
> [init -> vfs] Error: writeable="yes"
> [init] child "vfs" announces service "File_system"
> [init -> fb_drv] Found: physical frame buffer at 0xc0000000 size: 33488896
> [init -> fb_drv] fb mapped to 0x11000000
> [init -> fb_drv] using VESA mode 1280x1024 at 32
> [init -> vbox1]   0x1000000 .. 0x10ffffff: linker area
> [init -> vbox1]   0x40000000 .. 0x4fffffff: stack area
> [init -> vbox1]   0x30000 .. 0x14efff: ld.lib.so
> [init -> vbox1]   0x2b68000 .. 0x2b91fff: egl.lib.so
> [init -> vbox1]   0x10e22000 .. 0x10ffffff: libc.lib.so
> [init -> vbox1]   0x10d7e000 .. 0x10e21fff: vfs.lib.so
> [init -> vbox1]   0x2b92000 .. 0x2c78fff: libiconv.lib.so
> [init -> vbox1]   0x10d3c000 .. 0x10d7dfff: libm.lib.so
> [init -> vbox1]   0x2c79000 .. 0x2d11fff: libyuv.lib.so
> [init -> vbox1]   0x2d12000 .. 0x2d51fff: jpeg.lib.so
> [init -> vbox1]   0x2d52000 .. 0x2fcffff: stdcxx.lib.so
> [init -> vbox1]   0x2fd0000 .. 0x443cfff: mesa.lib.so
> [init -> vbox1]   0x443d000 .. 0x446cfff: expat.lib.so
> [init -> vbox1]   0x446d000 .. 0x44f7fff: glapi.lib.so
> [init -> vbox1]   0x44f8000 .. 0x452bfff: libdrm.lib.so
> [init -> vbox1]   0x10d1c000 .. 0x10d33fff: vfs_gpu.lib.so
> [init -> vbox1]   0x452c000 .. 0x4542fff: zlib.lib.so
> [init -> vbox1]   0x4543000 .. 0x45bcfff: qemu-usb.lib.so
> [init -> vbox1]   0x45bd000 .. 0x4611fff: virtualbox6-shaderlib.lib.so
> [init -> vbox1]   0x10d07000 .. 0x10d1bfff: vfs_pipe.lib.so
> [init -> usb_drv] usb 1-2: new low-speed USB device number 2 using xhci_hcd
> [init -> vbox1] Log created: 2023-10-16T15:01:25.002000000Z
> [init -> vbox1] Process ID:  0 (0x0)
> [init -> vbox1] Parent PID:  -1 (0xffffffff)
> [init -> vbox1] Executable:  /virtualbox6
> [init -> usb_drv] usb 1-2: usbfs: process 15 () did not claim interface 0
> before use
> [init -> usb_hid_drv] dev_info: input: USB HID v1.10 Keyboard [HID
> 24f0:0137] on usb-usbbus-/input0
> [init -> usb_drv] usb 1-2: usbfs: process 15 () did not claim interface 1
> before use
> [init -> usb_drv] usb 1-5: new full-speed USB device number 3 using xhci_hcd
> [init -> usb_hid_drv] dev_info: input: USB HID v1.10 Device [HID 24f0:0137]
> on usb-usbbus-/input1
> [init -> usb_drv] usb 1-5: usbfs: process 16 () did not claim interface 0
> before use
> [init -> usb_hid_drv] dev_info: input: USB HID v1.11 Keyboard [HID
> 046d:c548] on usb-usbbus-/input0
> [init -> usb_drv] usb 1-5: usbfs: process 16 () did not claim interface 1
> before use
> [init -> usb_hid_drv] dev_info: input: USB HID v1.11 Mouse [HID 046d:c548]
> on usb-usbbus-/input1
> [init -> usb_drv] usb 1-5: usbfs: process 16 () did not claim interface 2
> before use
> [init -> usb_drv] usb 1-8: new high-speed USB device number 4 using xhci_hcd
> [init -> usb_hid_drv] dev_err: device has no listeners, quitting
> [init -> vbox1] Error: machine could not enter running state
> [init -> vbox1] Error: Could not open the medium '//ol.vdi'.
> [init -> vbox1] VD: error VERR_FILE_NOT_FOUND opening image file '//ol.vdi'
> (VERR_FILE_NOT_FOUND)
> [init -> vbox1]
> [init -> vbox1] !!Assertion Failed!!
> [init -> vbox1] Expression: state <= 1 && ( (state == 0 && count == 0) ||
> (state == 1 && count < PR_UINT32_MAX/2))
> [init -> vbox1] Stack     :
> [init -> vbox1] 0000000001a83e8b
> [init -> vbox1]
> [init -> vbox1]
> [init -> vbox1] !!Assertion Failed!!
> [init -> vbox1] Expression: state <= 1 && ( (state == 0 && count == 0) ||
> (state == 1 && count < PR_UINT32_MAX/2))
> [init -> vbox1] Stack     :
> [init -> vbox1] 0000000001a83e8b
> [init -> vbox1]
> [init -> vbox1] AddRef: illegal refcnt=3221225469 state=2
> [init -> vbox1] AddRef: illegal refcnt=3221225469 state=2
> Warning: unresolvable exception 3, pd 'init -> vbox1', thread 'ep', cpu 0,
> ip=0x11bdbcf sp=0x403fe310 bp=0xbffffffd no signal handler
> [init -> vbox1] Error: Uncaught exception of type 'Genode::Ipc_error'
> [init -> vbox1] Warning: abort called - thread: main
> 
> 
> ############ run script
> assert_spec x86_64
> 
> set use_overlay 0
> set use_serial 1
> set use_top 0
> 
> create_boot_directory
> 
> set depot_archives { }
> 
> lappend depot_archives [depot_user]/pkg/[drivers_interactive_pkg]
> lappend depot_archives [depot_user]/pkg/themed_wm
> lappend depot_archives [depot_user]/src/[base_src]
> lappend depot_archives [depot_user]/src/clipboard
> lappend depot_archives [depot_user]/src/init
> lappend depot_archives [depot_user]/src/jpeg
> lappend depot_archives [depot_user]/src/libc
> lappend depot_archives [depot_user]/src/nitpicker
> lappend depot_archives [depot_user]/src/report_rom
> lappend depot_archives [depot_user]/src/vfs_import
> lappend depot_archives [depot_user]/src/vfs_pipe
> lappend depot_archives [depot_user]/src/vfs_oss
> lappend depot_archives [depot_user]/src/mesa
> lappend depot_archives [depot_user]/src/expat
> lappend depot_archives [depot_user]/src/libdrm
> lappend depot_archives [depot_user]/src/libyuv
> lappend depot_archives [depot_user]/src/vfs_gpu
> lappend depot_archives [depot_user]/src/ipxe_nic_drv
> lappend depot_archives [depot_user]/src/nic_router
> 
> import_from_depot $depot_archives
> 
> 
> set build_components { virtualbox6
> drivers/ahci server/vfs_block
> app/rom_logger
> server/vfs
> server/fs_rom
> lib/vfs_rump
> server/dynamic_rom
> app/fs_query
> }
> 
> lappend_if [expr $use_top]    build_components app/top
> lappend_if [expr $use_serial] build_components server/log_terminal
> lappend_if [have_spec x86]    build_components drivers/rtc
> 
> lappend  build_components drivers/audio
> 
> build $build_components
> 
> set config {
> <config prio_levels="4" verbose="yes">
> <parent-provides>
> <service name="ROM"/>
> <service name="IRQ"/>
> <service name="IO_MEM"/>
> <service name="IO_PORT"/>
> <service name="PD"/>
> <service name="RM"/>
> <service name="CPU"/>
> <service name="LOG"/>
> <service name="VM"/>
> <service name="Event"/>
> <service name="Capture"/>
> <service name="TRACE"/>
> </parent-provides>
> <default-route>
> <any-service> <parent/> <any-child/> </any-service>
> </default-route>
> <default caps="100"/>
> <start name="timer" priority="0">
> <resource name="RAM" quantum="10M"/>
> <provides> <service name="Timer"/> </provides>
> </start>}
> 
> 
> append config {
> <start name="report_rom" >
> <resource name="RAM" quantum="20M"/>
> <provides> <service name="Report"/> <service name="ROM"/> </provides>
> <config>
> <policy label="pointer -> hover" report="nitpicker -> hover"/>
> <policy label="pointer -> xray"  report="nitpicker -> xray"/>
> <policy label="clipboard -> focus" report="nitpicker -> focus"/>
> </config>
> </start>
> 
> <start name="rtc_drv" >
> <resource name="RAM" quantum="10M"/>
> <provides>
> <service name="Rtc"/>
> </provides>
> </start>
> 
> <start name="nic_report_rom">
> <binary name="report_rom"/>
> <resource name="RAM" quantum="10M"/>
> <provides> <service name="Report"/> <service name="ROM"/> </provides>
> <config verbose="yes"/>
> </start>
> 
> <start name="nic_router" caps="120" >
> <resource name="RAM" quantum="50M"/>
> <provides>
> <service name="Nic"/>
> <service name="Uplink"/>
> </provides>
> 
> <config verbose_domain_state="yes">
> <policy label_prefix="vbox"    domain="downlink"/>
> <policy label_prefix="nic_drv" domain="uplink"/>
> 
> <domain name="uplink">
> <nat domain="downlink"
> tcp-ports="16384"
> udp-ports="16384"
> icmp-ids="16384"/>
> <tcp-forward port="22" domain="downlink" to="10.0.3.2"/>
> </domain>
> 
> <domain name="downlink" interface="10.0.3.1/24">
> <dhcp-server ip_first="10.0.3.2" ip_last="10.0.3.2"/>
> <tcp dst="0.0.0.0/0"><permit-any domain="uplink" /></tcp>
> <udp dst="0.0.0.0/0"><permit-any domain="uplink" /></udp>
> <icmp dst="0.0.0.0/0" domain="uplink"/>
> </domain>
> 
> <report bytes="yes"
> stats="yes"
> dropped_fragm_ipv4="yes"
> quota="yes"
> config="yes"
> config_triggers="no"
> link_state="yes"
> link_state_triggers="no"
> interval_sec="120"/>
> </config>
> <route>
> <service name="Report"> <child name="nic_report_rom"/> </service>
> <any-service> <parent/> <any-child/> </any-service>
> </route>
> </start>
> 
> 
> <start name="platform_reports">
> <binary name="report_rom"/>
> <resource name="RAM" quantum="10M"/>
> <provides>
> <service name="Report"/>
> <service name="ROM"/>
> </provides>
> <config>
> <policy label="pci_decode -> system"    report="acpi_drv -> acpi"/>
> <policy label="platform_drv -> devices" report="pci_decode -> devices"/>
> <policy label="usb_hid_drv -> report"   report="usb_drv -> devices"/>
> </config>
> </start>
> 
> <start name="acpi_drv" caps="350">
> <resource name="RAM" quantum="40M"/>
> <route>
> <service name="Report"> <child name="platform_reports"/> </service>
> <any-service> <parent/> <any-child/> </any-service>
> </route>
> </start>
> 
> <start name="pci_decode" caps="350">
> <resource name="RAM" quantum="20M"/>
> <route>
> <service name="ROM" label="system"> <child name="platform_reports"/>
> </service>
> <service name="Report"> <child name="platform_reports"/> </service>
> <any-service> <parent/> <any-child/> </any-service>
> </route>
> </start>
> 
> 
> <start name="platform_drv" caps="400" managing_system="yes">
> <resource name="RAM" quantum="400M"/>
> <provides>
> <service name="Platform"/>
> </provides>
> <config>
> <policy label_prefix="ahci_drv" info="yes"> <pci class="AHCI"/> </policy>
> <policy label_prefix="fb_drv"  info="yes"> <pci class="VGA"/> </policy>
> <policy label_prefix="usb_drv" info="yes"> <pci class="USB"/> </policy>
> <policy label_prefix="nic_drv" info="yes"> <pci class="ETHERNET"/> </policy>
> </config>
> <route>
> <service name="ROM" label="devices"> <child name="platform_reports"/>
> </service>
> <any-service> <parent/> <any-child/> </any-service>
> </route>
> </start>
> 
> <start name="ahci_report_rom">
> <binary name="report_rom"/>
> <resource name="RAM" quantum="10M"/>
> <provides> <service name="Report"/> <service name="ROM"/> </provides>
> <config verbose="yes"/>
> </start>
> 
> <start name="ahci_drv" >
> <resource name="RAM" quantum="10M"/>
> <provides>
> <service name="Block"/>
> </provides>
> <config atapi="no">
> <report ports="yes"/>
> <policy label_prefix="vfs" device="0" writeable="yes"/>
> </config>
> <route>
> <service name="Report"> <child name="ahci_report_rom"/> </service>
> <any-service> <parent/> <any-child/> </any-service>
> </route>
> </start>
> 
> <start name="vfs" caps="200">
> <resource name="RAM" quantum="120M" />
> <provides><service name="File_system"/></provides>
> <config>
> <vfs> <rump fs="ext2fs" ram="10M" writeable="yes"/> </vfs>
> <policy label_prefix="vbox1" root="/" writeable="yes"/>
> <policy label_prefix="fs_query" root="/" writeable="yes"/>
> </config>
> <route>
> <service name="Block"> <child name="ahci_drv"/></service>
> <any-service> <parent/> <any-child/> </any-service>
> </route>
> </start>
> 
> <start name="nic_drv" >
> <binary name="ipxe_nic_drv"/>
> <resource name="RAM" quantum="80M"/>
> <route>
> <service name="Uplink"> <child name="nic_router"/> </service>
> <any-service> <parent/> <any-child/> </any-service>
> </route>
> </start>
> 
> <start name="fb_drv" caps="120">
> <binary name="vesa_fb_drv"/>
> <resource name="RAM" quantum="1000M"/>
> <route>
> <service name="ROM" label="config"> <parent label="fb_drv.config"/>
> </service>
> <service name="Platform"> <child name="platform_drv"/> </service>
> <service name="Capture"> <child name="nitpicker"/> </service>
> <service name="Event">   <child name="nitpicker"/> </service>
> <any-service> <parent/> <any-child/> </any-service>
> </route>
> </start>
> 
> <start name="usb_drv" caps="150">
> <binary name="pc_usb_host_drv"/>
> <resource name="RAM" quantum="10M"/>
> <provides> <service name="Usb"/> </provides>
> <config>
> <report devices="yes"/>
> <policy label_prefix="usb_hid_drv" class="0x3"/>
> </config>
> <route>
> <service name="Platform"> <child name="platform_drv"/> </service>
> <service name="Report" label="devices"> <child name="platform_reports"/>
> </service>
> <any-service> <parent/> <any-child/> </any-service>
> </route>
> </start>
> 
> 
> 
> <start name="usb_hid_drv" caps="140">
> <resource name="RAM" quantum="10M"/>
> <config use_report="yes"/>
> <route>
> <service name="ROM" label="report"> <child name="platform_reports"/>
> </service>
> <service name="Event"> <child name="event_filter" label="usb"/> </service>
> <service name="Usb">   <child name="usb_drv"/> </service>
> <any-service> <parent/> <any-child/> </any-service>
> </route>
> </start>
> 
> <start name="event_filter" caps="90">
> <resource name="RAM" quantum="1280K"/>
> <provides> <service name="Event"/> </provides>
> <route>
> <service name="ROM" label="config"> <parent label="event_filter.config"/>
> </service>
> <service name="Event">   <child name="nitpicker"/> </service>
> <any-service> <parent/> <any-child/> </any-service>
> </route>
> </start>
> 
> 
> }
> append_if [expr $use_serial] config {
> <start name="log_terminal" >
> <resource name="RAM" quantum="2M"/>
> <provides>
> <service name="Terminal"/>
> </provides>
> </start>}
> 
> append config {
> <start name="nitpicker" >
> <resource name="RAM" quantum="1500M"/>
> <provides>
> <service name="Gui"/> <service name="Capture"/> <service name="Event"/>
> </provides>
> <config focus="rom">
> <capture/> <event/>
> 
> <report focus="yes" hover="yes"/>
> 
> <domain name="pointer"  layer="1" content="client" label="no"
> origin="pointer"/>
> <domain name="default"  layer="2" content="client" label="no"
> hover="always"/>
> 
> <policy label_prefix="pointer" domain="pointer"/>
> <default-policy domain="default"/>
> </config>
> <route>
> <service name="Report"> <child name="report_rom"/> </service>
> <any-service> <parent/> <any-child/> </any-service>
> </route>
> </start>
> 
> <start name="pointer" >
> <resource name="RAM" quantum="20M"/>
> <provides> <service name="Report"/> </provides>
> <config shapes="yes"/>
> <route>
> <service name="Gui"> <child name="nitpicker"/>  </service>
> <service name="ROM" label="hover"> <child name="report_rom"/> </service>
> <service name="ROM" label="xray"> <child name="report_rom"/> </service>
> <any-service> <parent/> </any-service>
> </route>
> </start>
> 
> <start name="clipboard" >
> <resource name="RAM" quantum="20M"/>
> <provides>
> <service name="ROM"/> <service name="Report"/>
> </provides>
> <config verbose="yes" match_labels="yes">
> <default-policy domain="default"/>
> </config>
> <route>
> <service name="ROM" label="focus"> <child name="report_rom"/> </service>
> <any-service> <parent/> <any-child/> </any-service>
> </route>
> </start>
> 
> <start name="wm" caps="1000" >
> <resource name="RAM" quantum="32M"/>
> <binary name="init"/>
> <provides>
> <service name="Gui"/> <service name="Report"/> <service name="ROM"/>
> </provides>
> <route>
> <service name="ROM" label="config"> <parent label="wm.config"/> </service>
> <service name="ROM"    label_last="clipboard"> <child name="clipboard"/>
> </service>
> <service name="Report" label_last="clipboard"> <child name="clipboard"/>
> </service>
> <service name="Report" label_last="shape">  <child name="pointer"/>
> </service>
> <service name="Gui"> <child name="nitpicker"/> </service>
> <any-service> <parent/> <any-child/> </any-service>
> </route>
> </start>
> 
> <start name="vbox1" priority="-2" caps="1800">
> <binary name="virtualbox6"/>
> <resource name="RAM" quantum="5G"/>
> <config vbox_file="vm.vbox" vm_name="TestVM" ld_verbose="yes">
> <libc stdout="/dev/log" stderr="/dev/log" pipe="/pipe" rtc="/dev/rtc">
> <pthread placement="single-cpu"/>
> </libc>
> <vfs>
> <dir name="dev">
> <log/> <rtc/> <null/> <zero/>
> </dir>
> <dir name="pipe"> <pipe/> </dir>}
> 
> append_if [expr $use_serial] config {
> <dir name="dev"> <terminal/> </dir>}
> 
> append config {
> <rom name="vm.vbox"/>
> <fs/>
>    }
> append_if [expr $use_overlay] config {
> <dir name="ram"> <ram/> </dir>
> <import>
> <dir name="ram"> <rom name="overlay.vdi"/> </dir>
> </import>}
> append config {
> </vfs>
> <arg value="virtualbox"/>
> <env key="VBOX_USER_HOME" value="/"/>
> <env key="VBOX_LOG_DEST" value="file=/dev/log"/>
> <env key="VBOX_LOG" value="-*.e.l.f"/>
> <env key="VBOX_RELEASE_LOG_DEST" value="file=/dev/log"/>
> <env key="VBOX_RELEASE_LOG" value="-*.e.l.f"/>
> </config>
> <route>
> <service name="Nic"> <child name="nic_router"/> </service>
> <service name="File_system"> <child name="vfs"/> </service>
> <service name="Gui"> <child name="wm"/> </service>
> <service name="VM"> <parent diag="yes"/> </service>
> <service name="Report" label="shape"> <child name="wm"/> </service>
> <service name="ROM"    label="clipboard"> <child name="wm"/> </service>
> <service name="Report" label="clipboard"> <child name="wm"/> </service>
> <service name="Report"> <child name="report_rom"/> </service>
> <any-service> <parent/> <any-child/> </any-service>
> </route>
> </start>
> </config>}
> 
> install_config $config
> 
> copy_file [genode_dir]/repos/ports/run/vm.vbox bin/
> 
> #
> # Instruct vesa_drv to use maximum resolution
> #
> set fd [open bin/fb_drv.config w]
> puts $fd {<config buffered="yes" width="1280" height="1024"/>}
> close $fd
> 
> #
> # Pin the nitpicker focus to the window manager by providing a static focus
> ROM
> #
> set fd [open [run_dir]/genode/focus w]
> puts $fd "<focus label=\"wm -> focus\"/>"
> close $fd
> 
> set boot_modules {
> rtc_drv ld.lib.so
> virtualbox6 libc.lib.so vfs.lib.so libm.lib.so libiconv.lib.so stdcxx.lib.so
> qemu-usb.lib.so virtualbox6-shaderlib.lib.so vfs_rump.lib.so vfs
> fs_rom fb_drv.config vm.vbox rump.lib.so rump_fs.lib.so rom_logger
> dynamic_rom fs_query
> }
> 
> # platform-specific modules
> lappend_if [expr $use_top] boot_modules top
> 
> append_if [expr $use_serial]  boot_modules { log_terminal }
> append_if [expr $use_overlay] boot_modules { overlay.vdi }
> 
> lappend boot_modules pci_audio_drv
> lappend boot_modules ahci_drv
> lappend boot_modules vfs_block
> lappend boot_modules nic_router
> lappend boot_modules ipxe_nic_drv
> build_boot_image $boot_modules
> 
> run_genode_until forever
> 
> 
> _______________________________________________
> Genode users mailing list
> users at lists.genode.org
> https://lists.genode.org/listinfo/users

-- 
Alexander Boettcher
Genode Labs

https://www.genodians.org - https://www.genode.org



More information about the users mailing list