Jump to content

Apple iPhone 8 (apple-iphone10,1)

From postmarketOS Wiki
Apple iPhone 8
iPhone 8
iPhone 8
Manufacturer Apple
Name iPhone 8
Codename apple-iphone10,1
Released 2017
Type handset
Hardware
Chipset Apple A11 Bionic
CPU 2.39 GHz hexa-core 64-bit
GPU Custom Tri-Core Apple GPU
Display 750x1334 (326 ppi) Retina IPS LCD
Storage 64GB, 128GB, 256GB
Memory 2GB
Architecture aarch64
Software
Original software
The software and version the device was shipped with.
iOS 11
Extended version
The most recent supported version from the manufacturer.
iOS 16.7.11
Mainline
Instead of a Linux kernel fork, it is possible to run (Close to) Mainline.
no

Contributors

Users owning this device


Mainline

A mainline fork for this device is available here with further instructions here. Still needs to be tested and ported to postmarketOS.

Booting a modified PostmarketOS Initramfs

Required files

Instructions

Building things

This section assumes you're on a linux system with all dependencies installed. (Possible on CachyOS as of 30. June, 2025.)

Linux
# Get the Kernel Config
wget https://raw.githubusercontent.com/HoolockLinux/docs/refs/heads/master/config_16k
mv config_16k .config

# With GCC:
make -j$(nproc) ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- Image.gz dtbs

# With CLANG:
make -j$(nproc) ARCH=arm64 LLVM=1 Image.gz dtbs
pongoterm
# Get code
wget https://github.com/checkra1n/PongoOS/raw/iOS15/scripts/pongoterm.c

# Make sure to install libusb-1.0
gcc pongoterm.c -DUSE_LIBUSB -Os -lusb-1.0 -o pongoterm

Creating a m1n1 blob

cat m1n1.bin <(echo 'chosen.bootargs=loglevel=7 pmos.nosplash')  \
	<path to>/*.dtb \
	<path to>/Image.gz  \
	<path to>/initramfs.new.gz  > m1n1-linux.bin

Booting it

Booting PongoOS

Firstly, Enter DFU mode. This can be done using Palera1n.

palera1n -Dl
Sending and booting the Linux, initramfs images
printf '/send <path to>/m1n1-linux.bin\nbootm\n' | sudo <path to>/pongoterm

What do to now?

Currently, not much is possible.

Accessing the terminal

telnet 172.16.42.1 23

Unpacking and repacking the initramfs

You'd want to do this to add more software / modify the filesystem.

# Set up working directory
mkdir initramfs
mv initramfs.gz initramfs/
cd initramfs/

# Unpack the initramfs
zcat initramfs.gz | sudo cpio -iv --make-directories

# Remove the residue
rm initramfs.gz

# Do your modifications here!
# E.G. sudo mv $(which neowofetch) bin/neowofetch

# Re-pack it!
find . | sudo cpio -ov --format=newc | gzip -c -1 > initramfs.gz

At this point, you can re-make the m1n1 blob and re-boot your iPhone 8 and you'll use the new initramfs.