26 Commits

Author SHA1 Message Date
382d08e056 add Mesa Vulkan drivers for GPU compute workloads
Enables Vulkan-based GPU acceleration for containerized workloads
like ollama/llama.cpp on Radeon 780M iGPUs without needing ROCm.
2026-03-19 00:14:00 +01:00
91aab1fce6 Remove unused k3s-join script and service
Superseded by k3s-agent.service with static env file approach.
2026-03-01 19:12:04 +01:00
492cc8abbc Add K3s agent setup with NVMe-backed persistent storage
Bind-mount K3s agent data, node identity, and kubelet dirs from
NVMe so container image cache and node registration survive reboots
on the diskless netboot nodes. Includes K3s binary download, agent
systemd service, DHCP hostname resolution, and open-iscsi for
Longhorn iSCSI support.
2026-03-01 19:11:12 +01:00
3f191d8f93 Add NVMe storage auto-setup, sops secrets, fix SSH permissions
- setup-node-storage service auto-partitions NVMe for containerd/longhorn
- Root password encrypted with sops/age, decrypted during build
- Fix SSH host key permissions (0600) so sshd actually starts
- Disable SSH socket activation for reliable boot
- Add OPERATIONS.md with runbook
- Makefile tracks source dependencies
2026-02-06 00:58:38 +01:00
258d1ecc60 Fix netboot: hardcode config values, simplify boot chain
- Hardcode ROOT_URL and OVERLAYROOT in netboot script
- Remove cmdline parsing that was failing silently
- Simplify boot.ipxe to chain to netboot.ipxe
- Add rebuild-initramfs.sh helper script

Resolves kernel panic caused by cmdline parsing issues.
2026-02-05 01:16:41 +01:00
a927b69aad Update initramfs.conf 2026-02-02 01:14:33 +01:00
443380b224 Add fresh iPXE build (2026) to project
- Built from latest iPXE git source
- Fixes UEFI initrd handoff bugs present in old 2019 version
- Add tftp/ sync to Makefile deploy target
- Track ipxe.efi in git
2026-02-02 00:41:44 +01:00
b351696017 Restore explicit iPXE naming for UEFI initrd handoff
- Use --name vmlinuz and --name initrd for explicit image naming
- Use imgargs separately from kernel line
- Use 'boot vmlinuz' explicitly instead of bare 'boot'
- Add imgfree to clear previous images
- Add initrd=initrd to kernel args for EFI stub
2026-02-02 00:32:30 +01:00
a88f347777 Fix iPXE boot: load initrd before kernel, add imgfree
- Load initrd FIRST to address UEFI memory mapping requirements
- Add imgfree to clear previous images before loading
- Put kernel args directly on kernel line instead of using imgargs
- Add break=mountroot for debugging initramfs execution
2026-02-02 00:02:46 +01:00
eaaacc2f68 Fix overlay mount: use separate mount points for squashfs and overlay
The overlay mount was failing because it tried to mount overlay onto /root
while also using /root as the lowerdir source. This is invalid - you cannot
overlay-mount a directory onto itself.

Fix: Mount squashfs to /mnt/squashfs, tmpfs to /mnt/overlay, then mount
overlay onto /root using the squashfs mount as lowerdir.
2026-02-01 15:59:58 +01:00
b7a52c0c37 Switch to HWE kernel and improve boot reliability
- Install linux-image-generic-hwe-24.04 (6.14+) for RTL8125BP XID 689 support
- Enable noble-updates and noble-security repositories in chroot
- Add explicit rdinit=/init and panic=-1 kernel parameters for boot robustness
- Rename CLAUDE.md to AGENTS.md for broader AI assistant coverage
- Document dracut module alternative and verify-image.sh utility
- Clean up initramfs netboot script comments
2026-02-01 15:51:19 +01:00
a9b18b5821 simplified, removed --name etc 2026-02-01 01:00:00 +01:00
b2c1cc6577 Remove cloud-initramfs-rooturl to fix boot failure
Conflicts with custom netboot script that provides essential tmpfs overlay.
cloud-initramfs-rooturl mounts squashfs read-only, but diskless nodes need
writable overlay for /var/log, /tmp, /etc, and runtime state.

Fixes: Can't open blockdev error during boot
2026-01-31 13:26:34 +01:00
95f543b4f4 Fix PAL review findings: documentation accuracy and code quality
- Update CLAUDE.md with complete kernel parameters including boot=netboot
- Remove duplicate wget/curl package declarations in build-image.sh
- Check unsquashfs in both /usr/bin and /usr/sbin in verify-image.sh
- Use consistent $quiet variable expansion in netboot hook functions

All issues identified in zen-opus pre-commit review are now resolved.
2026-01-31 10:55:57 +01:00
d7d0098a5c Add required hook functions to netboot boot script
Initramfs-tools boot scripts must provide hook functions (netboot_top,
netboot_premount, netboot_bottom) and mount wrappers (mount_top, mount_premount,
mount_bottom) for the init script to call them properly.

Without these, the init script doesn't recognize netboot as a valid boot method
and falls back to trying /dev/root, causing "cannot open block device" errors.
2026-01-31 10:43:33 +01:00
8e9a90bfc3 Install squashfs-tools, wget, and curl in chroot for initramfs hooks
The initramfs hooks copy binaries from the chroot environment, so these tools
must be installed there. Without squashfs-tools, unsquashfs is missing from the
initramfs and the netboot script cannot extract the root filesystem.
2026-01-31 10:22:13 +01:00
a4fe05e26a Fix netboot initialization and add documentation tooling
- Add CLAUDE.md with project architecture and build documentation
- Add verify-image.sh script to validate generated netboot images
- Fix boot.ipxe kernel parameters:
  - Add boot=netboot to invoke custom initramfs script
  - Add console=tty0 for VGA output alongside serial console
  - Fix earlyprintk serial specification
- Remove dead symlink creation in build-image.sh (http/latest pointed to non-existent directory)

The boot=netboot parameter is critical - without it, initramfs falls back to local boot
and fails with /dev/root errors. The console changes enable viewing boot messages on
monitor instead of only serial port.
2026-01-31 09:57:56 +01:00
adc92a61b4 Fix initramfs hook integration - copy custom configs before chroot and build with proper mounts 2026-01-30 23:48:30 +01:00
902f00e2b9 Fix file permissions on generated boot artifacts for HTTP serving 2026-01-30 23:31:30 +01:00
18f0f637bd Fix make clean target to safely unmount stray filesystems before deletion 2026-01-30 23:27:57 +01:00
aea6e58f43 Fix build script paths to be relative to script location, enabling builds on any machine 2026-01-30 23:18:39 +01:00
e9954c8ae8 Update .gitignore to exclude http/ and tftp/ directories but keep boot.ipxe configuration 2026-01-30 23:14:05 +01:00
53e5d201b0 Add Makefile for building and deploying netboot images to NAS 2026-01-30 23:12:08 +01:00
0c4a99605a Add netboot infrastructure: custom initramfs hooks, build scripts, iPXE configuration 2026-01-30 23:09:54 +01:00
4790e69113 rewrite based on reference project from github 2026-01-30 22:58:51 +01:00
1e884eec99 scripts 2026-01-30 22:51:37 +01:00