Arch Linux on arm64¶
Stage 1 builders for non-x86 targets. Currently ARM (Arch Linux ARM).
Note
UEFI spec'd boards can install using guided mode. But need to point servers to ARM.
https://archlinuxarm.org/about/mirrors. You will either need to bootstrap from a tarball or find an ISO that can run archinstoo
C.f Alpine; https://github.com/h8d13/archinstoo/tree/master/distros
For non-standard SBCs; Keep reading bellow.
architecture/
ARM entry script: generic stage 1 (partition, extract, base setup)
boards/ one profile per device, sourced by ARM
Intro¶
This method is more advanced. A stage 1 usually involves:
- Extracted tarball onto a storage device. Tarballs
- Format/mount
- Replaced kernel with appropriate for hardware
- (Hw specifics in
config.txtorboot.txt) - (Setup
/etc/fstabandcmdline.txt)
At this stage you should have a minimal install with only kernel/and bootloader/FS.
This involves using qemu-user-static qemu-user-static-binfmt from an x86 Arch host
(runs the ARM chroot emulated; not needed from an ARM host).
Usage¶
List available boards, then build onto a target device:
./architecture/ARM list
sudo ./architecture/ARM rpi5 /dev/sdX
The script needs the board's tarball and finds it one of three ways:
- Already downloaded, sitting next to the script or in cwd:
curl -LO http://os.archlinuxarm.org/os/ArchLinuxARM-rpi-aarch64-latest.tar.gz - Anywhere else, passed as explicit path:
sudo ./architecture/ARM rpi5 /dev/sdX ~/Downloads/ArchLinuxARM-rpi-aarch64-latest.tar.gz - Not downloaded at all, let the script fetch it:
sudo FETCH=1 ./architecture/ARM rpi5 /dev/sdX
The core does everything generic: msdos label, fat32 boot + ext4 root,
tarball extract with dirty-page progress, keyring init, locale, fstab
by PARTUUID, wired DHCP, getty/sshd/networkd/resolved enabled.
The board profile handles what differs per device: kernel/bootloader
swap, cmdline.txt, firmware config. rpi5 (Pi 5 Model B) swaps the
generic linux-aarch64 kernel for linux-rpi + foundation firmware.
Default credentials after boot:
- root:root
- alarm:alarm
Once in, passwd && passwd alarm, or better yet create a new user.
Adding a board¶
Copy boards/rpi5, adjust. A board file is sourced by ARM and can set:
| What | Required | Purpose |
|---|---|---|
ARCHIVE |
yes | tarball filename |
TARBALL_URL |
no | enables FETCH=1 and the download hint |
BOARD_CHROOT |
no | shell run inside the chroot (kernel/bootloader swap) |
board_finish() |
no | after chroot: cmdline, firmware config, boot cleanup. $MNT, $BOOT_PARTUUID, $ROOT_PARTUUID, $DEVICE in scope |
board_partition() |
no | replaces default partitioning entirely (exotic layouts, U-Boot at raw offsets) |
Boards whose tarball boots as shipped (generic linux-aarch64 +
working U-Boot) need only ARCHIVE and TARBALL_URL.
Using the live script¶
At this point we assume you have a working boot setup and a tty or access to terminal.
This is a reduced version of guided that only aims to setup certain stuff.
Removes bootloaders and more things that are not needed for a running system.
Then ./RUN --script live will bring you to a minimal menu that is aimed to run on a live system.
Through this you can set-up server usecases or desktops and more utilities you might need.