2
0
Fork 0

Add boot descriptions to README

This commit is contained in:
Emery Hemingway 2020-01-27 11:46:41 +01:00
parent 0afe6af54d
commit 003d63b820
1 changed files with 44 additions and 0 deletions

View File

@ -11,6 +11,50 @@
[Nix](https://nixos.org/nix/) expressions related to the
[Genode OS framework](https://genode.org).
# System description format
The high-level interface to system building are boot descriptions. These Dhall
documents describe the configuration of an [Init](https://genode.org/documentation/genode-foundations/19.05/system_configuration/The_init_component.html)
instance and a store of ROM (Read-Only Memory) modules. These description can be
used to build firmware-like binary images or merged and nested within other
descriptions. In theory these descriptions can arrange file-systems, but those
functions are missing.
The description schema is documented as code:
https://git.sr.ht/~ehmry/dhall-genode/tree/master/Boot/package.dhall
# Package manifests
Software packages are described my manifest documents, which can be used to
build the ROM map in boot descriptions. This manifests can be automatically
generated and made available within Nix builds and dev-shells via environmental
variables. This may seem awkward, but consider that this is to support building
firmware systems without a $PATH or even a file-system.
An example manifest:
```dhall
{ bin =
{ init = { mapKey = "init", mapValue = "/nix/store/.../bin/init" }
, vfs = { mapKey = "vfs", mapValue = "/nix/store/.../bin/vfs" }
}
, lib =
{ vfs =
{ mapKey = "vfs.lib.so", mapValue = "/nix/store/.../lib/vfs.lib.so" }
}
}
```
Referenced in a boot configuration:
```dhall
let m = env:MANIFEST -- take the manifest from the shell environment
let rom = Genode.Boot.toRomPaths [ m.bin.init, m.bin.vfs, m.lib.vfs ]
in { config = Genode.Init.default, rom = rom } : Genode.Boot.Type
```
# Contributing
At the moment every user needs to also act as distro developer, designing how