mirror of
https://github.com/genodelabs/genode.git
synced 2025-01-03 04:26:45 +00:00
66290ea46d
This patch introduces support for stacked file systems alongside new glue for accessing file-system implementations provided via Genode's new file-system-session interface. Using stacked file systems, an arbitrary number of file systems (such as tar archives or file systems implemented as separate Genode components) can be composed to form one merged virtual file system. An example is given via the 'ports/run/noux_bash.run' script. This run script creates a virtual file system out of multiple tar archives each containing the content of a particular GNU package. In addition, one 'ram_fs' is mounted, which enables Noux to perform write operations. This way, the shell output can be redirected to a file, or files can be saved in VIM. Fixes #103.
77 lines
1.9 KiB
Plaintext
77 lines
1.9 KiB
Plaintext
if {![have_spec x86]} {
|
|
puts "\nNoux is supported on the x86 architecture only\n"
|
|
exit 0
|
|
}
|
|
if {[have_spec linux]} {
|
|
puts "\nLinux not supported because of missing UART driver\n"
|
|
exit 0
|
|
}
|
|
|
|
build "core init drivers/timer drivers/uart noux lib/libc_noux test/noux_fork"
|
|
|
|
# strip coreutils binaries and create tar archive
|
|
exec tar cfv bin/noux_fork.tar -h -C bin test-noux_fork
|
|
|
|
create_boot_directory
|
|
|
|
install_config {
|
|
<config verbose="yes">
|
|
<parent-provides>
|
|
<service name="ROM"/>
|
|
<service name="LOG"/>
|
|
<service name="CAP"/>
|
|
<service name="RAM"/>
|
|
<service name="RM"/>
|
|
<service name="CPU"/>
|
|
<service name="PD"/>
|
|
<service name="IRQ"/>
|
|
<service name="IO_MEM"/>
|
|
<service name="IO_PORT"/>
|
|
<service name="SIGNAL"/>
|
|
</parent-provides>
|
|
<default-route>
|
|
<any-service> <any-child/> <parent/> </any-service>
|
|
</default-route>
|
|
<start name="timer">
|
|
<resource name="RAM" quantum="1M"/>
|
|
<provides><service name="Timer"/></provides>
|
|
</start>
|
|
<start name="uart_drv">
|
|
<resource name="RAM" quantum="1M"/>
|
|
<provides><service name="Terminal"/></provides>
|
|
<config>
|
|
<policy label="noux" uart="1"/>
|
|
</config>
|
|
</start>
|
|
<start name="noux">
|
|
<resource name="RAM" quantum="1G"/>
|
|
<config>
|
|
<fstab> <tar name="noux_fork.tar" /> </fstab>
|
|
<start name="test-noux_fork"> </start>
|
|
</config>
|
|
</start>
|
|
</config>
|
|
}
|
|
|
|
build_boot_image {
|
|
core init timer uart_drv ld.lib.so noux libc.lib.so
|
|
libc_noux.lib.so noux_fork.tar
|
|
}
|
|
|
|
#
|
|
# Redirect the output of Noux via the virtual serial port 1 into a file to be
|
|
# dumped after the successful completion of the test.
|
|
#
|
|
set noux_output_file "noux_output.log"
|
|
|
|
append qemu_args " -nographic"
|
|
append qemu_args " -serial mon:stdio"
|
|
append qemu_args " -serial file:$noux_output_file"
|
|
|
|
run_genode_until "child.*exited.*\n" 20
|
|
|
|
puts "[exec cat $noux_output_file]"
|
|
|
|
exec rm bin/noux_fork.tar
|
|
exec rm $noux_output_file
|