Go to file
2026-03-25 18:05:42 +08:00
2026-03-25 18:05:42 +08:00
2026-03-25 00:24:40 +08:00
2026-03-25 18:05:42 +08:00
2026-03-25 06:29:07 +08:00
2026-03-22 17:56:33 +08:00
2026-03-21 21:23:43 +08:00
2026-03-24 23:58:33 +08:00
2026-03-20 14:55:16 +00:00
2026-03-25 18:05:42 +08:00
2026-03-25 01:15:39 +08:00
2026-03-25 06:29:07 +08:00

monok8s

Kubernetes node firmware (built with Linux) for Mono Gateway Development Kit

https://docs.mono.si/gateway-development-kit/getting-started

DISCLAIMER

USE AT YOUR OWN RISKS. I leverage ChatGPT heavily for this. I am testing them all by myself right now.

Build

Find the latest package versions and update build.env

Then run

make release

Then run, follow the instructions

make cluster-config

Flashing

USB Drive

  1. make release
  2. Format the USB in vfat
  3. Copy out/[RELEASE].img.gz and out/board.itb to your usb drive's root
  4. Run
usb start
usb tree
fatls usb 0:1   # For fat
ext4ls usb 0:1  # For ext4 if you insist
fatload usb 0 0x80000000 board.itb

setenv bootargs "console=ttyS0,115200 earlycon=uart8250,mmio,0x21c0500 root=/dev/ram0 rootwait rw"
bootm 0x80000000
  1. Inside initramfs, run
flash-emmc.sh
  1. If it boots, create the A/B deployment scheme
  • (WORK IN PROGRESS)

tftp (network is required)

  1. Put out/[RELEASE].img.gz and out/board.itb into your ftp server
setenv ipaddr 10.0.0.153
setenv serverip 10.0.0.129
tftp 0x80000000 board.itb

setenv bootargs "console=ttyS0,115200 earlycon=uart8250,mmio,0x21c0500 root=/dev/ram0 rootwait rw"
bootm 0x80000000
  1. Inside initramfs, run
flash-emmc.sh

Making sub stages

make build-base # The image the builds kernel and everything
make kernel     # Builds our kernel from NXP
make initramfs
make itb        # Builds out/board.itb (contains the kernel and the initramfs)

Architecture

  • A/B deployment
  • Read-only OS

Upgrade process

Rough idea

./configure
# - asks for some config for kubelet
# - Join a cluster? Start a cluster?

make release

# Copy the new image to the upgrade-scheduler
kubectl cp -n kube-system upgrade-scheduler:/tmp/upgrade.img

# Upgrade scheduler reads the file that issue a self-reboot
reboot

# uboot to boot into partition B

PENDING

NOTES

The device's dts files are located at here

https://github.com/we-are-mono/OpenWRT-ASK/tree/mono-25.12.0-rc3/target/linux/layerscape/files/arch/arm64/boot/dts/freescale

  • We need both mono-gateway-dk-sdk.dts and mono-gateway-dk.dts since the sdk one includes the non-sdk one.
  • The actual dts being used is the mono-gateway-dk-sdk.dts
Description
Kubernetes image for Mono Gateway Development Kit https://docs.mono.si/gateway-development-kit/getting-started
Readme MIT 446 KiB
Languages
Go 66.7%
Shell 23.1%
Makefile 6%
Dockerfile 4.2%