Go to file
Dustin e055500476 Drop Playwright, run Firefox Marionette
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`.
2022-04-05 17:58:19 -05:00
ci Install Playwright to control Firefox 2022-04-04 20:59:34 -05:00
overlay Drop Playwright, run Firefox Marionette 2022-04-05 17:58:19 -05:00
.gitignore Initial commit 2022-04-04 20:59:32 -05:00
Makefile Initial commit 2022-04-04 20:59:32 -05:00
README.md Initial commit 2022-04-04 20:59:32 -05:00
cmdline.txt cmdline: enable serial console 2022-04-04 20:59:34 -05:00
config.txt config: disable HDMI overscan 2022-04-04 20:59:34 -05:00
mkinitramfs.sh Initial commit 2022-04-04 20:59:32 -05:00
mkrootfs.sh Drop Playwright, run Firefox Marionette 2022-04-05 17:58:19 -05:00
prepare.sh Initial commit 2022-04-04 20:59:32 -05:00
publish.sh publish: Upload rootfs image atomically 2022-04-04 20:59:34 -05:00
squashfs-exclude.txt Initial commit 2022-04-04 20:59:32 -05:00

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 files
  • initramfs.img: Early userspace image
  • vmlinuz: Kernel image
  • basementhud.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