Admin Example
The admin example demonstrates a minimal system that runs the admin component on KOS. The admin component is an Elixir app that coordinates on-device administration activities, such as system restart and upgrade. The admin component also acts as a client to a Kry10 Server.
The admin example is entirely implemented by using the KOS Poukai manifest layer, requiring no further augmentations. In particular, the KOS Poukai apps present in this system are:
admin_ex: an Erlang BEAM VM running an Elixir app that coordinates admin activities (such as restart and upgrade) and acts as a client to a Kry10 Server.key_store: server that provides a way to store secrets (e.g private keys) that applications can request at runtime.ethernet: contains an ethernet driver and implements theethernetprotocol to provide ethernet access to other apps on the device.tunnel: a secure tunnel to a host machine (typically be managed by the Studio or Fleet Server).rng_server: a CSPRNG server, providing an interface that allows applications to request arbitrary length streams of random bytes.log_server: a system-wide logging service. The server provides an interface for applications to emit semi-structured log strings with an associated log level i.e.INFO,WARN,ERRORetc.self_test: an app that performs a series of tests on startup.
This system demonstrates a good project starting point that can then be further modified as needed.
Build Instructions
Launch a KOS development shell for the target platform:
$ kos-tool env -p <am335x|qemu-arm-virt|imx8mm-evk|portenta-x8|rpi4>
Checkout the admin example sources:
$ mix kos.docs.example admin_example
$ cd admin_example
Build the admin example system:
$ mix kos.build
Proceed to run the system using the Mix kos.run utility:
$ kos-run
You will see the admin component start up with output similar to the following:
| 0.693| Poukai.admin |
| 0.693| Poukai.admin | ---- Poukai.admin ----
| 0.732| Poukai.admin | beam tunnel connection established:
| 0.732| Poukai.admin | IP addr: 192.168.2.6
| 0.733| Poukai.admin | Netmask: 255.255.255.0
| 0.733| Poukai.admin | Gateway: 192.168.2.100
| 2.931| Poukai.admin |
| 2.931| Poukai.admin | 08:21:57.837 [info] Starting connection with the Kry10 server on ws://192.168.2.100:4000/cnc
| 2.952| Poukai.admin |
| 2.952| Poukai.admin | 08:21:57.870 [info] starting KosSel4 server
| 2.962| Poukai.admin |
| 2.962| Poukai.admin | 08:21:57.879 [info] starting KosMsg server
| 2.993| Poukai.admin |
| 2.993| Poukai.admin | 08:21:57.909 [warning] Can't start KosTrace. Reason: Tracing Unavailable.
| 2.995| Poukai.admin |
| 2.995| Poukai.admin | 08:21:57.910 [info] Starting KosChannels server
| 3.026| Poukai.admin |
| 3.026| Poukai.admin | 08:21:57.941 [info] admin_ex's public key: 5paBAr9Cv+h6mZxus78c4BxBgIfyFLAdudrPn6xwR+Q=
| 3.033| Poukai.admin |
| 3.033| Poukai.admin | 08:21:57.950 [info] Starting SerialStream server
| 3.033| Poukai.admin | 08:23:21.065 [info] Connection has been lost. Reason: {:error, :timeout}. Attempting to reconnect
Follow the Connecting a device to a Kry10 Server guide to connect it to a server so that you can interact with the example through your browser.