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
|
[Nix](https://nixos.org/nix/) expressions related to the
|
||||||
[Genode OS framework](https://genode.org).
|
[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
|
# Contributing
|
||||||
|
|
||||||
At the moment every user needs to also act as distro developer, designing how
|
At the moment every user needs to also act as distro developer, designing how
|
||||||
|
|
Loading…
Reference in New Issue