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. |
||
---|---|---|
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