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