This guide is for contributing to the StartOS. If you are interested in packaging a service for StartOS, visit the service packaging guide. If you are interested in promoting, providing technical support, creating tutorials, or helping in other ways, please visit the Start9 website.
/
├── assets/
├── core/
├── build/
├── debian/
├── web/
├── image-recipe/
├── patch-db
└── system-images/
screenshots for the StartOS README
An API, daemon (startd), CLI (start-cli), and SDK (start-sdk) that together provide the core functionality of StartOS.
Auxiliary files and scripts to include in deployed StartOS images
Maintainer scripts for the StartOS Debian package
Web UIs served under various conditions and used to interact with StartOS APIs.
Scripts for building StartOS images
A diff based data store used to synchronize data between the web interfaces and server.
Docker images that assist with creating backups.
git clone https://github.com/Start9Labs/start-os.git
cd start-os
git submodule update --init --recursive
This project uses GNU Make to build its components. To build any specific component, simply run make <TARGET>
replacing <TARGET>
with the name of the target you'd like to build
PLATFORM
: which platform you would like to build for. Must be one ofx86_64
,x86_64-nonfree
,aarch64
,aarch64-nonfree
,raspberrypi
- NOTE:
nonfree
images are for includingnonfree
firmware packages in the built ISO
- NOTE:
ENVIRONMENT
: a hyphen separated set of feature flags to enabledev
: enables password ssh (INSECURE!) and does not compress frontendsunstable
: enables assertions that will cause errors on unexpected inconsistencies that are undesirable in production use either for performance or reliability reasonsdocker
: usedocker
instead ofpodman
GIT_BRANCH_AS_HASH
: set to1
to use the current git branch name as the git hash so that the project does not need to be rebuilt on each commit
iso
: Create a full.iso
image- Only possible from Debian
- Not available for
PLATFORM=raspberrypi
- Additional Requirements:
img
: Create a full.img
image- Only possible from Debian
- Only available for
PLATFORM=raspberrypi
- Additional Requirements:
format
: Run automatic code formatting for the project- Additional Requirements:
test
: Run automated tests for the project- Additional Requirements:
update
: Deploy the current working project to a device over ssh as if through an over-the-air update- Requires an argument
REMOTE
which is the ssh address of the device, i.e.[email protected]
- Requires an argument
reflash
: Deploy the current working project to a device over ssh as if using a liveiso
image to reflash it- Requires an argument
REMOTE
which is the ssh address of the device, i.e.[email protected]
- Requires an argument
update-overlay
: Deploy the current working project to a device over ssh to the in-memory overlay without restarting it- WARNING: changes will be reverted after the device is rebooted
- WARNING: changes to
init
will not take effect as the device is already initialized - Requires an argument
REMOTE
which is the ssh address of the device, i.e.[email protected]
wormhole
: Deploy thestartbox
to a device using magic-wormhole- When the build it complete will emit a command to paste into the shell of the device to upgrade it
- Additional Requirements:
clean
: Delete all compiled artifacts