mirror of
https://github.com/genodelabs/genode.git
synced 2025-01-04 04:54:12 +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.
149 lines
3.6 KiB
Plaintext
149 lines
3.6 KiB
Plaintext
if {![have_spec x86]} {
|
|
puts "\nNoux is supported on the x86 architecture only\n"
|
|
exit 0
|
|
}
|
|
|
|
#
|
|
# Uncomment the following line when working on the VIM source code. Otherwise,
|
|
# VIM may get recompiled, yet it does not get reinstalled into 'bin/vim'.
|
|
#
|
|
#exec rm -rf noux-pkg/vim bin/vim
|
|
|
|
set build_components {
|
|
core init drivers/timer noux lib/libc_noux
|
|
drivers/framebuffer drivers/pci drivers/input
|
|
server/terminal
|
|
}
|
|
lappend build_components noux-pkg/vim
|
|
lappend build_components test/libports/ncurses
|
|
|
|
build $build_components
|
|
|
|
exec tar cfv bin/vim.tar -h -C bin/vim .
|
|
|
|
create_boot_directory
|
|
|
|
append 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_PORT"/>
|
|
<service name="IO_MEM"/>
|
|
<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> }
|
|
|
|
append_if [have_spec sdl] config {
|
|
<start name="fb_sdl">
|
|
<resource name="RAM" quantum="4M"/>
|
|
<provides>
|
|
<service name="Input"/>
|
|
<service name="Framebuffer"/>
|
|
</provides>
|
|
</start>}
|
|
|
|
append_if [have_spec pci] config {
|
|
<start name="pci_drv">
|
|
<resource name="RAM" quantum="1M"/>
|
|
<provides><service name="PCI"/></provides>
|
|
</start>}
|
|
|
|
append_if [have_spec vesa] config {
|
|
<start name="vesa_drv">
|
|
<resource name="RAM" quantum="1M"/>
|
|
<provides><service name="Framebuffer"/></provides>
|
|
</start>}
|
|
|
|
append_if [have_spec pl11x] config {
|
|
<start name="pl11x_drv">
|
|
<resource name="RAM" quantum="2M"/>
|
|
<provides><service name="Framebuffer"/></provides>
|
|
</start>}
|
|
|
|
append_if [have_spec ps2] config {
|
|
<start name="ps2_drv">
|
|
<resource name="RAM" quantum="1M"/>
|
|
<provides><service name="Input"/></provides>
|
|
</start> }
|
|
|
|
append config {
|
|
<start name="terminal">
|
|
<resource name="RAM" quantum="2M"/>
|
|
<provides><service name="Terminal"/></provides>
|
|
<config>
|
|
<keyboard layout="de"/>
|
|
</config>
|
|
</start>
|
|
<start name="noux">
|
|
<resource name="RAM" quantum="1G"/>
|
|
<config>
|
|
<fstab> <tar name="vim.tar" /> </fstab>
|
|
<start name="/bin/vim">
|
|
<env name="TERM" value="linux" />
|
|
|
|
<!-- Deactivate the loading of plugins. Otherwise, vim will
|
|
attempt to use a sub shell for pattern matching -->
|
|
<arg value="--noplugin" />
|
|
|
|
<!-- Do not use swap file. Any attempt to create of would
|
|
fail because we are on a read-only file system -->
|
|
<arg value="-n" />
|
|
|
|
<!-- Use the nocompatible mode, which is much nicer than
|
|
the plain vi mode -->
|
|
<arg value="-N" />
|
|
|
|
<!-- Permanently display status bar -->
|
|
<arg value="--cmd" />
|
|
<arg value="set laststatus=2" />
|
|
|
|
<!-- Enable highlighted search results -->
|
|
<arg value="--cmd" />
|
|
<arg value="set hls" />
|
|
|
|
</start>
|
|
</config>
|
|
</start>
|
|
</config>
|
|
}
|
|
|
|
install_config $config
|
|
|
|
|
|
#
|
|
# Boot modules
|
|
#
|
|
|
|
# generic modules
|
|
set boot_modules {
|
|
core init timer ld.lib.so noux terminal
|
|
libc.lib.so libm.lib.so libc_noux.lib.so ncurses.lib.so
|
|
vim.tar
|
|
}
|
|
|
|
# platform-specific modules
|
|
lappend_if [have_spec linux] boot_modules fb_sdl
|
|
lappend_if [have_spec pci] boot_modules pci_drv
|
|
lappend_if [have_spec vesa] boot_modules vesa_drv
|
|
lappend_if [have_spec ps2] boot_modules ps2_drv
|
|
lappend_if [have_spec pl11x] boot_modules pl11x_drv
|
|
|
|
build_boot_image $boot_modules
|
|
|
|
run_genode_until forever
|
|
|
|
exec rm bin/vim.tar
|