Run pacstrap
pacstrap -K /mnt "${PKGS[@]}"
This downloads a little over a gigabyte and takes a few minutes on a
reasonable connection. The packages land in
/mnt/var/cache/pacman/pkg – on the target’s disk, inside the
@pkg subvolume you made for exactly this – so the live system’s
small RAM filesystem is not involved.
The -K flag tells pacstrap to initialise a fresh pacman keyring
inside the target rather than copying the live system’s. That is the
cleaner default: the new machine gets the distribution’s keys and
none of the local state that has accumulated on the installer.
-K implies -G, “do not copy the host’s keyring to the target”.
On a BOOMSTICK Pi image that predates the Arch Linux ARM signing
keys, the trust you had to add by hand lives only in the live
system’s keyring, so -K would discard it and the install would
fail on the kernel. Use plain pacstrap /mnt "${PKGS[@]}" there
instead.
See Prepare pacman for how to tell which stick you have. On a
current stick, either form works.
When it finishes
The last thing pacstrap does is build an initramfs for the kernel you installed, so the tail of the output looks like this:
-> Early uncompressed CPIO image generation successful ==> Initcpio image generation successful (14/14) Reloading system bus configuration... Skipped: Running in chroot.
Skipped: Running in chroot is expected and is not an error.
pacstrap is installing into a directory, so there is no running
system bus for the package’s hook to reload. On a Raspberry Pi 5
over WiFi, the whole run took about a minute and a half.
Check it landed
du -sh /mnt
df -h /mnt | tail -1
3.3G /mnt /dev/nvme0n1p2 238G 2.5G 235G 1% /mnt
Those two numbers disagree on purpose, and the gap is the zstd
compression you mounted with back in the disk chapter: du adds up
3.3 GiB of file contents, while df reports the 2.5 GiB those files
actually occupy. About a quarter of the base system compressed
away, for free.
A couple of gigabytes, give or take your package choices. If that number is in megabytes, something went wrong and you should read back through pacstrap’s output rather than continuing.