update_fw.sh: явная диагностика crash-loop klipper-mcu после прошивки host

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
2026-09-03 05:24:27 +03:00
parent a78afa3ec4
commit 2209c0e1f9
+12 -2
View File
@@ -207,8 +207,18 @@ if want host; then
HOST_PID_OLD=$(systemctl show -p ExecMainPID --value klipper-mcu) HOST_PID_OLD=$(systemctl show -p ExecMainPID --value klipper-mcu)
make -C "$KLIPPER" flash KCONFIG_CONFIG="$BUILD_TMP/$HOST_CFG" make -C "$KLIPPER" flash KCONFIG_CONFIG="$BUILD_TMP/$HOST_CFG"
[ "$(stat -c %Y "$HOST_BIN")" -ge "$START_TS" ] || die "$HOST_BIN не обновился" [ "$(stat -c %Y "$HOST_BIN")" -ge "$START_TS" ] || die "$HOST_BIN не обновился"
host_restarted() { [ "$(systemctl show -p ExecMainPID --value klipper-mcu)" != "$HOST_PID_OLD" ] && [ -e /tmp/klipper_host_mcu ]; } host_restarted() {
wait_for 10 "klipper-mcu не перезапустился (PID $HOST_PID_OLD)" host_restarted [ "$(systemctl show -p ExecMainPID --value klipper-mcu)" != "$HOST_PID_OLD" ] \
&& [ "$(systemctl show -p SubState --value klipper-mcu)" = "running" ] && [ -e /tmp/klipper_host_mcu ]
}
if ! wait_for 10 "klipper-mcu не перезапустился (PID $HOST_PID_OLD)" host_restarted; then
journalctl -u klipper-mcu -n 8 --no-pager -o cat || true
die "klipper-mcu не работает после прошивки (см. journalctl -u klipper-mcu)"
fi
# Убедиться, что процесс не падает в цикле перезапуска (Restart=always)
sleep 3
[ "$(systemctl show -p SubState --value klipper-mcu)" = "running" ] \
|| { journalctl -u klipper-mcu -n 8 --no-pager -o cat || true; die "klipper-mcu перезапускается в цикле"; }
echo "klipper-mcu перезапущен (PID $HOST_PID_OLD -> $(systemctl show -p ExecMainPID --value klipper-mcu)), $HOST_BIN обновлён" echo "klipper-mcu перезапущен (PID $HOST_PID_OLD -> $(systemctl show -p ExecMainPID --value klipper-mcu)), $HOST_BIN обновлён"
fi fi