89 lines
3.0 KiB
Markdown
89 lines
3.0 KiB
Markdown
|
|
# Installer (How It Works)
|
|||
|
|
|
|||
|
|
The repo has a “CLI installer” and an optional GUI wrapper that launches the same Python tools.
|
|||
|
|
|
|||
|
|
The basic mod logic lives in `../jibo_automod.py`
|
|||
|
|
|
|||
|
|
## What the installer actually does
|
|||
|
|
|
|||
|
|
The tool is automating the exact same high-level steps you do manually in [[1. Get your environment ready!]]
|
|||
|
|
|
|||
|
|
1. Build ShofEL (`shofel2_t124`) if it isn’t built yet.
|
|||
|
|
2. Put the Jibo into NVIDIA Tegra RCM mode (USB device `0955:7740`).
|
|||
|
|
3. Read eMMC contents using `EMMC_READ`.
|
|||
|
|
4. Find the `/var` partition (usually GPT partition #5, ~500MB).
|
|||
|
|
5. Modify `/var/jibo/mode.json` from `normal` to `int-developer`.
|
|||
|
|
6. Write the modified `/var` partition back using `EMMC_WRITE`.
|
|||
|
|
7. Optionally verify by reading back and comparing hashes.
|
|||
|
|
|
|||
|
|
After that, Jibo boots to a checkmark and SSH should work:
|
|||
|
|
|
|||
|
|
- `ssh root@<jibo-ip>`
|
|||
|
|
- password: `jibo`
|
|||
|
|
|
|||
|
|
## Launchers (what runs what)
|
|||
|
|
|
|||
|
|
### Linux launcher
|
|||
|
|
|
|||
|
|
- `../jibo_automod.sh` is a Bash launcher
|
|||
|
|
- It does a light dependency check, then prompts:
|
|||
|
|
- CLI installer (recommended)
|
|||
|
|
- GUI installer (experimental)
|
|||
|
|
|
|||
|
|
In CLI mode it runs:
|
|||
|
|
|
|||
|
|
- `python3 ../jibo_automod.py <args>`
|
|||
|
|
|
|||
|
|
In GUI mode it:
|
|||
|
|
|
|||
|
|
- creates `../.venv/` if missing
|
|||
|
|
- installs GUI deps from `../JiboTools/JiboTools/requirements.txt`
|
|||
|
|
- launches `../JiboTools/JiboTools/main_panel.py`
|
|||
|
|
|
|||
|
|
### Windows launcher
|
|||
|
|
|
|||
|
|
- `../jibo_automod.bat` just runs `python ../jibo_automod.py <args>`
|
|||
|
|
- It warns if you’re not running as Administrator.
|
|||
|
|
|
|||
|
|
## How it edits mode.json (important detail)
|
|||
|
|
|
|||
|
|
`../jibo_automod.py` tries multiple strategies to edit `mode.json` inside the `/var` filesystem image:
|
|||
|
|
|
|||
|
|
1. **Linux mount (preferred on Linux)**
|
|||
|
|
- Mounts `var_partition.bin` as a loop device.
|
|||
|
|
- Edits `jibo/mode.json` (or a couple fallback paths).
|
|||
|
|
- Unmounts.
|
|||
|
|
|
|||
|
|
2. **debugfs (preferred for Windows if available)**
|
|||
|
|
- Uses `debugfs` from `e2fsprogs` to read and rewrite the file inside the ext filesystem image without mounting.
|
|||
|
|
- This is the safest option on Windows if you can install it (see [[05 - Windows Support]]).
|
|||
|
|
|
|||
|
|
3. **Raw in-place patch (last resort)**
|
|||
|
|
- Searches the binary image for known JSON string patterns like `{"mode": "normal"}`.
|
|||
|
|
- Overwrites bytes in-place without changing file size.
|
|||
|
|
- **If the replacement would require growing the data and there is no safe padding, it refuses.**
|
|||
|
|
|
|||
|
|
>[!note]
|
|||
|
|
Because this is a real filesystem image, the mount/debugfs approaches are more reliable than raw patching.
|
|||
|
|
|
|||
|
|
## Installer modes
|
|||
|
|
|
|||
|
|
The CLI tool supports three main workflows:
|
|||
|
|
|
|||
|
|
- **Full mod** (default): full eMMC dump, then extract/modify/write `/var`.
|
|||
|
|
- **Dump-only**: only dumps eMMC (no modifications).
|
|||
|
|
- **Mode-json-only** (“fast mode”): reads only GPT + `/var` and patch-writes only changed sectors.
|
|||
|
|
|
|||
|
|
Details and flags: [[03 - CLI Arguments]]
|
|||
|
|
|
|||
|
|
## Where output goes
|
|||
|
|
|
|||
|
|
By default, the tool uses `../jibo_work/` for working files:
|
|||
|
|
|
|||
|
|
- `jibo_full_dump.bin` (full mode)
|
|||
|
|
- `gpt_dump.bin` (fast mode)
|
|||
|
|
- `var_partition_original.bin` / `var_partition.bin`
|
|||
|
|
- backups, verification reads, and patch chunks
|
|||
|
|
|
|||
|
|
More: [[07 - Working Directory + State Files]]
|