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