Running Voonex (Python), Playwight (Node.js), and Firefox simultaneously takes way too much memory. Using the NBD swap prevents hard lockups and crashes in OOM situations, but it makes the machine *incredibly* slow. To avoid needing to push anything into the network swap, I want to try and reduce the memory footprint as much as possible. To that end, we will go back to running just Firefox. To control it, we will use the Marionette protocol. Firefox only allows control via Marionette over the loopback interface. This is hard-coded in the Marionette server, and cannot be changed at runtime. To allow a remote machine (running Voonex) to control it, we need to expose the socket to the network. Fortunately, *systemd* includes a tool for exactly this purpose: `systemd-socket-proxyd`. |
||
---|---|---|
ci | ||
overlay | ||
.gitignore | ||
Makefile | ||
README.md | ||
cmdline.txt | ||
config.txt | ||
mkinitramfs.sh | ||
mkrootfs.sh | ||
prepare.sh | ||
publish.sh | ||
squashfs-exclude.txt |
README.md
Basement Hud Network-Booted OS
Customized Fedora-based operating system distributed as an immutable root filesystem image.
Building
Must run on a Fedora host or privileged container.
Build the root filesystem image:
make rootfs
This will create an _build/rootfs
directory containing the root filesystem
hierarchy. The _build/rootfs/boot
directory contains the necessary files to
boot the system:
efi
: This directory contains the Raspberry Pi firmware filesinitramfs.img
: Early userspace imagevmlinuz
: Kernel imagebasementhud.squashfs
: Root filesystem image
The Raspberry Pi firmware, initramfs image, and kernel image files must be served by a TFTP, while the rootfs image is served by NBD.
Build the initramfs image:
make initramfs