AArch64 (ARM64)#

Status: Unofficial RFC: None

⚠️ Warning

There is currently no proposed RFC for this architecture.
Support is primarily provided by other Arch Linux users (i.e. not Staff).

Project management issue tracker: https://gitlab.archlinux.org/archlinux/ports/aarch64/project-management/-/issues

Most official Arch Linux packages build and run without modification on this architecture.

Device compatibility#

In contrast to x86_64 devices, which use standardized boot processes (BIOS/UEFI) and hardware discovery (ACPI), ARM systems traditionally rely on custom/proprietary bootloaders and static hardware configurations (devicetrees).
The absence of a common boot procedure and hardware auto-detection poses challenges for supporting ARM devices broadly.

The linux package for this port intends to support devices with mainline Linux support (i.e. those that do not require vendor-/device-specific patches).
This kernel is known to work on virtual hosts (e.g. cloud infrastructure) but currently has very limited bare metal device support. If you own a device with mainline support and can contribute to the lists below and/or develop the kernel configuration, to support additional devices, your contributions are welcome.

Devices confirmed working#

Devices suspected to work but unconfirmed#

  • Anything with the Marvell Armada 37xx chipset

Devices needing special kernel packages#

Package repositories#

drzee.net#

These repos provide broad coverage of x86_64 packages and are well maintained.
Packages are built for devices supporting the ARMv8.2 (and later) instruction sets only. That means they will not work on Raspberry Pi 4 or devices with the ARM Cortex A53 or earlier CPUs. For additional background information, see this issue.

There are 3 repos: core, extra, and forge.
Core and extra are analogues of their x86_64 counterparts. Forge is meant for packages that do not otherwise “belong” in core or extra (e.g. linux-rpi5).

To use these repos, adjust pacman.conf.
For example:

[core]
Server = https://arch-linux-repo.drzee.net/arch/$repo/os/$arch

[extra]
Server = https://arch-linux-repo.drzee.net/arch/$repo/os/$arch

[forge]
Server = https://arch-linux-repo.drzee.net/arch/$repo/os/$arch

Note:
The repositories are hosted on AWS S3, which does not generate directory listing/indexes for directory trees. To access the directory listing/index for a given repository simply add a ‘/’ at the end of the repository path: https://arch-linux-repo.drzee.net/arch/core/os/aarch64/. Only the leaf folder can be browsed, other parts of the tree are not browse-able (e.g. https://arch-linux-repo.drzee.net/arch/) and an “access denied” message will be shown.

The package signing key is available here: https://arch-linux-repo.drzee.net/arch/extra/os/aarch64/public.key

Bootstrap tarballs built with the packages in these repos are available here: https://arch-linux-repo.drzee.net/arch/tarballs/os/aarch64/