2
0
Fork 0

Update README

This commit is contained in:
Ehmry - 2020-04-08 13:52:49 +05:30
parent 81fd2fce98
commit 02f16c0436
1 changed files with 23 additions and 54 deletions

View File

@ -11,54 +11,9 @@
[Nix](https://nixos.org/nix/) expressions related to the
[Genode OS framework](https://genode.org).
# Packaging
**IRC:** irc://oftc.net/#genodepkgs
Packaging is done using standard Nixpkgs methods, a `stdenv` is available for
cross-compilation. See [Solo5](./packages/solo5/default.nix) as an example.
# 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
```
**Mailing List:** https://lists.sr.ht/~ehmry/genodepkgs
# Contributing
@ -74,7 +29,7 @@ The worksites at the moment are:
comprehensive single document early, we should be able to refactor and prune
the internals faster.
- Testing framework for simple and multi-machine tests.
- Port tests to the NixOS test harness.
- Patching standard Nixpkgs packages via an overlay. Workflow and tooling
needs to be explored for building emulated UNIX environments.
@ -85,6 +40,26 @@ The worksites at the moment are:
- Configuration validation via a service routing prover.
# Packaging
Packaging is done using standard Nixpkgs methods, a `stdenv` is available for
cross-compilation. See [Solo5](./packages/solo5/default.nix) as an example.
# 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
# Nix Flakes
This repository is structured as a Nix flake, which is an experimental extension
@ -167,12 +142,6 @@ multicore machines. The Nix flake is prepared for continuous builds with a
[Hydra](https://nixos.org/hydra/), but only the experimental flakes capable
Hydra.
## C3D2 Hydra
A publicly available Hydra is provided by [CCC Dresden](https://c3d2.de) at
https://server7.hq.c3d2.de/. The machine is only reachable over IPv6 and
therefore inaccessible to SculptOS.
# Testing
Tests are performed using QEMU and a test driver similiar to what is used by