Skip to content

Point to firebreak for rooting - #111

Merged
bboe merged 1 commit into
mainfrom
point-to-firebreak
Oct 12, 2026
Merged

bboe merged 1 commit into
mainfrom
point-to-firebreak

Conversation

@bboe

@bboe bboe commented Oct 12, 2026

Copy link
Copy Markdown
Owner

Rooting moved to firebreak, so overdub stops keeping its own rooting instructions and points to firebreak's. The old script now says what to run instead and runs firebreak with the translated arguments. The old pages and headings stay as pointers, because outside sites still link to them.

🤖 Generated with Claude Code

Rooting moved to firebreak (https://github.com/bboe/firebreak), released
as v0.1.0. Its default target, amonet-biscuit-v1.1.0-bboe, is the rooted
Fire OS 5.5.5.4 with Magisk 17.3 that overdub needs.

deploy/dot_firmware.py becomes a shim, because people still download it
raw from main and older instructions name it. Its docstring says what to
run instead. At run time it prints that, with the translated command,
then maps v1-bboe, v1 and v2 to firebreak's target names and runs
"uvx firebreak@latest" with the same arguments. It returns firebreak's
exit status. It stays one stdlib file for Python 3.9.

Like firebreak, the shim refuses to run as root on POSIX, before it
downloads anything: a root run would leave a root-owned cache.

Without uvx it downloads firebreak.pyz from the latest release into
firebreak's cache. Each download goes to its own temporary file there, so
two runs at once do not collide. It must be a zip with __main__.py before
it is renamed into place, and the temporary file is removed on any
failure. A cut download raises http.client.HTTPException (IncompleteRead,
BadStatusLine), not OSError, so both are caught, as firebreak's cache
does. When the download fails and an earlier firebreak.pyz is in the
cache, the shim says so and runs that copy. Otherwise it says how to run
firebreak by hand and exits 1.

firebreak's own advice names the pyz by its file name only, which fails
from another directory. So when firebreak exits non-zero on the pyz
route, the shim prints the full command it ran, with the cache path.

docs/rooting.md and docs/switching.md become pointer pages. Outside
sites link to them, so each old heading stays, with a link to the
firebreak section that covers it. The README's "Rooting a Dot" section
keeps its heading and points to firebreak's README, keeping only what
firebreak does not say: the setup-mode step, which targets can host
overdub, and the films. In-repo links go straight to firebreak.

The overdub-specific facts from the old rooting page move to the pages
that cover them: why Fire OS 6 cannot host overdub to
docs/constraints.md, and why Magisk 17.3 is enough and the hidden
updater to docs/deployment.md. That page now says both v1 targets
install Magisk 17.3, and that an update leaves the boot script in
magisk.img but stops it running.

docs/pitfalls.md drops what firebreak's docs now carry: the
--write-test layout, the /system stream and sliced routes, gunzip and
the exec-in timings. It keeps the cache-with-no-filesystem symptom and
the adb transfer rule as install.py follows it, and links to
firebreak's docs/rooting.md for the rest.

The release tarball no longer carries dot_firmware.py: rooting is
firebreak's. CI checks the tarball's 3 scripts. The dot-scripts job no
longer runs dot_firmware.py --help, which would now reach the network.
It runs the shim against a uvx that echoes its arguments, and checks the
translated command and the exit status.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@bboe
bboe force-pushed the point-to-firebreak branch from 8b3793f to 329def1 Compare October 12, 2026 06:26
@bboe
bboe merged commit 329def1 into main Oct 12, 2026
5 checks passed
@bboe
bboe deleted the point-to-firebreak branch October 12, 2026 06:51
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant