Create a Custom Arch Linux Installer

Here's how to create a custom Arch Linux installer disk image on a USB drive, with installation packages for:

First install Arch Linux in VirtualBox with this article on running Arch Linux, or by installing Vagrant and using the Arch Linux v20201201 Vagrant box.

A desktop environment is not required for creating the installer disk image, but if you installed the GNOME desktop environment as per the article, go into the machine settings and enable clipboard sharing (under General > Advanced) and install the VirtualBox guest additions, so that you can copy and paste to the virtual machine if you like. Start the terminal utility app and install the guest additions:

pacman -S virtualbox-guest-utils

Install the archiso package:

pacman -S archiso

Create profile, work and output folders, and copy the release installer image build profile to the profile folder as a starting point:

mkdir /home/archlive
mkdir /home/archwork
mkdir /home/archout
cd /home
cp -r /usr/share/archiso/configs/releng/* ./archlive

Enable the Arch Linux multilib repository so that you have the option to include packages from all of the official Arch Linux repositories, by uncommenting the multilib section in the package manager configuration file, and then synchronising the package databases:

nano /etc/pacman.conf
Include = /etc/pacman.d/mirrorlist
pacman Sy

Install the wget package and get a list of the additional packages that you would like to be available when using the custom installer disk image, and save the list in a file package-list.txt in a folder /home/custompkgs. Download all of the packages that are not currently installed (and so not required as this should be done on a new system so that the same already installed packages will also be available in the new custom installer in /var/lib/pacman/local/). Then create a custom local package repository in custompkgs with all of the packages in that folder.

pacman -S wget
mkdir /home/custompkgs
pacman -Sp --noconfirm \
  linux-headers grub broadcom-wl iw wget curl \
  xorg xorg-server gnome gnome-extra \
  wine winetricks playonlinux \
  virtualbox atom python nodejs \
  postgresql blender \
  transmission-gtk tor torbrowser-launcher \
  busybox > /home/custompkgs/package-list.txt
  wget -P /home/custompkgs -nv -i /home/custompkgs/package-list.txt
  ls -al /home/custompkgs | wc -l
  repo-add /home/custompkgs/custom.db.tar.gz /home/custompkgs/*.pkg.*

Add the new custom repository to the profile folder's package manager configuration file:

nano ./archlive/pacman.conf
SigLevel = Optional TrustAll
Server = file:///home/custompkgs

Build the custom installer image:

mkarchiso -v -w ./archwork -o ./archout ./archlive

Connect a USB drive to your machine and connect it to the virtual machine, and, with persistent block device naming, identify it by id, label or part label, or find it by listing all sd (or "special disk") devices:

ls -al /dev/disk/by-id
ls -al /dev/disk/by-label
ls -al /dev/disk/by-partlabel
ls -al /dev/sd*

Write the installer disk image to the USB drive, reading and writing in blocks of 4 MB:

dd bs=4M if=/home/archout/archlinux-[date-example-2020.12.27]-x86_64.iso of=/dev/[device-example-sdb] conv=fdatasync

Remove the work and output folders:

rm -rf /home/archlive
rm -rf /home/archwork
rm -rf /home/archout

There! You have a custom Arch Linux installer image on a USB drive!