archaaru
Scripts to build archaaru, a bootable Arch Linux live/rescue ISO with Aaru installed. The ISO also includes filesystem, imaging and recovery tools and a small XFCE desktop.
It boots on BIOS and UEFI x86_64 machines and logs in automatically as root.
The XFCE desktop starts on the first console. Log out of it to get a root
shell, or use the other consoles (Ctrl+Alt+F2…), which stay text only. The
with speech boot entry stays in text mode for the screen reader. Networking
works as on the official Arch Linux ISO (iwctl for Wi-Fi, DHCP for wired).
What is inside
- Aaru, either a tagged release or the development branch (see below).
- Everything from the official Arch ISO: partitioning, filesystems (btrfs, xfs, ext, f2fs, nilfs, jfs, exfat, ntfs, bcachefs), LVM/mdadm/dmraid, clonezilla, partclone, fsarchiver, ddrescue, testdisk/photorec, smartmontools, sg3_utils, nvme-cli and networking tools.
- Additions for Aaru's use cases:
- Optical tools: cdrtools, dvd+rw-tools, libisoburn, libcdio, vcdimager, libdvdcss.
- Forensics: sleuthkit, libewf, hexedit.
- Filesystem and volume support: apfsprogs, sshfs, cifs-utils, veracrypt.
- Archivers: 7zip, unrar, unarchiver, cabextract and more.
- Desktop: Xorg and XFCE, with GNOME Web (Epiphany), gparted, GNOME Disks
and GSmartControl.
- Epiphany was picked over firefox because it costs about half the space (WebKitGTK shares GTK with the rest of the desktop). That keeps the ISO well under GitHub's 2 GiB release-asset limit.
The exact list is in profile/packages.x86_64.
Building
You need an x86_64 Arch Linux system (or Docker, see below) and these packages:
sudo pacman -S --needed archiso base-devel curl git gnupg jq
# only to build Aaru from source (-a git, or a release without a pacman package)
sudo pacman -S --needed dotnet-sdk
Then run the script as a regular user. It asks for sudo only for the
mkarchiso step:
./buildall.sh # newest Aaru v6 release
./buildall.sh -a v6.0.0-beta.2 # a specific release tag
./buildall.sh -a git # the current development branch (aaru-git)
./buildall.sh -a ~/aaru-6.0.0.beta2-1-x86_64.pkg.tar.zst # a package you already have
The ISO and its .sha256 file are written to out/, for example
out/archaaru-6.0.0-beta.2-2026.10.27-x86_64.iso. The work/ directory is
removed after a successful build unless you pass -k. Run ./buildall.sh -h
for all options.
Where Aaru comes from
Aaru is not in the official repositories. buildall.sh builds a small local
pacman repository in work/repo and passes it to mkarchiso next to core
and extra:
- Release tag: the signed
aaru-*-x86_64.pkg.tar.zstattached to the GitHub release is downloaded. Older releases have no pacman package; for those, the signedaaru-src-*.tar.xzis built with thepkg/pacman/stable/PKGBUILDfrom that tag.- Every signature is checked against the Aaru release key in
keys/aaru-release.asc(fingerprint236F1E21B540FC0D40F7AD1751D20488C724CA9F).
- Every signature is checked against the Aaru release key in
git: Aaru'spkg/pacman/rolling/PKGBUILDis built withmakepkg.
Building with Docker
On a machine that is not running Arch, the official Arch container works. It
must be privileged because pacstrap needs to mount filesystems:
docker run --rm --privileged -e BUILD_USER=builder -v "$PWD:/build" -w /build archlinux:latest \
bash -c 'pacman -Syu --noconfirm --needed archiso base-devel curl dotnet-sdk git gnupg jq &&
useradd -m builder && ./buildall.sh -a v6.0.0-beta.2'
BUILD_USER is the unprivileged user makepkg runs as when the script itself
runs as root.
GitHub Actions
.github/workflows/build-iso.yml runs the
same Docker build on a GitHub hosted runner:
- Run workflow (manual): choose an Aaru tag,
git, or leave it empty for the newest v6 release. The ISO is uploaded as a workflow artifact and, if publish is ticked, attached to a release namediso-<aaru version>-<date>. - Pushing a tag
iso-*: builds the newest v6 release and publishes it under that tag.
GitHub does not accept release assets of 2 GiB or more, so the job fails if the ISO grows past that.
Testing the ISO
# BIOS
qemu-system-x86_64 -enable-kvm -m 4G -cdrom out/archaaru-*.iso
# UEFI
qemu-system-x86_64 -enable-kvm -m 4G -bios /usr/share/edk2/x64/OVMF.4m.fd -cdrom out/archaaru-*.iso
The boot menu also has a copy to RAM entry. With it you can take out the boot media, for example to dump a disc in the same optical drive.
No 32-bit image
Earlier versions of this repository also built an i686 ISO from Arch Linux 32. That image was dropped:
- .NET, which Aaru is built on, has never had a 32-bit x86 Linux runtime.
- Aaru is published for Linux only on x86_64, arm64 and armhf, so there is no Aaru that could go into an i686 image.
Keeping up with archiso
profile/ is the archiso releng profile (the one used for the
official Arch ISO) with only small Aaru-specific changes:
- name and branding in
profiledef.shand the boot menus, plussplash.png; - copy-to-RAM boot entries;
- the
[aaru]repository inpacman.conf; airootfs/etc/{hostname,motd}, and the XFCE start-up at the end ofairootfs/root/.zlogin;- the additions in
packages.x86_64, which start after the marker comment.
After an archiso update, look at what changed upstream and merge it:
diff -r --no-dereference /usr/share/archiso/configs/releng profile
splash.xcf is the GIMP source of the boot splash. Export it to
profile/syslinux/splash.png at 640×480.
License
The profile is based on archiso, which is licensed under GPL-3.0-or-later.