Installation from rootfs

The stal/IX on-disk installation guide from a rootfs tarball

Prerequisites:
IX.md
FS.md

Boot the machine from a bootable media, such as an Ubuntu/Fedora/NixOS live CD, and launch a terminal:

sudo sh

Install the tools:

test -f /usr/bin/parted || yum install parted || apt-get install parted
test -f /usr/bin/wget || yum install wget2 || apt-get install wget
test -f /usr/bin/tar || yum install tar || apt-get install tar
test -f /usr/bin/xz || yum install xz || apt-get install xz-utils

The exact commands for installing parted, wget, tar, and xz will depend on the distribution that you use, but the above should work on Fedora, Red Hat Enterprise Linux, Debian, and their derivatives.

For general instructions on partitioning a disk, see
https://wiki.archlinux.org/title/installation_guide#Partition_the_disks.

Prepare EXT4 (or any other file system) on /dev/xxx using parted (you can also use fdisk or cfdisk), mkfs.ext4 (or the equivalent command for your file system), and mount it:

mkdir /mnt/ix
mount /dev/xxx /mnt/ix

Download the latest stal/IX rootfs tarball from here (e.g. https://github.com/stal-ix/stalix/releases/download/20250620/stalix-x86_64-20250620.tar.xz) and extract it:

cd /mnt/ix

wget https://github.com/stal-ix/stalix/releases/download/20250620/stalix-x86_64-20250620.tar.xz
tar -xpJf stalix-*-*.tar.xz

Create a “tmp” directory in the root filesystem (required for configuring a Linux kernel):

mkdir tmp

And pivot_root inside of the root filesystem (chroot doesn’t work with unshare used by IX):

mkdir old-root
pivot_root . old-root
mount -t proc proc /proc
mount -t sysfs sysfs /sys
mount --rbind old-root/dev /dev
mount -t tmpfs -o mode=1777 tmpfs /dev/shm
cp old-root/etc/resolv.conf /var/run/resolvconf/
. /etc/env

Now prepare a bootable kernel for your hardware and install the GRUB bootloader. Reboot into GRUB and select the menu entry corresponding to your kernel. After a successful boot, switch to tty5, the root prompt will appear.

. /etc/profile
. /etc/env

Add a completely new user without sudo capability.

Try logging in from tty1.

What’s next:

Add uniqueness to the system, without it some packages refuse to install:

./ix mut system --seed="$(cat /dev/random | head -c 1000 | base64)"

Set up Wi-Fi
Some oddities
System configuration
User login