From 6c6940afac85b03466792608dc6c47fcb114db81 Mon Sep 17 00:00:00 2001 From: Adolfo Delorenzo Date: Thu, 12 Feb 2026 20:12:26 -0600 Subject: [PATCH] rpi: add boot diagnostics and remove quiet for debugging Remove 'quiet' from RPi cmdline.txt so kernel probe messages are visible on HDMI. Add comprehensive diagnostics to the data device error path: dmesg for MMC/SDHCI/regulators/firmware, /sys/class/block listing, and error message scanning. This will reveal why zero block devices appear despite all kernel configs being correct. Co-Authored-By: Claude Opus 4.6 --- build/scripts/create-rpi-image.sh | 2 +- init/lib/20-persistent-mount.sh | 28 +++++++++++++++++++++++++--- 2 files changed, 26 insertions(+), 4 deletions(-) diff --git a/build/scripts/create-rpi-image.sh b/build/scripts/create-rpi-image.sh index 2972778..a1fe64b 100755 --- a/build/scripts/create-rpi-image.sh +++ b/build/scripts/create-rpi-image.sh @@ -173,7 +173,7 @@ CFGTXT # cmdline.txt — kernel command line # Note: must be a single line - echo "console=serial0,115200 console=tty1 kubesolo.data=LABEL=KSOLODATA quiet" > "$MNT/cmdline.txt" + echo "console=serial0,115200 console=tty1 kubesolo.data=LABEL=KSOLODATA" > "$MNT/cmdline.txt" # Copy kernel as kernel8.img (RPi 3/4/5 ARM64 convention) cp "$KERNEL" "$MNT/kernel8.img" diff --git a/init/lib/20-persistent-mount.sh b/init/lib/20-persistent-mount.sh index 122af6c..e1c7d54 100755 --- a/init/lib/20-persistent-mount.sh +++ b/init/lib/20-persistent-mount.sh @@ -58,11 +58,33 @@ esac if [ ! -b "$KUBESOLO_DATA_DEV" ]; then log_err "Data device $KUBESOLO_DATA_DEV not found after ${WAIT_SECS}s" - # Show available block devices for debugging - log_err "Available block devices:" - ls -la /dev/mmc* /dev/sd* /dev/vd* 2>/dev/null | while read -r line; do + # Comprehensive diagnostics for block device failure + log_err "=== Block device diagnostics ===" + log_err "--- /dev block devices ---" + ls -la /dev/mmc* /dev/sd* /dev/vd* /dev/nvme* 2>/dev/null | while read -r line; do log_err " $line" done + log_err "--- /sys/class/block (kernel registered) ---" + ls /sys/class/block/ 2>/dev/null | while read -r line; do + log_err " $line" + done + log_err "--- dmesg: MMC/SDHCI/emmc ---" + dmesg 2>/dev/null | grep -i -e mmc -e sdhci -e emmc | while read -r line; do + log_err " $line" + done + log_err "--- dmesg: regulator ---" + dmesg 2>/dev/null | grep -i regulator | while read -r line; do + log_err " $line" + done + log_err "--- dmesg: firmware/mailbox ---" + dmesg 2>/dev/null | grep -i -e 'raspberrypi' -e 'mailbox' -e 'firmware' | while read -r line; do + log_err " $line" + done + log_err "--- dmesg: errors ---" + dmesg 2>/dev/null | grep -i -e 'error' -e 'fail' -e 'unable' | while read -r line; do + log_err " $line" + done + log_err "=== End diagnostics ===" return 1 fi