This repository is the starting point for 3rd party developers looking to deploy their applications as containers in the Westermo WeOS operating system.
In order for developers to easily access Westermo specific features it is recommended that your application, just like app-demo, is built on top of NetBox, which is where all such features and patches to any Open Source package are published.
NetBox extends Buildroot to provide a solid build system and recipes for building thousands of open source packages, handling all intricacies of dependency management, cross-compilation etc. All these packages are available for use in both NetBox and app-demo.
The app-demo project is layered on top of NetBox, the same way NetBox is layered on top of Buildroot, using the Buildroot External Tree facility.
Like NetBox, this project supports the following Westermo platforms out of the box, other variants are possible, but require custom setup:
Architecture | Platform |
---|---|
PowerPC (T1023) | Coronet |
ARM Cortex-A9 | Dagger |
Intel/AMD x86_64 | Zero |
aarch64 | Envoy |
The following table list each available application demo, with links to the README of each demo and quick-links to the latest build for each of the supported platforms. The same builds are also available directly from the Actions tab on the GitHub project.
Description | Coronet | Dagger | Zero | Envoy |
---|---|---|---|---|
Backbone App | backbone-coronet | backbone-dagger | backbone-zero | backbone-envoy |
DHCP Boot App | dhcp-boot-coronet | dhcp-boot-dagger | dhcp-boot-zero | dhcp-boot-envoy |
LED/Relay App | led-relay-coronet | led-relay-dagger | led-relay-zero | led-relay-envoy |
The default login credentials for all demo apps are root
without any
password. To enable remote login using SSH, you need to set a password
or configure the Dropbear SSH daemon to allow blank passwords. Another
possibility is to user SSH keys.
Note: Currently the nightly builds and defconfigs available here target only the Coronet, Dagger and Zero platforms. Other platforms will be supported later. For details, see the NetBox project.
The Buildroot Manual is very comprehensive and a great resource for
learning about the build system. In addition, running make help
in the
app-demo root directory will show a summary of the most commonly used
commands.
In order to build a container image, the repository must first be configured. To list the available configuration targets, run
make list-defconfigs
To select, for example, the backbone
demo, run
make backbone_coronet_defconfig
A curses based configuration interface can be summoned with make menuconfig
to select any additional packages to build.
Finally we can build the image using make
. Expect an initial build
to take around 15 minutes on a reasonably modern machine; subsequent
incremental builds are much faster.
Once the build has completed, your application image is available in
output/images/rootfs.squashfs
.
The app-demo project follows the Example layout proposed in the Buildroot manual.
board/demo/${TARGET}
: Customizations for each targetconfigs/
: Default configurationsnetbox/
: Git submodule pointing to the netbox repo which in turn contains a submodule reference to Buildrootoutput/
: All generated artifacts are stored in this herepackage/
: Recipes for building some piece of software, either by downloading a tarball or by referencing a directory insrc/
src/
: Source code for sample applications developed by Westermo
This is an example of how an external Buildroot tree can be set up and
structured, most of it can be changed to better suit the needs of both
the developer and organization, if required. In fact, WeOS makes no
assumptions on the application container even using Buildroot at all;
you are free to use any build system as long as the result is a SquashFS
image containing an executable /sbin/init
which is compatible with the
target architecture.