It's possible to create a custom bootable ISO by following the procedure below.
We need the loop module to be loaded
modprobe loop
Install the artools group (3 packages) and iso-profiles:
pacman -S artools iso-profiles
Use the following to generate ~/artools-workspace:
buildiso -p <profile> -i <init> -q
where profile is one of https://gitea.artixlinux.org/artix/iso-profiles/src/branch/wip (other branches may be useful) and init one of the official init systems Artix supports. See https://wiki.artixlinux.org/Main/Installation#Install_base_system for details.
Copy /etc/artools/artools-base.conf, /etc/artools/artools-iso.conf, and /etc/artools/artools-pkg.conf to ~/.config/artools
Copy the /usr/share/artools/iso-profiles folder to ~/artools-workspace/. This is usually outdated and only working well for base and plasma. The recommended way is to clone the iso-profiles repository inside ~/artools-workspace/:
cd ~/artools-workspace git clone https://gitea.artixlinux.org/artix/iso-profiles.git cd iso-profiles git checkout wip
You can use an existing profile as a guide and either work directly on it or copy it into a more fitting directory. Inside the profile directories there are subfolders named live-overlay and desktop-overlay; the contents of the former are overlaid on the live session and of the latter on the installed system. Test the output:
buildiso -p <profile> -i <init> -q
If all goes well, create the ISO:
buildiso -p <profile>
This will create the ISO in ~/artools-workspace/iso, which you can either burn to CD/DVD using your favourite program or dd it to USB (etcher found in AUR works well for USB sticks).
To install the ISO without fetching updates during installation, set netinstall = no from the initial grub menu (this is the default from artools 0.9.5 onwards
Boot to your selected desktop and start calamares.
If you wish to alter the filesytem prior to ISO completion. Use the -x switch
-x Build chroot only
Build artools/buildiso/lxqt/artix/livefs
$ buildiso -p lxqt -x
/snip/
==> WARNING: Continue squash: buildiso -p base -sc ...
Make any filesystem changes now
sudo sed -i 's|#rc_parallel="NO"|rc_parallel="YES"|' artools/buildiso/lxqt/artix/rootfs/etc/rc.conf
Build artools/buildiso/lxqt/iso/LiveOS/rootfs.img
-s Squash chroot only -c Disable clean work dir $ buildiso -p lxqt -sc
Use the -b switch for boot filesystem
-b Generate iso boot only
Build artools/buildiso/lxqt/artix/bootfs
$ buildiso -p lxqt -bc
Make your edits to boot now
Set default timezone
sudo sed -i 's|def_timezone="UTC"|def_timezone="America/Denver"|' artools/buildiso/lxqt/iso/boot/grub/defaults.cfg
Disable boot time checksum for .sfs files:
sudo sed -i 's|checksum=y|checksum=n|' artools/buildiso/lxqt/iso/boot/grub/kernels.cfg
Generate the ISO artools-workspace/iso/lxqt/artix-lxqt-openrc-2019-12-15-14:49-x86_64.iso
$ buildiso -p lxqt -zc ==> Finished building [lxqt] --> Time build: 0.27 minutes
Both, pacman.conf and makepkg.conf (for chroots) are loaded from
/usr/share/artools/{makepkg,pacman-*}.conf
and can be overridden by dropping them in
$HOME/.config/artools/
Add your custom repo to
$HOME/.config/artools/pacman-default.conf
-OR-
$HOME/.config/artools/pacman-gremlins.conf
If you use buildiso -p PROFILE -x you can use artix-chroot (formerly artools-chroot) to enter the rootfs
and install packages manually, allowing one to install custom packages or AUR packages. To do so:
artix-chroot /var/lib/artools/buildiso/base/artix/rootfs pacman -S artix-grub-live
The bootfs step fails, due to the incompatibility of buildiso and ZFS. To get around this, you need to create a ZFS block device. In the following example zroot is used as the ZFS pool name.
zfs create -V 10G zroot/buildiso
Next you need to create a filesystem compatible with buildiso:
mkfs.ext2 /dev/zvol/zroot/buildiso
Finally, you need to mount it to the location that buildiso places its files:
mount /dev/zvol/zroot/buildiso /var/lib/artools
You can try to either:
sudo pacman -S artix-keyring sudo pacman-key --populate artix sudo pacman-key --lsign-key 78C9C713EAD7BEC69087447332E21894258C6105