Overview/X Linux (distro)
Building the ISO
Other languages: Español
This guide explains how to build the X live ISO from this repository with
xbuild.sh. The WSL rootfs is built from the dedicated equislinux/wsl
repository.
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-release,x-wallpapersandx-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) 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 KDE branding package (x-kde-settings-*.pkg.tar.zst) is bundled in the same directory and installed only when thekdedesktop is selected.
Troubleshooting
- If no ISO is generated, inspect the build log first (
build-*.log). - Common failure causes:
- insufficient disk space;
- errors in a live helper or pacman hook;
- 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). |
See docs/build-wsl.md for the summary; the two repositories above are the
source of truth.