Replace use of ram_fs by VFS server

Issue #3734
This commit is contained in:
Norman Feske
2020-04-20 14:00:57 +02:00
parent f0c4fc1e22
commit f14cc2edab
28 changed files with 178 additions and 120 deletions

View File

@@ -5,5 +5,6 @@ _/src/libssl
_/src/libgetdns
_/src/libcrypto
_/src/posix
_/src/vfs
_/src/vfs_lxip
_/src/vfs_jitterentropy

View File

@@ -84,6 +84,7 @@ listen_addresses:
<rom label="stubby"/>
<rom label="vfs_jitterentropy.lib.so"/>
<rom label="lxip.lib.so"/>
<rom label="vfs.lib.so"/>
<rom label="vfs_lxip.lib.so"/>
</content>

View File

@@ -82,8 +82,8 @@ append_if $use_nic_bridge packages " [depot_user]/src/nic_bridge "
append_if $use_nic_router packages " [depot_user]/src/nic_router "
append_if $use_usb_driver packages " [depot_user]/src/platform_drv "
append_if $use_usb_driver packages " [depot_user]/src/usb_drv "
append_if $use_wifi_driver packages " [depot_user]/src/ram_fs "
append_if $use_wifi_driver packages " [depot_user]/src/fs_rom "
append_if $use_wifi_driver packages " [depot_user]/src/vfs_import "
append_if $use_wifi_driver packages " [depot_user]/src/report_rom "
append_if $use_wifi_driver packages " [depot_user]/src/wifi_drv "
append_if $use_wifi_driver packages " [depot_user]/src/libcrypto "
@@ -141,18 +141,21 @@ if { $use_wifi_driver } {
</start>
<start name="config_fs">
<binary name="ram_fs"/>
<binary name="vfs"/>
<resource name="RAM" quantum="4M"/>
<provides> <service name="File_system"/> </provides>
<config>
<policy label_prefix="config_rom" root="/"/>
<content>
<inline name="wifi_config">
<vfs>
<ram/>
<import>
<inline name="wifi_config">
<wifi_config connected_scan_interval="0" scan_interval="10" rfkill="no" verbose="no" verbose_state="no">}
append config "<network ssid=\"$wifi_ssid\" protection=\"WPA2\" passphrase=\"$wifi_psk\"/>"
append config { </wifi_config>
</inline>
</content>
</inline>
</import>
</vfs>
<policy label_prefix="config_rom" root="/"/>
</config>
</start>

View File

@@ -1,5 +1,10 @@
assert_spec x86
if {[have_spec linux]} {
puts "Platform is unsupported."
exit 0
}
create_boot_directory
proc current_pkg { pkg } { return $pkg/[_current_depot_archive_version pkg $pkg] }
@@ -8,7 +13,6 @@ import_from_depot [depot_user]/src/[base_src] \
[depot_user]/pkg/[drivers_nic_pkg] \
[depot_user]/src/report_rom \
[depot_user]/src/fs_rom \
[depot_user]/src/ram_fs \
[depot_user]/src/vfs \
[depot_user]/src/init \
[depot_user]/src/rtc_drv \
@@ -105,8 +109,10 @@ install_config {
<start name="ram_fs">
<resource name="RAM" quantum="8M"/>
<binary name="vfs"/>
<provides> <service name="File_system"/> </provides>
<config>
<vfs> <ram/> </vfs>
<default-policy root="/" writeable="yes"/>
</config>
</start>

View File

@@ -19,7 +19,7 @@ set build_components {
drivers/usb
server/log_terminal
server/fs_rom
server/ram_fs
server/vfs lib/vfs/import
server/report_rom
app/usb_report_filter
virtualbox5
@@ -73,26 +73,29 @@ append config {
</start>
<start name="usb_config_fs" priority="-1">
<binary name="ram_fs"/>
<binary name="vfs"/>
<resource name="RAM" quantum="1M"/>
<provides><service name="File_system"/></provides>
<config verbose="yes">
<content>
<inline name="usb_drv.config">
<vfs>
<ram/>
<import>
<inline name="usb_drv.config">
<config uhci="yes" ehci="yes" xhci="yes">
<raw>
<report devices="yes"/>
</raw>
</config>
</inline>
<inline name="usb_report_filter.config">
</inline>
<inline name="usb_report_filter.config">
<config>
<!-- USB device whitelist -->
<client label="virtualbox"/>
<device vendor_id="0x03eb" product_id="0x204d"/> <!-- 'Pro Micro' test device -->
</config>
</inline>
</content>
</inline>
</import>
</vfs>
<policy label_prefix="usb_report_filter" root="/" writeable="yes" />
<policy label_prefix="usb_config_rom" root="/"/>
</config>
@@ -250,12 +253,12 @@ set boot_modules {
usb_drv
usb_report_filter
fs_rom
ram_fs
vfs vfs.lib.so vfs_import.lib.so
report_rom
virtualbox5-nova
usb_hid.iso
vm_genode_usb_hid.vbox
ld.lib.so libc.lib.so vfs.lib.so libm.lib.so libc_pipe.lib.so
ld.lib.so libc.lib.so libm.lib.so libc_pipe.lib.so
libiconv.lib.so stdcxx.lib.so
qemu-usb.lib.so
}

View File

@@ -103,9 +103,9 @@ catch { exec dd if=/dev/urandom of=bin/test.bin bs=4096 count=8160 }
#
set build_components {
server/input_merger
server/ram_fs server/report_rom server/fs_rom server/vfs
server/report_rom server/fs_rom server/vfs
server/tcp_terminal drivers/nic
lib/vfs/lwip lib/vfs/pipe
lib/vfs/lwip lib/vfs/pipe lib/vfs/import
}
#
@@ -115,10 +115,10 @@ foreach pkg {bash coreutils} {
lappend_if [expr ![file exists bin/$pkg]] build_components noux-pkg/$pkg }
set boot_modules {
ram_fs vfs fs_rom
vfs fs_rom
posix.lib.so bash.tar coreutils.tar
tcp_terminal vfs_lwip.lib.so vfs_pipe.lib.so ipxe_nic_drv report_rom
input_merger
tcp_terminal vfs_lwip.lib.so vfs_pipe.lib.so vfs_import.lib.so
ipxe_nic_drv report_rom input_merger
test.bin template.bat
}
@@ -145,23 +145,27 @@ set config_of_app {
</start>
<start name="ram_fs_from" priority="-1">
<binary name="ram_fs"/>
<binary name="vfs"/>
<resource name="RAM" quantum="64M"/>
<provides><service name="File_system"/></provides>
<config>
<content>
<rom name="test.bin"/>
<rom name="template.bat"/>
</content>
<vfs>
<ram/>
<import>
<rom name="test.bin"/>
<rom name="template.bat"/>
</import>
</vfs>
<default-policy root="/" writeable="no"/>
</config>
</start>
<start name="ram_fs_to" priority="-1">
<binary name="ram_fs"/>
<binary name="vfs"/>
<resource name="RAM" quantum="64M"/>
<provides><service name="File_system"/></provides>
<config>
<vfs> <ram/> </vfs>
<default-policy root="/" writeable="yes"/>
</config>
</start>

View File

@@ -44,7 +44,7 @@ lappend_if [expr $use_ps2] build_components drivers/input
lappend_if [expr $use_usb] build_components drivers/usb
lappend_if [expr $use_usb] build_components app/usb_report_filter
lappend_if [have_spec x86] build_components drivers/rtc
lappend_if [expr $use_ram_fs || $use_usb] build_components server/ram_fs
lappend_if [expr $use_ram_fs || $use_usb] build_components lib/vfs/import
lappend_if [expr $use_cpu_load] build_components app/trace_subject_reporter
lappend_if [expr $use_cpu_load] build_components app/cpu_load_display
lappend_if [expr $use_cpu_load] build_components app/top
@@ -157,21 +157,26 @@ append_if [expr $use_rumpfs] config {
</start>}
append_if [expr $use_ram_fs] config {
<start name="ram_fs" priority="-1" caps="1800">}
<start name="ram_fs" priority="-1" caps="1800">
<binary name="vfs"/>}
append_if [expr $use_ram_fs] config "
<resource name=\"RAM\" quantum=\"[expr $use_vms * 8 * 128]M\"/>"
append_if [expr $use_ram_fs] config {
<provides><service name="File_system"/></provides>
<config>
<content>}
<vfs>
<ram/>
<import>}
for { set i 1} { $i <= ${use_vms} } { incr i} {
append_if [expr $use_ram_fs] config "
<dir name=\"ram${i}\">
<rom name=\"${overlay_image}\"/>
</dir>"
<dir name=\"ram${i}\">
<rom name=\"${overlay_image}\"/>
</dir>"
}
append_if [expr $use_ram_fs] config {
</content>
</import>
</vfs>
<!-- constrain sessions according to their labels -->}
for { set i 1} { $i <= ${use_vms} } { incr i} {
append_if [expr $use_ram_fs] config "
@@ -251,20 +256,22 @@ append_if [expr $use_cpu_load] config {
append_if [expr $use_usb] config {
<start name="usb_config_fs" priority="-1">
<binary name="ram_fs"/>
<resource name="RAM" quantum="1M"/>
<binary name="vfs"/>
<resource name="RAM" quantum="2M"/>
<provides><service name="File_system"/></provides>
<config verbose="yes">
<content>
<inline name="usb_drv.config">
<vfs>
<ram/>
<import>
<inline name="usb_drv.config">
<config uhci="yes" ohci="yes" ehci="yes" xhci="yes">
<hid/>
<raw>
<report devices="yes"/>
</raw>
</config>
</inline>
<inline name="usb_report_filter.config">
</inline>
<inline name="usb_report_filter.config">
<config>
<!-- USB device whitelist -->
<client label="vbox1"/>
@@ -288,8 +295,9 @@ append_if [expr $use_usb] config {
<device vendor_id="0x0984" product_id="0x0066"/> <!-- lenovo DVDRW -->
<device vendor_id="0x174c" product_id="0x5106"/> <!-- delock SATA -->
</config>
</inline>
</content>
</inline>
</import>
</vfs>
<policy label_prefix="usb_report_filter" root="/" writeable="yes"/>
<policy label_prefix="usb_config_rom" root="/"/>
</config>
@@ -374,7 +382,7 @@ append config {
install_config $config
append boot_modules {
part_block ahci_drv fs_rom
part_block ahci_drv fs_rom vfs
libc.lib.so vfs.lib.so libm.lib.so
libc_pipe.lib.so
libiconv.lib.so stdcxx.lib.so
@@ -384,10 +392,9 @@ append boot_modules {
lappend_if [expr $use_rumpfs] boot_modules rump.lib.so
lappend_if [expr $use_rumpfs] boot_modules rump_fs.lib.so
lappend_if [expr $use_rumpfs] boot_modules vfs_rump.lib.so
lappend_if [expr $use_rumpfs] boot_modules vfs
lappend_if [expr $use_serial] boot_modules log_terminal
lappend_if [expr $use_vbox5] boot_modules $virtualbox5_binary
lappend_if [expr $use_ram_fs || $use_usb] boot_modules ram_fs
lappend_if [expr $use_ram_fs || $use_usb] boot_modules vfs_import.lib.so
lappend_if [expr $use_ram_fs && !$use_overlay_from_disk] boot_modules $overlay_image
lappend_if [expr $use_cpu_load] boot_modules trace_subject_reporter
lappend_if [expr $use_cpu_load] boot_modules cpu_load_display