diff --git a/build/scripts/create-rpi-image.sh b/build/scripts/create-rpi-image.sh index a1fe64b..a3f0b06 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" > "$MNT/cmdline.txt" + echo "console=serial0,115200 console=tty1 kubesolo.data=LABEL=KSOLODATA initcall_debug loglevel=7" > "$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 e1c7d54..de2de6f 100755 --- a/init/lib/20-persistent-mount.sh +++ b/init/lib/20-persistent-mount.sh @@ -84,8 +84,20 @@ if [ ! -b "$KUBESOLO_DATA_DEV" ]; then dmesg 2>/dev/null | grep -i -e 'error' -e 'fail' -e 'unable' | while read -r line; do log_err " $line" done + log_err "--- Full dmesg (last 60 lines) ---" + dmesg 2>/dev/null | tail -60 | while read -r line; do + log_err " $line" + done log_err "=== End diagnostics ===" - return 1 + log_err "" + log_err "Dropping to debug shell in 10 seconds..." + log_err "Run 'dmesg' to see full kernel log." + log_err "Run 'ls /sys/class/block/' to check block devices." + log_err "" + sleep 10 + # Drop to interactive shell instead of returning failure + # (returning 1 with set -e causes kernel panic before emergency_shell) + exec /bin/sh /dev/console 2>&1 fi # Mount data partition (format on first boot if unformatted)