chore(arm64): clean up debug logging + document Phase 3 status
Some checks failed
CI / Go Tests (push) Successful in 1m46s
CI / Shellcheck (push) Failing after 38s
CI / Build Go Binaries (amd64, linux, linux-amd64) (push) Failing after 1m19s
CI / Build Go Binaries (arm64, linux, linux-arm64) (push) Failing after 1m16s

Remove [KSOLO-DBG] per-step echos from init.sh. The /dev/console redirect
stays — it's load-bearing for early-boot visibility on QEMU virt.

Add docs/arm64-status.md capturing the end-of-Phase-3 state:
  - What works (full boot through 14 stages, KubeSolo + containerd start)
  - Known limitations of the dev setup (QEMU TCG perf, /dev/vda4 hardcode,
    busybox-static gaps)
  - What's needed to ship v0.3 ARM64 as production-ready

Real-hardware validation (Graviton, Ampere, or similar) is the next gating
step before we can call ARM64 generic done.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-05-14 16:19:16 -06:00
parent 1de36289a5
commit de10de0ef3
2 changed files with 128 additions and 15 deletions

View File

@@ -14,11 +14,10 @@
# kubesolo.cloudinit=<path> Path to cloud-init config
# kubesolo.flags=<flags> Extra flags for KubeSolo binary
# Redirect ALL output to /dev/console for visibility during early boot.
# This is temporary v0.3 ARM64 debugging — revert when generic ARM64 is stable.
# Route early boot output to /dev/console — before switch_root the kernel may
# not have a controlling tty, and some stages echo to stderr expecting it to
# reach the serial console. This is a no-op once the staged init proper starts.
exec >/dev/console 2>&1
echo "[KSOLO-DBG] init.sh PID=$$ shell=$(readlink -f /proc/$$/exe 2>/dev/null || echo unknown)"
echo "[KSOLO-DBG] uname=$(uname -a 2>&1)"
set -e
@@ -28,22 +27,11 @@ set -e
# set up container root filesystems. To fix this, we copy the rootfs to a
# tmpfs and switch_root to it. The sentinel file prevents infinite loops.
if [ ! -f /etc/.switched_root ]; then
echo "[KSOLO-DBG] entering switch_root block"
echo "[KSOLO-DBG] mount proc..."
mount -t proc proc /proc 2>/dev/null || true
echo "[KSOLO-DBG] mount proc exit=$?"
echo "[KSOLO-DBG] mount sysfs..."
mount -t sysfs sysfs /sys 2>/dev/null || true
echo "[KSOLO-DBG] mount sysfs exit=$?"
echo "[KSOLO-DBG] mount devtmpfs..."
mount -t devtmpfs devtmpfs /dev 2>/dev/null || true
echo "[KSOLO-DBG] mount devtmpfs exit=$?"
echo "[KSOLO-DBG] mkdir /mnt/newroot..."
mkdir -p /mnt/newroot
echo "[KSOLO-DBG] mkdir /mnt/newroot exit=$?"
echo "[KSOLO-DBG] mount tmpfs /mnt/newroot..."
mount -t tmpfs -o size=400M,mode=755 tmpfs /mnt/newroot
echo "[KSOLO-DBG] mount tmpfs exit=$?"
echo "[init] Copying rootfs to tmpfs..." >&2
# Copy each top-level directory explicitly (BusyBox cp -ax on rootfs is broken)
for d in bin sbin usr lib lib64 etc var opt; do