Force the jailbreak to detect Signed System Volume (SSV) as being required on
the system. This option provides compatibility with previous version of palera1n
that incorrectly detect SSV as being required on tvOS 18.2 and above. When using
this option with
.Flf,-fakefs,
the jailbreak will behave as if fakefs is required, which allows the user to boot
into fakefs possibly created by previous versions of palera1n, or remove it if
the
.Fl-force-revert
option is specified as well.
(It is technically possible to setup fakefs using this option as well, but this
is not a supported scenario)
.ItFll,-rootless
Proceed in rootless mode. This option is only supported on iOS/iPadOS.
.ItFlf,-rootful
Proceed in rootful mode. Despite its name, this applies to both full, partial fakefs, as well as realfs, and it still applies even when trying to force revert.
.ItFlc,-setup-fakefs
When used with
.Flf,-rootful,
creates the new APFS volume required for rootful. Will fail if one already exists.
This flag is supported on iOS/iPadOS 15.0 or later and tvOS 18.2 or later, as they
require fakefs for rootful.
.ItFlB,-setup-fakefs-partial
Like
.Flc,-setup-fakefs
but the size of the created fakefs is smaller at the expense of having unwritable
parts in rarely-written paths. When jailbreaking 16 GB devices, this option must be used
when setting up fakefs for rootful, as they do not have enough storage for full fakefs.
This flag is supported on iOS/iPadOS 15.0 or later and tvOS 18.2 or later, as they
require fakefs for rootful.
.ItFls,-safe-mode
Enter safe mode. An alert will be displayed on iOS/iPadOS/tvOS. Jailbreak daemons nor early boot executable files
specified (see
.SyFILES
section below) will be executed. The loader app and the built in SSH server can still be used,
as well as any jailbreak-specific apps you have installed.
.ItFlT,-telnetd
Enable the TELNET daemon on port 46, all interfaces. Please note that there is no authentication and is therefore insecure.
.ItFlV,-verbose-boot
Boots the device in verbose mode, allowing boot logs to be seen.
.ItFlp,-early-exit
Exit after booting into a clean PongoOS shell.
.ItFle,-extra-bootargsArbootarguments
Specify custom XNU kernel command line. Additionally, the
.Emwdt=-1
argument is used during fakefs setup.
.ItFlk,-override-pongoArpongofile
Override PongoOS image. The raw image, named
.EmPongo.bin
when built, should be used. PongoOS 2.6.0 or later is required.
.ItFlK,-override-kpfArKPFfile
Override the kernel patchfinder PongoOS module. The module is required to support setting
root filesystem in paleinfo with
.Emrootfs
command. If in doubt, use
.Syhttps://github.com/palera1n/PongoOS
iOS15 branch or your own fork of it.
.ItFlo,-override-overlayAroverlayfile
Specify the path to a custom overlay file, which is then mounted onto /cores/binpack
during boot, if the default ramdisk is used. The default ramdisk expects the overlay
to contain a folder named
.EmApplications
at the root of it, as well as a dmg named
.Emloader.dmg
at the root of it. Otherwise, the device will not boot. It is also expected that it
contains a shell, a ssh server, and various command line utilities.
.ItFlr,-override-ramdiskArramdiskfile
Override the ramdisk. At a very minimum, it should contain
.Em/cores/ploosh
as well as a fake dyld
.Em/usr/lib/dyld
where the logic is expected to be in.
.ItFld,-debug-logging
Enable debug logging. Supports up to 5 levels of verbosity, with 5 being the most verbose.
.ItFln,-no-colors
Disable colors on the command line.
.ItFlq,-quick
When used with
.Fl-tui,
or
.Fl-gui,
the interfaces will automate the process of entering DFU mode, without needing to press the interface buttons for every step of the process.
.Pp
This variable is available only in builds compiled with
.CmWITH_GUI
or
.CmWITH_TUI
support enabled.
.El
.ShENVIRONMENTALVARIABLES
.Bl-tag-width-indent
.ItEvRA1N_ABORT_TIMEOUT
Set a custom timeout value (0 to 999999999) for the exploit abort timer.
While the default value is sufficient for standard platforms (Intel or Apple Silicon),
this variable allows timing adjustments on specific environments such as Linux (AMD)
or Raspberry Pi (ARM64), where the exploit may fail due to platform-specific USB
stack behavior.
.Pp
E.g. Raspberry Pi 5:
.EmRA1N_ABORT_TIMEOUT=1000000
.Pp
This variable is available only in builds compiled with
.CmWITH_CIDERRAIN
support enabled.
.ItEvRA1N_CLI
Equivalent to using the
.Fl-cli
option.
.ItEvRA1N_GUI
Equivalent to using the
.Fl-gui
option.
.Pp
This variable is available only in builds compiled with
.CmWITH_GUI
support enabled.
.ItEvRA1N_TUI
Equivalent to using the
.Fl-tui
option.
.Pp
This variable is available only in builds compiled with
.CmWITH_TUI
support enabled.
.ItEvRA1N_DARK_BLOCKCHAIN
Equivalent to using the
.Fl-dark-blockchain
option.
.ItEvRA1N_FORCE_REVERT
Equivalent to using the
.Fl-force-revert
option.
.ItEvRA1N_FORCE_ENABLE_SSV
Equivalent to using the
.Fl-force-enable-ssv
option.
.ItEvRA1N_ROOTLESS
Equivalent to using the
.Fll,-rootless
option.
.ItEvRA1N_ROOTFUL
Equivalent to using the
.Flf,-rootful
option.
.ItEvRA1N_SETUP_FAKEFS
Equivalent to using the
.Flc,-setup-fakefs
option.
.ItEvRA1N_SETUP_FAKEFS_PARTIAL
Equivalent to using the
.FlB,-setup-fakefs-partial
option.
.ItEvRA1N_SAFE_MODE
Equivalent to using the
.Fls,-safe-mode
option.
.ItEvRA1N_TELNETD
Equivalent to using the
.FlT,-telnetd
option.
.ItEvRA1N_VERBOSE_BOOT
Equivalent to using the
.FlV,-verbose-boot
option.
.ItEvRA1N_EARLY_EXIT
Equivalent to using the
.Flp,-early-exit
option.
.ItEvRA1N_EXTRA_BOOTARGS
Equivalent to using the
.Fle,-extra-bootargs
option.
.ItEvRA1N_OVERRIDE_PONGO
Equivalent to using the
.Flk,-override-pongo
option.
.ItEvRA1N_OVERRIDE_KPF
Equivalent to using the
.FlK,-override-kpf
option.
.ItEvRA1N_OVERRIDE_OVERLAY
Equivalent to using the
.Flo,-override-overlay
option.
.ItEvRA1N_OVERRIDE_RAMDISK
Equivalent to using the
.Flr,-override-ramdisk
option.
.ItEvRA1N_DEBUG_LOGGING
Equivalent to using the
.Fld,-debug-logging
option. Supports up to 5 levels of verbosity, with 5 being the most verbose.
e.g. to enable level 3 debug logging, use
.EmRA1N_DEBUG_LOGGING=3
.ItEvRA1N_NO_COLORS
Equivalent to using the
.Fln,-no-colors
option.
.ItEvRA1N_QUICK
Equivalent to using the
.Flq,-quick
option.
.Pp
This variable is available only in builds compiled with
.CmWITH_GUI
or
.CmWITH_TUI
support enabled.
.El
.ShEXAMPLES
To (re-)jailbreak in rootless mode:
.Pp
.Dl"palera1n -l"
.Pp
To setup fakefs for rootful mode:
.Pp
.Dl"palera1n -fc"
.Pp
After the device has rebooted into recovery mode, follow the following example.
.Pp
To re-jailbreak in rootful mode:
.Pp
.Dl"palera1n -f"
.Pp
To remove the jailbreak in rootful mode:
.Pp
.Dl"palera1n --force-revert -f"
.Pp
To remove the jailbreak in rootless mode:
.Pp
.Dl"palera1n --force-revert"
.Pp
To verbose boot in rootful mode:
.Pp
.Dl"palera1n -Vf"
.Pp
To create a partial fakefs with bind mounts:
.Pp
.Dl"palera1n -Bf"
.Pp
.El
.ShCAVEATS
.Pp
.Em-v
is not a real XNU boot argument. It is interpreted by iBoot. However, since XNU
boot arguments are set in PongoOS, which is ran after iBoot has ran, it does nothing.
To verbose boot, use the
.FlV,-verbose-boot
option when jailbreaking.
.Pp
Fakefs takes up around 5-10 GB of storage, and takes up to 10 minutes to setup.
.Pp
iOS 15.0 requires DER entitlements, and iOS 15.1 requires hash agility in code signatures.
As a result, binaries with the old code signature format need to be resigned with a recent
version of the Procursus fork of
.Xrldid1
before they can be ran on a device jailbroken with
.Nm
\[char46]
.Pp
When using rootful mode, the
.Flf,-rootful
flag must be specified at all times. It does not matter whether you want to create fakefs,
create partial fakefs, rejailbreak or remove jailbreak.
.Pp
Due to a stock bug, using the
.FlV,-verbose-boot
option might cause some versions for tvOS to crash and not boot.
.Pp
Offical Apple USB-C cables as well as some other USB-C cables cannot be used to enter DFU mode.
USB-A cable with male USB-C to female USB-A adapter works fine.
.ShPOSTINSTALLATION(iOS/iPadOS)
The palera1n loader app will take up to 1 minute to appear on the homescreen after the
device has booted. If it does not appear, you can try using the shortcut: