SkiffOS compiles a lightweight operating system for any Linux-compatible computer.
This is an example of how Skiff can be extended with custom configuration packages. Skiff is added as a submodule, and is instructed to use the parent repo configs directory:
export SKIFF_EXTRA_CONFIGS_PATH=$(pwd)/configs
Then, any extra configuration packages you add in this repo will be available.
To get started:
make help
Alternatively:
source setup.env
cd ./skiffos
make # this will print help!
As a basic example:
export SKIFF_WORKSPACE=pi4
export SKIFF_CONFIG=pi/4,mycustom/device
make configure compile
# flash to sd card
make cmd/pi/common/{format,install}
The example mycustom/device
package has examples of Wi-Fi configurations, SSH
keys, and other common customizations.
Skiff supports modular configuration packages: kernel & buildroot configs, root filesystem overlays, patches, hooks, and other resources.
Layers are named as namespace/name
. For example, a Raspberry Pi 4
configuration would be pi/4
and Docker is apps/docker
.
├── cflags: compiler flags in files
├── buildroot: buildroot configuration fragments
├── buildroot_ext: buildroot extensions (extra packages)
├── buildroot_patches: extra Buildroot global patches
│ ├── <packagename>: patch files for Buildroot <packagename>
│ └── <packagename>/<version>: patches for package version
├── busybox: busybox configuration fragments
├── extensions: extra commands to add to the build system
│ └── Makefile
├── hooks: scripts hooking pre/post build steps
│ ├── post.sh
│ └── pre.sh
├── kernel: kernel configuration fragments
├── kernel_patches: kernel .patch files
├── root_overlay: root overlay files
├── metadata: metadata files
│ ├── commands
│ ├── dependencies
│ ├── description
│ └── unlisted
├── resources: files used by the configuration package
├── scripts: any scripts used by the extensions
├── uboot: u-boot configuration fragments
├── uboot_patches: u-boot .patch files
└── users: additional buildroot user config files
All files are optional.
To add custom users, add files in the "users" dir with the makeuser syntax.