Apple M1 Generic Port
A generic port for Apple Tonga(M1)-based devices.
MacBook Air M1 2020 running Arch Linux. | |
Manufacturer | Apple |
---|---|
Name | Tonga |
Codename | tonga-generic |
Released | 2020 |
Type | generic |
Hardware | |
Chipset | Apple M1 |
CPU | 3.2 GHz 8cores (4× Apple Firestorm high-performance + 4× Apple Icestorm high-efficiency) |
GPU | Apple G13G (either 7 or 8 cores dependent on base spec) |
Storage | NVME SSD with various sizes |
Memory | 8/16 GB LPDDR4 @ 4266 MT/s |
Architecture | aarch64 |
Software | |
Original software | macOS |
Original version | 11.0 |
FOSS bootloader | yes |
postmarketOS | |
Category | testing |
Pre-built images | no |
Mainline | yes |
Secondary Bootloader |
Works |
---|---|
Mainline |
Works |
Internal Storage |
Works |
USB Host |
Works |
USB Peripheral |
Works |
Display |
Works |
Keyboard |
Works |
This device is based on the Apple M1 SoC. See the Apple M1 page for common tips, guides and troubleshooting steps |
Note: for active development see https://asahilinux.org/ . |
Contributors
- Asahi Linux Project
Users owning this device
How to enter flash mode
for DFU mode: https://support.apple.com/en-gb/guide/apple-configurator-2/apdd5f3c75ad/mac
Bootloader
According to Asahi Linux's Wiki, m1n1 is the bootloader for Linux kernel booting.
m1n1 is the bootloader developed by the Asahi Linux project to bridge the Apple (XNU) boot ecosystem to the Linux boot ecosystem.
What it does(from their wiki)
- Initializes hardware
- Puts up a pretty logo
- Loads embedded (appended) payloads, which can be:
- Device Trees (FDTs), with automatic selection based on the platform
- Initramfs images (compressed CPIO archives)
- Kernel images in Linux ARM64 boot format (optionally compressed)
- Configuration statements
- Chainloads another version of itself from a FAT32 partition (if configured to do so)
Proxy mode enables a huge toolset of developer features, from reducing your Linux kernel test cycle to 7 seconds, to live hardware probing and experimentation, to a hypervisor capable of running macOS or Linux and tracing hardware accesses in real time while providing a virtual UART over USB.
m1n1 can load U-Boot as a payload.
U-Boot
Note: You can look up their wiki for further informations. |
U-Boot is the default payload for m1n1 stage 2, and is used to provide a standard preboot environment familiar to AArch64 developers. External boot is not supported with the native Apple Silicon boot tooling, making U-Boot a hard necessity for providing a PC-like boot environment.
It is able to boot from any external media (USB drive, network, etc.) and users an execute any EFI binaries.
U-Boot Status
Feature | Status |
---|---|
USB-A Ports | Not working due to their controller requiring firmware which we cannot redistribute. |
USB devices | Certain USB devices which expose multiple functions (hubs with NICs, fancy gaming keyboards, etc.) do not work. |
USB Hubs | Hubs with SD Card slots may cause U-Boot crash. |
Installation
This device now have a WIP port in postmarketOS, contributions are welcomed!
to install the m1n1 bootloader, which is needed to be able to boot linux, including a potential postmarketOS port, Use this script: curl https://alx.sh | sh
(this script can also be used to install asahi linux, but also provides the functionality needed to install just the m1n1 bootloader)
See also
This device does currently boot and works to a degree, it has a actively developed Linux port (https://asahilinux.org/).