Add boot descriptions to README
This commit is contained in:
parent
0afe6af54d
commit
003d63b820
44
README.md
44
README.md
|
@ -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
|
||||
|
|
Loading…
Reference in New Issue