Checkpoint: netboot debug state before model swap
This commit is contained in:
48
docs/PLAN.md
48
docs/PLAN.md
@@ -58,6 +58,54 @@ Fully unattended network reimage, no per-node physical access:
|
||||
- UniFi MFA blocks API access; DHCP reservations deferred — mDNS
|
||||
(`planck0NN.local`) works across subnets today.
|
||||
|
||||
## Current debug state (paused here, swap to stronger model)
|
||||
|
||||
First live test on planck020 (EEPROM install-mode staged, works — confirmed
|
||||
via `vcgencmd bootloader_config` showing BOOT_ORDER=0xf142, TFTP_IP,
|
||||
TFTP_PREFIX=1):
|
||||
|
||||
- **TFTP chain works**: bootloader + firmware fetch firmware, config.txt,
|
||||
cmdline.txt, kernel8.img, and the initramfs (`initramfs8` via
|
||||
`auto_initramfs=1` — the explicit `initramfs <file> followkernel` syntax
|
||||
did NOT work on this bootloader; use auto_initramfs + file named
|
||||
`initramfs8`). All transfers show DONE on the Synology TFTP server
|
||||
(`journalctl -u planck-tftp`). "STALLED" log lines are harmless — they're
|
||||
duplicate/speculative client sessions that never get ACKed.
|
||||
- **Custom TFTP server gotcha**: firmware requires `tsize` in the OACK —
|
||||
without it transfers stall. Fixed in
|
||||
`configs/planck-tftp-server.py` (deployed version on Synology is current).
|
||||
- **Kernel boots** (node pings ~25s after reboot with a DHCP-assigned IP —
|
||||
init reached DHCP), but **no HTTP requests ever arrive** at the
|
||||
planck-netboot helper (no `/events/` GETs, no template GET, journal
|
||||
always empty). Then the node reboots into the OLD OS (~2-3 min cycle).
|
||||
So initramfs `/init` is either crashing before/inside wget, or HTTP egress
|
||||
from the initramfs fails silently, and the test-mode `poweroff -f` acts
|
||||
like a reboot (node returns on old OS — actually likely USB fallback after
|
||||
a failed netboot pass).
|
||||
- planck020 EEPROM is still in install-mode; every reboot retries netboot
|
||||
then falls back to old OS. To restore it: stage revert via
|
||||
`rpi-eeprom-config --config revert.boot.conf` flow from the old OS (see
|
||||
EEPROM configs in git history / regenerate from
|
||||
`/lib/firmware/raspberrypi/bootloader/stable/pieeprom-2023-01-11.bin`).
|
||||
|
||||
### Next steps for whoever continues
|
||||
|
||||
1. Get console visibility on the netbooted node: add per-log-line HTTP
|
||||
reporting in `configs/installer-init.sh` (each `log()` also does
|
||||
`wget -q -O /dev/null "$HTTP/events/<serial>-<msg>"` once DHCP is up),
|
||||
plus flush a tmpfs log file after DHCP. Alternatively boot with
|
||||
`console=serial0,115200` and attach a USB-serial cable to planck020.
|
||||
2. Suspects for the silent init death: busybox `wget` HTTP behavior in
|
||||
initramfs (try `wget -O-` verbose, test with numeric IP + port 8000 —
|
||||
verified reachable from other nodes), or udhcpc script path issues.
|
||||
Consider testing initramfs content standalone (gunzip + cpio listing).
|
||||
3. Template tarball + all services are already on the Synology
|
||||
(`/volume1/plancknetboot/`): rootfs.tar (sha256 e37837bee03ae2b3...),
|
||||
tftp/ (firmware, initramfs8, auto_initramfs config), HTTP helper :8000,
|
||||
TFTP :69. Credentials for Synology SSH are session-only (not stored).
|
||||
4. Once one node completes end-to-end, the rest is a loop: stage
|
||||
install-mode EEPROM per node + reboot (script this in `scripts/`).
|
||||
|
||||
## Phases
|
||||
|
||||
- [x] Phase 0 — Access + inventory (SSH keys on all 20, docs/)
|
||||
|
||||
Reference in New Issue
Block a user