Commit Graph

9 Commits (14d0cdcec18deb8ae4a955d2854c24ddd6bb1cff)

Author SHA1 Message Date
Dustin 14d0cdcec1 Configure swap space on NBD volume
Using zram to compress pages did not provide enough memory to run
Firefox, Node, and Python for an extended period of time.  Here's hoping
swap-on-NBD will be fast and reliable enough to work.

Note that systemd's default behavior with respect to swap areas is to
enable them all rather early in the boot process, before the network is
fully configured.  As such, we have to use the *noauto* flag to disable
the default dependencies and add our own in a later target.
2022-04-04 20:59:34 -05:00
Dustin 1e96609ebc Install zram-generator
Try to maximize memory efficiency using using an in-memory block device
with on-the-fly compression as swap space.
2022-04-04 20:59:34 -05:00
Dustin 1737604441 rsyslog: Send logs to Graylog
Ideally, we would use the log server address provided by DHCP, but for
now, we will just hard-code the destination.
2022-04-04 20:59:34 -05:00
Dustin a3c2afc3fa Install Playwright to control Firefox
[Playwright] is a cross-browser automation framework, intended for
automating browser-based GUI application tests.  It also works as a
general remote-control tool for automating basically anything having to
do with a browser.

Playwright requires a special Firefox binary that it manages itself.  To
avoid downloading and installing Playwright and Firefox, and thus
storing them in memory, we need them to be already available in the
rootfs image.  Since I want the control software to be updated easily,
without rebooting the machine, I decided to separate it into its own
project, [Voonex].  A short shell script to install/update and run it is
launched by the systemd user instance.

[Playwright]: https://playwright.dev/
[Voonex]: https://git.pyrocufflink.blue/dustin/voonex
2022-04-04 20:59:34 -05:00
Dustin 4ec3117b3c cmdline: enable serial console
While developing, it will be nice to have the serial console available
for troubleshooting, especially for issues that prevent network/SSH from
working correctly.  I've temporarily connected a USB-TTL console cable
to *serial0* to control the serial console of the HUD machine.
2022-04-04 20:59:34 -05:00
Dustin 5c19a75603 publish: Upload rootfs image atomically
Using `--no-W` (disable whole file transfer) saves some time and
bandwidth when uploading the root filesystem image, but it has the
negative side-effect of overwriting the destination file in place.  If
any NBD clients are currently running using the image as their root
filesystem, they are likely to experience SquashFS corruption errors, as
the filesystem driver does not expect the underlying data to change once
it has been mounted.  As such, we have to use the default file transfer
method to create a new file and atomically replace the old file once the
transfer is complete.  The original file will be unlinked and will
eventually be deleted once no clients are using it.
2022-04-04 20:59:34 -05:00
Dustin 95019d20d7 config: disable HDMI overscan
I don't even know why HDMI overscan exists, and I especially don't
understand why it is ON BY DEFAULT on a Raspberry Pi.
2022-04-04 20:59:34 -05:00
Dustin 37ef563b5d Switch to Openbox
Matchbox Window Manager, being designed for mobile devices, does not
handle multiple monitors well.  It manages the monitors together as one
giant screen, which will make it extremely difficult to manage separate
Firefox windows on each screen.  Openbox is almost as lightweight as
Matchbox, but it works significantly better for this use case.
2022-04-04 20:59:34 -05:00
Dustin 2437e6e467 Initial commit 2022-04-04 20:59:32 -05:00