Overview/X Linux (distro)
Building the ISO
This guide explains how to build the X live ISO from this repository with
xbuild.sh, and summarizes the separate WSL rootfs build scripts.
Prerequisites
- A Linux environment with the ArchISO tooling available (Arch Linux or a compatible distribution).
sudoaccess.- The
archisopackage. - Enough disk space (several GB) and network access to download packages.
Install the dependency:
sudo pacman -S archiso
Build command
Run from the repository root:
./xbuild.sh
What xbuild.sh does
- Validates that
pacman.confandprofiledef.shexist in the current directory. - Attempts a lazy unmount of stale mount points under
work/x86_64/airootfs(avoids "target is busy" errors from previous runs). - Removes the previous
work/andout/directories. - Runs
sudo mkarchiso -C pacman.conf -v -w ./work -o ./out ., teeing all output into a timestamped log file. - Verifies that at least one ISO was produced and prints the artifact path and size; otherwise it prints a message and exits with a non-zero status.
A minimal one-liner equivalent, x.sh, performs the same mkarchiso build but
without the cleanup and verification steps. xbuild.sh is the recommended
entry point.
Outputs
- ISO artifact:
out/x-YYYY.MM.DD-x86_64.iso(the version date comes fromprofiledef.sh). - Build log:
build-YYYYMMDD-HHMM.login the repository root.
Both work/ and out/ are recreated on each build and are gitignored, as are
the build-*.log files.
Profile facts
profiledef.sh defines the ISO metadata used by mkarchiso:
iso_name:xiso_version:YYYY.MM.DD(date-based)iso_label:x_YYYYMMiso_publisher:Xscriptor <https://xscriptor.io/x>iso_application:X Live/Rescue DVD- Boot modes:
bios.syslinuxanduefi.grub - Root filesystem image: squashfs, xz-compressed
- File permissions for sensitive/live files (for example
/etc/shadow, theairootfs/rootscripts, and the/usr/local/binlive helpers includingxinstall).
Packages and repositories used by the build
-
packages.x86_64is the full package manifest for the live ISO. It includes the base system plus recovery/live tooling, fonts, a browser (Firefox), the X packagesx-releaseandx-dev(from the[x]repository), andgum(used by the text installer UI). -
bootstrap_packages.x86_64is the minimal set (base,arch-install-scripts) used by archiso for the bootstrap root. -
pacman.confadds the custom repository:[x] SigLevel = Never Server = https://equislinux.github.io/x-repo/repo/x86_64The build host uses
Never(it may not have the project key). The live ISO and the installed target useSigLevel = Required: the public key ships at/etc/pacman.d/x-repo.pub; in the live environmentpacman-init.servicerecreates the keyring on tmpfs andx-keyring.serviceimports and locally signs the project key, whileinstall.shprepares the target keyring the same way. -
The provisioning payload (
x-scripts, current version0.1.0-30) is shipped offline inside the ISO atairootfs/root/x-installer/packages/x-scripts-*.pkg.tar.zst, so the installer does not need to fetch it from the network during installation. The installer uses it to provision the target and to record generation0001at the end of the installation.
Troubleshooting
- If no ISO is generated, inspect the build log first (
build-*.log). - Common failure causes:
- insufficient disk space;
- errors in profile customization logic;
- invalid profile configuration in
profiledef.sh; - stale mounts under
work/x86_64/airootfs(the script tries to clean them; unmount withsudo umount -R work/x86_64/airootfsif needed).
WSL builds (dedicated repositories)
WSL is not built from this repository. The canonical flow lives in:
| Repository | Role |
|---|---|
equislinux/wsl | build-rootfs.sh produces an importable rootfs tarball (.tar.gz + .sha256); install.ps1 imports it on Windows. Published release: v0.1.0. |
equislinux/wsl-scripts | Two-stage in-distro provisioning (stage-root.sh / stage-user.sh). |
The two repositories above are the source of truth for building and provisioning X on WSL.