This project provides a build system for creating a custom ArchLinux ISO that replaces GNU core utilities with Rust-based alternatives, including uutils-coreutils and many other modern Rust rewrites.
- ArchLinux system (or compatible Linux distribution)
- Root/sudo access
archisopackage installed- At least 10GB free disk space
- Install required dependencies:
sudo pacman -S archiso- Clone this repository:
git clone <repository-url> arch-rs
cd arch-rsThis repository follows the Git Flow branching model. See .github/BRANCHING.md for detailed information about the branching strategy.
# Clone and set up
git clone <repository-url> arch-rs
cd arch-rs
# Create a feature branch
git checkout develop
git pull origin develop
git checkout -b feature/my-feature
# Make changes, commit, and push
git add .
git commit -m "Add feature: description"
git push origin feature/my-feature
# Create a pull request to developSimply run the build script as root:
sudo ./build.shTo clean previous build artifacts and start fresh:
sudo ./build.sh --cleanThe ISO is automatically built using GitHub Actions:
- On version tags (e.g.,
v1.0.0): Creates a GitHub release with the ISO - On main/master branch: Builds ISO and uploads as artifact (for testing)
- Manual trigger: Available from the Actions tab
See .github/workflows/README.md for more details.
To create a release:
git tag -a v1.0.0 -m "Release version 1.0.0"
git push origin v1.0.0The build process will:
- Use the custom archiso profile in
profile/ - Install
uutils-coreutilsinstead of GNUcoreutils - Install additional Rust-based utility replacements (ripgrep, fd, bat, eza, procs, bottom, dust, zoxide, starship, tealdeer, sd, tokei, hyperfine)
- Configure the system to use rust-based utilities by default
- Generate a bootable ISO in the
out/directory
arch-rs/
├── profile/ # ArchISO profile configuration
│ ├── packages.x86_64 # Package list (uutils-coreutils included)
│ ├── pacman.conf # Pacman configuration
│ ├── airootfs/ # Root filesystem customizations
│ │ ├── etc/ # System configuration files
│ │ └── root/ # Root user scripts
│ └── build.sh # Profile build script
├── scripts/ # Utility scripts
│ └── build-coreutils.sh # Optional: Build coreutils from source
├── work/ # Build working directory (created during build)
├── out/ # Output directory for ISO files (created during build)
├── build.sh # Main build script
└── README.md # This file
Edit profile/packages.x86_64 to add or remove packages from the ISO.
- System-wide configs:
profile/airootfs/etc/ - Root user scripts:
profile/airootfs/root/ - Customization script:
profile/airootfs/root/customize_airootfs.sh
If you want to build uutils-coreutils from source instead of using the package:
./scripts/build-coreutils.shThis requires Rust/Cargo to be installed.
- Write the ISO to a USB drive:
sudo dd if=out/archlinux-*.iso of=/dev/sdX bs=4M status=progress oflag=sync-
Boot from the USB drive in a VM or physical machine
-
Verify rust coreutils is active:
ls --version # Should show uutils-coreutils version
which ls # Should point to uutils binaryImportant: When installing ArchLinux to a hard drive from this ISO, you need to follow special steps to ensure rust coreutils is installed instead of GNU coreutils. See INSTALL.md for detailed installation instructions.
The ISO includes helper scripts:
/root/install-helper.sh- Run before/during installation/root/post-install.sh- Run after installation to configure rust coreutils
The ISO includes the following Rust-based replacements:
- uutils-coreutils - Complete coreutils replacement (ls, cat, cp, mv, rm, etc.)
- ripgrep (rg) - Fast grep replacement
- fd - Fast find replacement
- bat - cat with syntax highlighting
- eza - Modern ls replacement
- procs - Modern ps replacement
- bottom (btm) - System monitor (top/htop replacement)
- dust - du replacement with tree view
- zoxide - Smart cd replacement
- starship - Cross-shell prompt
- tealdeer (tldr) - Simplified man pages
- sd - Intuitive sed replacement
- tokei - Code statistics
- hyperfine - Benchmarking tool
See RUST_UTILITIES.md for detailed information about each utility.
- The ISO uses Rust-based packages from the Arch repositories
- GNU counterparts are excluded -
coreutils,grep,findutils,sed, andprocps-ngare excluded from installation - Rust utilities are automatically aliased - standard commands like
grep,find,cat,ls,ps,top,du, etc. now use Rust versions by default - Wrapper scripts in
/usr/local/binensure scripts (not just interactive shells) use Rust utilities - Aliases are active by default in
/etc/profile.d/rust-utils.sh - Pacman hooks prevent accidental installation of GNU utilities
- Some scripts may need adjustments if they rely on GNU-specific features or syntax differences
- All standard coreutils commands (ls, cat, cp, mv, etc.) work with uutils-coreutils
- For installed systems: Follow the installation guide to ensure rust-based utilities are used on the installed system
Install archiso: sudo pacman -S archiso
- Check that the ISO was written correctly to the USB drive
- Verify your system supports UEFI/BIOS boot mode as configured
- Check the build logs in the
work/directory
- Verify uutils-coreutils is installed:
pacman -Q uutils-coreutils - Check binary locations:
which lsandls --version - Review the customization scripts in
profile/airootfs/root/
This build system and configuration files are licensed under the MIT License.
See LICENSE file for the full license text.
The generated ISO includes software packages with their own respective licenses:
- ArchLinux packages: Various licenses (GPL, MIT, BSD, etc.) as per ArchLinux distribution
- uutils-coreutils: MIT License - https://github.com/uutils/coreutils
- Rust utilities:
- ripgrep: MIT or Unlicense
- fd: MIT or Apache-2.0
- bat: MIT or Apache-2.0
- eza: MIT
- procs: MIT
- bottom: MIT
- dust: Apache-2.0
- zoxide: MIT
- starship: ISC
- tealdeer: MIT or Apache-2.0
- sd: MIT
- tokei: MIT or Apache-2.0
- hyperfine: MIT or Apache-2.0
Users are responsible for complying with all applicable licenses when using the generated ISO or any included software packages. Please refer to the individual package license files for complete license information.