Hi,
Is it possible to create a deploy with pause after download and install at shutdown on the device?
I have tried the following
- Add a mender shutdown update service that runs before mender-client at shutdown and run the script
- In the script, use dbus-send to change all states to force_continue
It transitions to ArtifactInstall_Leave, but not to ArtifactReboot_Enter, and the deployment fails.
Is it possible to transition to ArtifactReboot_Enter during shutdown?
mender-shutdown-update.service
[Unit]
Description=Mender shutdown update service
After=mender-client.service
Requires=mender-client.service
[Service]
Type=oneshot
RemainAfterExit=true
ExecStop=/path/to/mender-shutdown-update.sh
[Install]
WantedBy=multi-user.target
mender-shutdown-update.sh (snip)
CONTROL_MAP_PRIORITY="10"
CONTROL_MAP_ACTION_FORCE_CONTINUE="force_continue"
CONTROL_MAP_FORCE_CONTINUE="{\
\"priority\": $CONTROL_MAP_PRIORITY,\
\"states\": { \
\"ArtifactInstall_Enter\": { \
\"action\": \"$CONTROL_MAP_ACTION_FORCE_CONTINUE\"
}, \
\"ArtifactReboot_Enter\": { \
\"action\": \"$CONTROL_MAP_ACTION_FORCE_CONTINUE\" \
}, \
\"ArtifactCommit_Enter\": { \
\"action\": \"$CONTROL_MAP_ACTION_FORCE_CONTINUE\" \
} \
}, \
\"id\": \"$CONTROL_MAP_ID\" \
}"
dbus-send --print-reply --system --dest=io.mender.UpdateManager /io/mender/UpdateManager io.mender.Update1.SetUpdateControlMap string:"${CONTROL_MAP}" >/dev/null 2>&1
# Wait for transition to ArtifactReboot_Enter, but no transition
Execution log
2022-04-20 13:28:11 +0000 UTC info: Received an update control map via D-Bus: { "priority": 10, "states": { "ArtifactInstall_Enter": { "action": "force_continue"
}, "ArtifactReboot_Enter": { "action": "force_continue" }, "ArtifactCommit_Enter": { "action": "force_continue" } }, "id": "*snip*" }
2022-04-20 13:28:11 +0000 UTC info: Forced wake-up from sleep
2022-04-20 13:28:11 +0000 UTC info: State transition: mender-update-control-pause [none] -> mender-update-control [none]
2022-04-20 13:28:11 +0000 UTC info: Forced continue from a control map
2022-04-20 13:28:11 +0000 UTC info: State transition: mender-update-control [none] -> update-install [ArtifactInstall]
2022-04-20 13:28:11 +0000 UTC info: Executing script: ArtifactInstall_Enter_00_UpdateStateFile
2022-04-20 13:28:12 +0000 UTC info: Enabling partition with new image installed to be a boot candidate: 33
2022-04-20 13:28:12 +0000 UTC info: Output (stderr) from command "fw_printenv": ERR: no such variable: mender_check_saveenv_canary
2022-04-20 13:28:12 +0000 UTC info: Output (stderr) from command "fw_printenv": ERR: no such variable: mender_check_saveenv_canary
2022-04-20 13:28:12 +0000 UTC error: error forwarding from client to backend: websocket: close 1006 (abnormal closure): unexpected EOF
2022-04-20 13:28:12 +0000 UTC warning: error while sending close message: write tcp [::1]:43999->[::1]:50562: use of closed network connection
2022-04-20 13:28:12 +0000 UTC info: State transition: update-install [ArtifactInstall] -> mender-update-control-refresh-maps [none]
2022-04-20 13:28:12 +0000 UTC info: Executing script: ArtifactInstall_Leave_80_bl-update
2022-04-20 13:28:15 +0000 UTC info: Output (stdout) from command "/var/lib/mender/scripts/ArtifactInstall_Leave_80_bl-update": Installing NVIDIA bootloader update payload
2022-04-20 13:28:15 +0000 UTC info: Output (stdout) from command "/var/lib/mender/scripts/ArtifactInstall_Leave_80_bl-update": Current boot slot: 0
Processing bpmp-fw_b... [OK]
Processing sce-fw_b... [OK]
Processing cpu-bootloader_b... [OK]
Processing spe-fw_b... [no update needed]
Processing secure-os_b... [OK]
Processing adsp-fw_b... [OK]
Processing BMP_b... [OK]
Processing mts-bootpack_b... [OK]
Processing mts-preboot_b... [no update needed]
Processing sc7_b... [OK]
Processing bpmp-fw-dtb_b... [OK]
Processing bootloader-dtb_b... [OK]
Processing VER_b... [no update needed]
Processing MB1_BCT_b... [no update needed]
Processing kernel_b... [OK]
Processing kernel-dtb_b... [OK]
Processing mb2_b... [no update needed]
Processing BCT... [offset=3584,no update needed]...[offset=16384,no update needed]...[offset=0,no update needed]...[OK]
Processing mb1_b... [no update needed]
Processing mb1... [no update needed]
Slot 1 marked as active for next boot
Successful bootloader update
2022-04-20 13:28:15 +0000 UTC info: Executing script: ArtifactInstall_Leave_99_UpdateStateFile
2022-04-20 13:29:11 +0000 UTC info: Daemon terminated with SIGTERM
Environment
- mender-client: v3.0.0
- board: Jetson TX2
- OS: Yocto
Best Regards,