Instructions to boot Linux on A7-A11 Apple devices.
Excluded devices:
- HomePod (not tested, so no device tree included)
- T2 (broken bootloader)
Supported firmware versions: iOS/iPadOS/tvOS 9.0 - 18.0
- checkra1n 1337
- PongoOS (with bootm)
- Linux Kernel branch
asahi
- m1n1-idevice
- pongoterm.c
- An arm64 initramfs, an example is included here as well.
Prebuilt PongoOS and m1n1 binaries can be found in this repository.
Linux:
cc pongoterm.c -DUSE_LIBUSB -Os -lusb-1.0 -o pongoterm
macOS:
clang -x objective-c pongoterm.c -framework IOKit -framework CoreFoundation -framework Foundation -Os -o pongoterm
Assuming you are in the m1n1 source tree, the command should look like this.
cat build/m1n1.bin <(echo 'chosen.bootargs=<kernel command line here>') \
/path/to/linux-apple/arch/arm64/boot/dts/apple/*.dtb \
/path/to/linux-apple/arch/arm64/boot/Image.gz \
/path/to/initramfs.gz > m1n1-linux.bin
You can use palera1n to
help you enter DFU mode. Command: palera1n -Dl
Instructions to enter DFU without palera1n.
Run checkra1n as root:
sudo /path/to/checkra1n -pEk /path/to/Pongo.bin
After booting pongoOS, run pongoterm as root:
printf '/send /path/to/m1n1-linux.bin\nbootm\n' | sudo pongoterm