MysticGSI / mysticgsi
git clone https://github.com/MysticGSI/mysticgsi.git
A tool to build a Generic System Image from (almost) any stock firmware
—
stars, 24h
—
stars, 7 days
+232
stars, 30 days · #1,128
232
★ total
76
forks · 1 open issues
Star history starts 2026-10-20; the chart appears after the second daily snapshot.
LanguageShell
LicenseApache-2.0
Created2026-09-25 (25d ago)
Last push10d ago
Watchers5
OwnerOrganization
Links
README excerpt
# MysticGSI A tool to build a GSI (Generic System Image) from stock Android firmware. Supported firmware: - full OTA zips (`payload.bin`) - fastboot packages - `super.img`, sparse images - `system.new.dat` - Samsung tars - Huawei `UPDATE.APP` - Unisoc `.pac` - LG `.kdz` - Oppo `.ozip` - QFIL packages - Sony `.sin` - Pixel factory images Partitions can be ext4, EROFS or F2FS. ## Setup This project requires Python 3.10+. ### Automatic setup #### macOS / Linux On macOS, install Homebrew and Xcode Command Line Tools first. [code] #### Windows Install Python 3 and Git if you haven't already. Make sure both are added to PATH. We recommend using WinGet: [code] [code] On macOS, Debian/Ubuntu, Arch and Windows, the script installs system packages and creates `.venv`. On NixOS, it checks the development shell. Native image tools and the Apktool JAR are bundled with the repository. ### Manual setup Swap `requirements.txt` for `requirements-dev.txt` if you want the dev tools. The bundled Apktool JAR needs Java; native image tools are under `tools/bin/ / `. macOS [code] Ubuntu / Debian [code] Arch [code] NixOS [code] Windows [code] ## Usage [code] On Windows, run from the repository root: [code] F2FS extraction on Windows needs a local NTFS working directory that allows case sensitivity. Use an up-to-date Python for Windows directory permissions. ### Commands [code] ### Command-line options [code] By default, an image is signed with AOSP's AVB RSA-2048 test key. You can pass `--avb-key /path/to/key.pem` to sign with your own RSA private key. To keep separate system and product partitions: [code] This writes `*-system.img`, `*-product.img`, and images for any other partitions normally merged into system. Partitions already inside system stay there. The ZIP contains each image as ` .img`; `rebuild` keeps this layout. These images require a device that mounts the separate partitions. Example: [code] ## Development See CONTRIBUTING.md before opening a pull request. [code] Patch files of 50 MiB or more are stored xz-compressed (` .xz`) and unpacked during builds. After adding one, run `./tools/assets.py pack` and commit the `.xz` files (or `.xz.000`, `.xz.001`, ... for split archives). `./tools/assets.py status` shows what's packed. ## License Apache License 2.0, see LICENSE. Bundled avbtool is MIT-licensed; see tools/avb/LICENSE. Third-party files under `patches/` have separate terms; see NOTICE.