|
|
|
|
@@ -58,12 +58,46 @@ 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
|
|
|
|
|
return 1
|
|
|
|
|
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 "--- Full dmesg (last 60 lines) ---"
|
|
|
|
|
dmesg 2>/dev/null | tail -60 | while read -r line; do
|
|
|
|
|
log_err " $line"
|
|
|
|
|
done
|
|
|
|
|
log_err "=== End diagnostics ==="
|
|
|
|
|
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 >/dev/console 2>&1
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
# Mount data partition (format on first boot if unformatted)
|
|
|
|
|
|