Go to file
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
ci Initial commit 2022-04-04 20:59:32 -05:00
overlay Switch to Openbox 2022-04-04 20:59:34 -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 Initial commit 2022-04-04 20:59:32 -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 Switch to Openbox 2022-04-04 20:59:34 -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