I made this post primarily for my own reference by combining several tutorials in the net and my own observations into one comprehensive tutorial, but I hope this can be for the benefit of other Arch Linux ARM users, too. Of course this tutorial applies as such only on Raspberry Pi models with WiFi: RPi Zero W, RPi 3A+, RPi 4B and so on.
All these instructions must be run as root from a Linux computer with a SD card reader, Windows is useless here. Replace sdX in the following instructions with the device name for the SD card as it appears on your computer.
- Start fdisk to partition the SD card:
- At the fdisk prompt, delete old partitions and create a new one:
- Type o. This will clear out any partitions on the drive.
- Type p to list partitions. There should be no partitions left.
- Type n, then p for primary, 1 for the first partition on the drive, press ENTER to accept the default first sector, then type +100M for the last sector.
- Type t, then c to set the first partition to type W95 FAT32 (LBA).
- Type n, then p for primary, 2 for the second partition on the drive, and then press ENTER twice to accept the default first and last sector.
- Write the partition table and exit by typing w.
- Create and mount the FAT filesystem:
mkfs.vfat /dev/sdX1 mkdir boot mount /dev/sdX1 boot
- Create and mount the ext4 filesystem:
mkfs.ext4 /dev/sdX2 mkdir root mount /dev/sdX2 root
- The root filesystem versions for different Raspberry Pi models are:
- ArchLinuxARM-rpi-latest.tar.gz for Zero and old RPis
- ArchLinuxARM-rpi-2-latest.tar.gz for RPi2s
- ArchLinuxARM-rpi-3-latest.tar.gz for RPi3s
- ArchLinuxARM-rpi-4-latest.tar.gz for RPi4s
Download and extract the correct root filesystem:
wget http://os.archlinuxarm.org/os/ArchLinuxARM-rpi-latest.tar.gz bsdtar -xpf ArchLinuxARM-rpi-latest.tar.gz -C root sync
- Move boot files to the first partition:
mv root/boot/* boot
- Configure the system for WiFi networking by first editing
- Then, replace SSID and PASS with the relevant ones for your WiFi network in the following wpa_supplicant configuration steps:
wpa_passphrase "SSID" "PASS" > root/etc/wpa_supplicant/wpa_supplicant-wlan0.conf ln -s /usr/lib/systemd/system/wpa_supplicant@.service firstname.lastname@example.org
- Unmount the two partitions:
umount boot root
- Remove the SD card, insert it into the Raspberry Pi, and power on the device.
- SSH to the IP address given to the board by your router.
- Login as the default user alarm with the password alarm.
- Then su to root. The default root password is root.
- Initialize the pacman keyring and populate the Arch Linux ARM package signing keys:
pacman-key --init pacman-key --populate archlinuxarm
- The default name resolution does not work with WiFi, so to have a working DNS you need to type in the following (Replace the nameserver IP address with one of your preference, if needed):
systemctl stop systemd-resolved systemctl disable systemd-resolved rm /etc/resolv.conf echo "nameserver 220.127.116.11" > /etc/resolv.conf
- And finally, update the system:
- If you install later networkmanager or equivalent, remember to undo step 8 before starting it for the first time to prevent networking issues:
systemctl stop email@example.com systemctl disable firstname.lastname@example.org rm /etc/wpa_supplicant/wpa_supplicant-wlan0.conf
- Last, if you are using a RPi 4B, remember to update its firmware at the earliest possible opportunity to prevent issues with other hardware, please see here.
Now you can continue with normal Arch Linux installation guide!