Documentation
On this page

Subsystems

Dual boot (splitboot)

Android and iOS on one phone: the carve, the boot menu and the way back.

Hardware

No hardware of its own: it is a layout of the UFS’s userdata partition and a boot menu in mtkloader.

Driver

mapple_splitboot holds the tools and the installer’s dual-boot verbs. mapple-install split-carve carves xnusys (split_size, 22 GiB on spaced) off the end of userdata, split-chain keeps the boot image in xnusys’s saved area and chains the loader into boot, and split-uninstall gives the partition back and the boot image back. After the first write that matters, a failure puts back what was written. The loader’s boot menu (splitmenu.h, -DSPLIT_MENU=1) chooses Android or iOS at each boot. The root and its layout are described in Root image and layouts.

Device tree

None.

Boot-arguments

mp_menu_default, mp_menu_secs and mp_menu_pmic in the catalogue, read from the boot-args record.

User space

None.

Status

Not part of release 1: it is not in the default checkout (repo init ... -g default,splitboot). The tools and the installer have been tested on file images on the Mac, and the menu on the phone (run 37).

Known issues

  • None recorded. The split zip has two passes: after the carve, the root is flashed with fastboot into xnusys, and the zip is run again.

Source files

installer/split.c, tools/gpt-carve.py, tools/chainboot.py of mapple_splitboot at 406b03a; mtk/loader/splitmenu.h of mapple_loader at 2aa5786; installer/update-binary of mapple_build at f7431bb.

Applies to realme 8i (spaced), after release 1 · Updated 15 November 2026