Depends on linux-kernel >= 4.16 bash >= 4 util-linux dnsmasq p7zip curl file nfs-kernel-server ncurses-bin Dirs /bootcode/[id]/id /bootcode/[id]/name /bootcode/[id]/bootcode.bin /images/current_id /images/[id]/id /images/[id]/name /images/[id]/bootfs /images/[id]/rootfs /nodes/current_id /nodes/[id]/id /nodes/[id]/name /nodes/[id]/serial /nodes/[id]/options /nodes/[id]/image -> /images/[id] /nodes/[id]/bootfs -> rootfs/boot /nodes/[id]/rootfs_ro -> /images/[id]/rootfs /nodes/[id]/rootfs_rw /nodes/[id]/rootfs_work /nodes/[id]/rootfs (overlay lower=image/rootfs,upper=rootfs_rw,work=rootfs_work rootfs) /tftp/bootcode.bin -> /bootcode/[id]/bootcode.bin /tftp/[serial] -> /nodes/[id]/bootfs CLI bootcode (only required for rpi < 4) bootcode get <img_id> bootcode rm bootcode ls bootcode set bootcode rename images image get image rm image ls image rename nodes node create [img_id] node rm node ls node rename node setimg <img_id> node attach node detach node option add node option del node option show nfs nfs start nfs stop nfs restart nfs status nfs clients nfs endpoints dnsmasq dnsmasq start dnsmasq stop dnsmasq restart dnsmasq status dnsmasq range [ip] /etc/default/dnsmasq ENABLED=1 DNSMASQ_OPTS="-p0" /etc/dnsmasq.conf dhcp-range=10.211.55.255,proxy log-dhcp enable-tftp tftp-root=/var/lib/kpi/tftp pxe-service=0,"Raspberry Pi Boot"