Update README
This commit is contained in:
parent
81fd2fce98
commit
02f16c0436
77
README.md
77
README.md
|
@ -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
|
||||
|
|
Loading…
Reference in New Issue