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.zst attached to the GitHub release is downloaded. Older releases have no pacman package; for those, the signed aaru-src-*.tar.xz is built with the pkg/pacman/stable/PKGBUILD from that tag.
    • Every signature is checked against the Aaru release key in keys/aaru-release.asc (fingerprint 236F1E21B540FC0D40F7AD1751D20488C724CA9F).
  • git: Aaru's pkg/pacman/rolling/PKGBUILD is built with makepkg.

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 named iso-<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.sh and the boot menus, plus splash.png;
  • copy-to-RAM boot entries;
  • the [aaru] repository in pacman.conf;
  • airootfs/etc/{hostname,motd}, and the XFCE start-up at the end of airootfs/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.

Description
Scripts to create Arch Linux Rescue CD with Aaru installed
Readme 99 MiB
Languages
Shell 100%