Boot the ISO. Wired networking comes up on its own; for wireless:
iwctl station wlan0 connect YOUR-NETWORK
Then edit the config and run the installer:
nano /etc/arctic/install.conf arctic-strap
That is the whole procedure. There are no menus, no prompts and no
arguments — arctic-strap takes none. Which disk to use is
something the config says, not something you type.
nano, vim and nvim are all on
the ISO. vi is vim.
Before anything is written, the whole config is validated. Either:
Config file accepted /etc/arctic/install.conf disk /dev/sda (whole disk - everything on it is destroyed) filesystem btrfs kernel Arctic-kernel hostname arctic desktop xfce
or the full list of what is wrong:
Config file has errors /etc/arctic/install.conf A_ROOT_FS=reiserfs is not valid (try: ext4 ext3 ext2 btrfs xfs f2fs zfs) A_SNAPSHOT=btrfs needs A_ROOT_FS=btrfs (this config has ext4) A_ENCRYPT=yes but A_ENCRYPT_PASS is empty Nothing has been changed. Fix the config and run arctic-strap again.
Errors are reported all at once, not one per run, and nothing has been touched when they are. To check without installing:
arctic-strap -n
Two ways. Pick one — setting both is an error.
Arctic partitions and formats it. Everything on it is destroyed.
A_DISK=/dev/sda A_ROOT_FS=btrfs
Partition with cfdisk first, then point Arctic at the
results. Nothing is formatted unless you ask.
A_ROOT_PART=/dev/sda2 A_BOOT_PART=/dev/sda1 A_HOME_PART=/dev/sda3 A_FORMAT=no
With A_FORMAT=no Arctic mounts them as they are and
installs into whatever is already there — which is how you keep an
existing /home. An existing btrfs is detected and its
@ subvolume layout used, rather than the top level.
ext4 | the default |
btrfs | subvolumes, snapshots, transparent compression |
xfs | large files |
f2fs | flash |
ext3, ext2 | older |
zfs | needs an out-of-tree module; least tested |
btrfs gets @, @home, @snapshots
and @log subvolumes, so root can roll back without taking
your home directory with it. That split is what
A_SNAPSHOT=btrfs needs:
A_ROOT_FS=btrfs A_SNAPSHOT=btrfs A_BTRFS_OPTS="rw,noatime,compress=zstd:3,space_cache=v2"
LUKS2, under whichever filesystem you chose:
A_ENCRYPT=yes A_ENCRYPT_PASS=your-passphrase
An initramfs with cryptsetup and the dm-crypt modules is generated automatically, and the passphrase prompt appears before anything else at boot. Works with every filesystem except zfs, which encrypts itself.
A_BOOT_FW=efi # or bios; detected if unset A_BOOTLOADER=limine # or grub A_BOOT_MOUNT=/boot/efi A_BOOT_TIMEOUT=3 A_KERNEL_ARGS="" A_GENERATIONS=5
A_GENERATIONS is how many previous configurations appear
in the boot menu — see generations.
The shipped install.conf documents every setting inline,
all commented out with defaults shown. The rest, in brief:
A_KERNEL | which kernel — see kernels |
A_INIT | PID 1 — see init systems |
A_DESKTOP, A_DM, A_AUDIO |
see desktops and audio |
A_USER, A_USERPASS, A_ROOTPASS |
accounts; empty root password means the account is locked |
A_NET | offline, dhcp, wifi, static |
A_HOSTNAME, A_TZ, A_LOCALE, A_KEYMAP |
the usual |
A_SWAP | none, file, partition |
A_PKGS, A_FONTS, A_SERVICES |
extra things to install and enable |
A_PKGIT | install pkgit alongside alpm |
In order: validate the config, partition or mount, unpack the base
system, install the kernel and firmware, install everything the config
asked for, create accounts, write /etc/fstab from the real
mount table, install the bootloader, seed
/etc/arctic/system.conf from what it just did, and record
generation 1.
The fstab is generated from /proc/mounts, not from the
config — whatever the install actually ended up with is what gets
recorded, with UUID= throughout so disk reordering does not
break the next boot.
After it finishes, system.conf already describes the
machine, and generation 1 is the machine as installed. Both of those
matter from the first rebuild onward.
More: arctic linux docs · declarative configuration · generations and rollback · init systems · kernels · packages (alpm) · desktops and audio · ephemeral shells · musl · building from source