Commit Graph

12 Commits

Author SHA1 Message Date
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
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
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
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
aea6e58f43 Fix build script paths to be relative to script location, enabling builds on any machine 2026-01-30 23:18:39 +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