Updater (How It Works)
The updater is a separate tool from the installer.
- Installer: puts Jibo into developer mode by editing
/var/jibo/mode.jsonvia RCM + eMMC writes. - Updater: once you have SSH access, it downloads a JiboOs release and uploads a rootfs overlay to the robot over SFTP.
Implementation: ../jibo_updater.py
High-level flow
-
Query the releases API (Gitea JSON) and pick a release:
- latest (default)
- stable-only (
--stable) - specific tag (
--tag)
-
Download the chosen release archive.
-
Extract it safely (checks for path traversal in archives).
-
Find the
build/folder inside the extracted tree.- You can override with
--build-path.
- You can override with
-
SSH into the Jibo using Paramiko.
-
Ensure
/is writable:- tests with a
touchon/.jibo_rw_test - if needed, runs
mount -o remount,rw /
- tests with a
-
Upload the contents of
build/into/using SFTP.- Directories are created as needed.
- Files are uploaded and chmod is best-effort preserved.
- Symlinks are uploaded as symlinks if possible; otherwise it uploads dereferenced content.
-
Optionally return Jibo to normal mode by changing
/var/jibo/mode.jsonback tonormal. -
Record the applied tag in a local state file so repeated runs can short-circuit.
What “build/” means
Releases are expected to contain a “rootfs overlay” folder named build/.
That directory typically includes paths like:
etc/opt/usr/var/
The updater essentially copies those files to the same locations on the robot.
State file
By default, the updater stores last-applied tag per host in:
../jibo_work/update_state.json
If the state file says the host already has the latest tag, it exits unless you pass --force.
More: 07 - Working Directory + State Files
Safety knobs
- It prompts before upload unless
--yesis passed. --dry-rundownloads/extracts and connects, but does not upload or edit mode.json.
Returning to normal mode
At the end, the updater can switch the robot back to normal mode:
--return-normal(force it)--no-return-normal(never prompt / never change)- otherwise it prompts (unless
--yesis passed)
Note: returning to normal mode can disable the “checkmark/dev” behavior depending on how JiboOs uses mode.json.
CLI reference
See 03 - CLI Arguments for the complete list and examples.