genode/repos/ports/run/noux_fs.run
Josef Söntgen 1d6d6966a1 rump: add knob to set memlimit
By now, rump would query its available RAM quota to determine the
memory limit minus some RAM reserved for Genode meta-data. This
does not work when the VFS rump plugin is used as the available
quota belongs to the VFS server. In this case the memlimit should
be set by specifing the RAM in the plugin's config, e.g.:

! <vfs>
!   <rump fs="ext2fs" ram="64M" writeabl="yes"/>
! </vfs>

Fixes #2783.
2018-05-03 15:31:23 +02:00

130 lines
3.3 KiB
Plaintext

set genext2fs [check_installed genext2fs]
set e2fsck [check_installed e2fsck]
create_boot_directory
import_from_depot genodelabs/src/[base_src] \
genodelabs/src/init \
genodelabs/src/platform_drv \
genodelabs/src/report_rom \
genodelabs/src/acpi_drv \
genodelabs/src/ahci_drv \
genodelabs/src/vfs \
genodelabs/src/rump \
genodelabs/src/log_terminal \
genodelabs/src/noux \
genodelabs/src/libc \
genodelabs/src/posix \
genodelabs/src/bash \
genodelabs/src/coreutils
source ${genode_dir}/repos/base/run/platform_drv.inc
set config {
<config>
<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="TRACE"/>
</parent-provides>
<default-route>
<any-service> <parent/> <any-child/> </any-service>
</default-route>
<default caps="100"/>
<resource name="RAM" preserve="2M"/>
<start name="timer">
<resource name="RAM" quantum="1M"/>
<provides><service name="Timer"/></provides>
</start> }
append_platform_drv_config
append config {
<start name="report_rom">
<resource name="RAM" quantum="1M"/>
<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="yes">
<report ports="yes"/>
<default-policy device="0" writeable="yes" />
</config>
<route>
<service name="Report"> <child name="report_rom"/> </service>
<any-service> <parent/> <any-child/> </any-service>
</route>
</start>
<start name="vfs" caps="400">
<resource name="RAM" quantum="100M" />
<provides> <service name="File_system"/> </provides>
<config>
<vfs> <rump fs="ext2fs" ram="64M" writeable="yes"/> </vfs>
<default-policy root="/" writeable="yes"/>
</config>
</start>
<start name="log_terminal">
<resource name="RAM" quantum="10M" />
<provides> <service name="Terminal"/> </provides>
</start>
<start name="noux" caps="500">
<binary name="noux"/>
<resource name="RAM" quantum="100M" />
<config>
<fstab>
<inline name=".bash_profile">
rm /rw/build.conf
sleep 2
ls /rw
</inline>
<tar name="bash.tar" />
<tar name="coreutils.tar" />
<dir name="dev"> <zero/> <null/> </dir>
<dir name="rw"> <fs/> </dir>
</fstab>
<start name="/bin/bash">
<env name="TERM" value="screen" />
<env name="PS1" value="fs:$PWD> " />
<env name="HOME" value="/" />
<arg value="--login"/>
</start>
</config>
</start>
</config> }
install_config $config
append boot_modules { }
build_boot_image $boot_modules
#
# Build EXT2-file-system image
#
catch { exec $genext2fs -d etc -b 16384 bin/ext2.raw }
append qemu_args " -nographic -device ahci,id=ahci -boot d "
append qemu_args " -drive id=disk,file=bin/ext2.raw,format=raw,if=none -device ide-hd,drive=disk,bus=ahci.0 "
run_genode_until {\[init -> log_terminal\].*} 30
spawn $e2fsck -y bin/ext2.raw
set fsck_id $spawn_id
run_genode_until "840/16384 blocks" 5 $fsck_id
exec rm -f bin/ext2.raw