set use_net 0 set use_usb_qemu 0 set use_serial 1 set use_top 1 set use_vbox5_nova 0 # use_gui starts two VMs set use_gui 0 set build_components { drivers/framebuffer server/report_rom } append build_components virtualbox5 set virtualbox_binary "virtualbox5" if {$use_vbox5_nova} { set virtualbox_binary "virtualbox5-nova" } create_boot_directory import_from_depot [depot_user]/src/[base_src] \ [depot_user]/src/init \ [depot_user]/src/jpeg \ [depot_user]/src/libc \ [depot_user]/src/nitpicker \ [depot_user]/src/stdcxx \ [depot_user]/src/vfs \ [depot_user]/src/vfs_pipe \ [depot_user]/pkg/[drivers_interactive_pkg] \ [depot_user]/pkg/themed_wm 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_if [expr $use_net] build_components drivers/nic lappend_if [expr $use_net] build_components server/nic_router build $build_components set config { <config prio_levels="4"> <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"/>} append_if [expr $use_top] config { <service name="TRACE"/>} append config { </parent-provides> <default-route> <any-service> <parent/> <any-child/> </any-service> </default-route> <default caps="100"/> <start name="timer"> <resource name="RAM" quantum="1M"/> <provides><service name="Timer"/></provides> </start>} append_if [expr $use_top] config { <start name="top"> <resource name="RAM" quantum="2M"/> <config period_ms="15000"/> </start>} append config { <start name="drivers" caps="1500" managing_system="yes" priority="-1"> <binary name="init"/> <resource name="RAM" quantum="64M"/> <route> <service name="ROM" label="config"> <parent label="drivers.config"/> </service> <service name="Timer"> <child name="timer"/> </service> <service name="Capture"> <child name="nitpicker"/> </service> <service name="Event"> <child name="nitpicker"/> </service> <any-service> <parent/> </any-service> </route> </start> <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"> <binary name="ipxe_nic_drv"/> <resource name="RAM" quantum="8M"/> <route> <service name="Uplink"> <child name="nic_router"/> </service> <any-service> <parent/> <any-child /> </any-service> </route> </start> <start name="nic_router" caps="120"> <resource name="RAM" quantum="5M"/> <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"/> </domain> <domain name="downlink" interface="10.0.3.1/24" verbose_packets="no"> <dhcp-server ip_first="10.0.3.100" ip_last="10.0.3.200"> <dns-server ip="8.8.8.8"/> <dns-server ip="1.1.1.1"/> </dhcp-server> <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> </config> </start> } append_if [expr $use_serial] config { <start name="log_terminal" priority="-1"> <resource name="RAM" quantum="2M"/> <provides> <service name="Terminal"/> </provides> </start> } append config { <start name="report_rom" priority="-1"> <resource name="RAM" quantum="2M"/> <provides> <service name="Report"/> <service name="ROM"/> </provides> <config> <policy label="pointer -> hover" report="nitpicker -> hover"/> <policy label="pointer -> xray" report="nitpicker -> xray"/> </config> </start> <start name="nitpicker" priority="-1"> <resource name="RAM" quantum="4M"/> <provides> <service name="Gui"/> <service name="Capture"/> <service name="Event"/> </provides> <route> <service name="Report"> <child name="report_rom" /> </service>} append config { <any-service> <parent/> <any-child /> </any-service> </route> <config> <capture/> <event/> <report focus="yes" hover="yes" xray="yes" /> <domain name="pointer" layer="1" content="client" label="no" origin="pointer" /> <domain name="" layer="2" content="client" focus="click" hover="always" /> <policy label_prefix="pointer" domain="pointer"/> <default-policy domain=""/> </config> </start> <start name="pointer" priority="-1"> <resource name="RAM" quantum="2M"/> <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="wm" caps="1000" priority="-1"> <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="Gui"> <child name="nitpicker"/> </service> <service name="Report"> <child name="report_rom"/> </service> <any-service> <parent/> <any-child/> </any-service> </route> </start>} append_if [expr $use_gui] config { <start name="vbox2" priority="-2" caps="1200"> <binary name="} $virtualbox_binary {"/> <resource name="RAM" quantum="448M"/> <config vbox_file="test.vbox" vm_name="TestVM"> <libc stdout="/dev/log" stderr="/dev/log" pipe="/pipe" rtc="/dev/rtc"/> <vfs> <dir name="dev"> <log/> <rtc/>} append_if [expr $use_gui && $use_serial] config { <terminal/>} append_if [expr $use_gui] config { </dir> <dir name="pipe"> <pipe/> </dir> <rom name="test.vbox" /> <rom name="test.iso" /> </vfs> </config> <route> <service name="Nic"> <child name="nic_router"/> </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>} append config { <start name="vbox1" priority="-2" caps="1200"> <binary name="} $virtualbox_binary {"/> <resource name="RAM" quantum="448M"/> <config vbox_file="test.vbox" vm_name="TestVM"> <libc stdout="/dev/log" stderr="/dev/log" pipe="/pipe" rtc="/dev/rtc"/> <vfs> <dir name="dev"> <log/> <rtc/> </dir> <dir name="pipe"> <pipe/> </dir>} append_if [expr $use_serial] config { <dir name="dev"> <terminal/> </dir>} append config { <rom name="test.vbox" /> <rom name="test.iso" /> </vfs> </config> <route> <service name="Nic"> <child name="nic_router"/> </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 exec cp ${genode_dir}/repos/ports/run/test.vbox bin/. set boot_modules { test.iso test.vbox } append boot_modules $virtualbox_binary # platform-specific modules lappend_if [have_spec x86] boot_modules rtc_drv lappend_if [expr $use_top] boot_modules top lappend_if [expr $use_gui] boot_modules report_rom append boot_modules { libiconv.lib.so qemu-usb.lib.so libyuv.lib.so } append_if [expr $use_net] boot_modules { ipxe_nic_drv } append_if [expr $use_net] boot_modules { nic_router } append_if [expr $use_serial] boot_modules { log_terminal } build_boot_image $boot_modules if {[have_include "power_on/qemu"]} { if {[expr $use_gui]} { append qemu_args " -m 2048 " } else { append qemu_args " -m 1024 " } append qemu_args " -cpu phenom " if {[expr $use_usb_qemu]} { append qemu_args " -usbdevice mouse -usbdevice keyboard" } } run_genode_until forever