Home / Docs / Installation Guide

Installation Guide

This document is a guide for installing NaTix OS from the live system booted with the official installation image. Before installing, it is advised to view the FAQ. For conventions used in this document, see Help:Reading.

Tip: For a guided, interactive installation, you can use natixinstall after booting into the live environment. This guide covers the manual process for those who want full control.

Pre-installation

Acquire an installation image

Visit the Download page and acquire the ISO image and the respective GnuPG signature file.

Verify signature

It is recommended to verify the image signature before use, especially when downloading from a mirror. Use gpg to verify:

Verify ISO signature
$ gpg --keyserver-options auto-key-retrieve --verify natix-2025.2-x86_64.iso.sig natix-2025.2-x86_64.iso

Alternatively, verify the checksum:

Verify SHA256 checksum
$ sha256sum -c sha256sums.txt

Boot the live environment

The live environment can be booted from a USB flash drive, an optical disc, or a network with PXE. Write the ISO to a USB drive:

Create bootable USB
$ dd bs=4M if=natix-2025.2-x86_64.iso of=/dev/sdX conv=fsync oflag=direct status=progress
Warning: This will irrevocably destroy all data on /dev/sdX. Make sure you identify the correct device.

Set the console keyboard layout

The default console keymap is US. Available layouts can be listed with:

List keymaps
# localectl list-keymaps

To set the keyboard layout, pass its name to loadkeys:

Set keyboard layout
# loadkeys de-latin1

Verify the boot mode

To verify the boot mode, check the efivars directory:

Check UEFI mode
# cat /sys/firmware/efi/fw_platform_size

If the command returns 64, the system is booted in UEFI mode with a 64-bit x64 UEFI. If the file does not exist, the system may be booted in BIOS/CSM mode.

Connect to the internet

Ensure your network interface is listed and enabled:

Check network
# ip link

For wireless, authenticate to the network using iwctl:

Connect to Wi-Fi
# iwctl
[iwd]# device list
[iwd]# station wlan0 scan
[iwd]# station wlan0 get-networks
[iwd]# station wlan0 connect SSID

Verify connectivity:

Ping test
# ping -c 3 natix.org

Update the system clock

In the live environment, systemd-timesyncd is enabled by default. Ensure the system clock is accurate:

Sync clock
# timedatectl set-ntp true
# timedatectl status

Partition the disks

When recognized by the live system, disks are assigned to a block device such as /dev/sda, /dev/nvme0n1, or /dev/mmcblk0. To identify these devices, use lsblk or fdisk:

List block devices
# fdisk -l

Use a partitioning tool like fdisk or cfdisk to modify partition tables:

Partition disk
# cfdisk /dev/the_disk_to_be_partitioned
Required partitions:
Mount pointPartitionTypeSuggested size
/mnt/boot/dev/efi_partitionEFI System1 GiB
[SWAP]/dev/swap_partitionLinux swap≥ 4 GiB
/mnt/dev/root_partitionLinux x86-64 rootRemainder of device

Format the partitions

Once the partitions have been created, each newly created partition must be formatted with an appropriate file system:

Format partitions
# mkfs.ext4 /dev/root_partition
# mkswap /dev/swap_partition
# mkfs.fat -F 32 /dev/efi_partition

Mount the file systems

Mount the root volume to /mnt:

Mount filesystems
# mount /dev/root_partition /mnt
# mount --mkdir /dev/efi_partition /mnt/boot
# swapon /dev/swap_partition

Installation

Select the mirrors

Packages to be installed must be downloaded from mirror servers defined in /etc/natpac.d/mirrorlist. On the live system, after connecting to the internet, reflector updates the mirror list by choosing the most recently synchronized HTTPS mirrors and sorting them by download rate.

The higher a mirror is placed in the list, the more priority it is given when downloading a package. Inspect the file and move geographically close mirrors to the top:

Edit mirror list
# nano /etc/natpac.d/mirrorlist

Install essential packages

Use the natstrap script to install the base package, Linux kernel and firmware for common hardware:

Install base system
# natstrap /mnt base linux linux-firmware
Tip: You can substitute linux for a kernel package of your choice, or omit it entirely when installing in a container. You may also want to install other packages like nano, vim, networkmanager, etc.

Configure the system

Fstab

Generate an fstab file (use -U for UUIDs or -L for labels):

Generate fstab
# genfstab -U /mnt >> /mnt/etc/fstab

Check the resulting /mnt/etc/fstab file and edit it in case of errors.

Chroot

Change root into the new system:

Chroot into system
# natix-chroot /mnt

Time zone

Set the time zone:

Set timezone
# ln -sf /usr/share/zoneinfo/Region/City /etc/localtime
# hwclock --systohc

Localization

Edit /etc/locale.gen and uncomment the needed locales (e.g. en_US.UTF-8 UTF-8). Then generate the locales:

Generate locales
# locale-gen

Create the locale.conf file and set the LANG variable:

/etc/locale.conf
LANG=en_US.UTF-8

If you set the console keyboard layout, make the changes persistent in vconsole.conf:

/etc/vconsole.conf
KEYMAP=de-latin1

Network configuration

Create the hostname file:

/etc/hostname
myhostname

Enable NetworkManager so networking starts on boot:

Enable NetworkManager
# systemctl enable NetworkManager

Root password

Set the root password:

Set root password
# passwd

Boot loader

Install a Linux-capable boot loader. For UEFI systems with GRUB:

Install GRUB (UEFI)
# natpac -S grub efibootmgr
# grub-install --target=x86_64-efi --efi-directory=/boot --bootloader-id=NATIX
# grub-mkconfig -o /boot/grub/grub.cfg
Note: natpac is the NaTix package manager. It works identically to pacman — same flags, same syntax.

Reboot

Exit the chroot environment, optionally unmount all partitions, and reboot:

Reboot
# exit
# umount -R /mnt
# reboot

Remove the installation medium and log in to the new system with the root account.

Post-installation

After rebooting into your new NaTix system, here are recommended next steps:

Create a user account

Add user
# useradd -m -G wheel -s /bin/bash username
# passwd username
# EDITOR=nano visudo
## Uncomment: %wheel ALL=(ALL:ALL) ALL

Install a desktop environment

Install NaTix Desktop
# natpac -S natix-desktop
# systemctl enable sddm

Enable essential services

Enable services
# systemctl enable bluetooth
# systemctl enable cups
# systemctl enable firewalld

Install common packages

Common packages
# natpac -S firefox git base-devel pipewire pipewire-pulse wireplumber

natixinstall — Guided Installer

For users who prefer a guided, interactive installation, NaTix provides natixinstall. It automates the manual steps above through a TUI (terminal user interface).

Note: natixinstall is the NaTix equivalent of Arch Linux's archinstall. It handles partitioning, base install, locale, bootloader, user creation, and desktop environment selection — all in one guided flow.

After booting into the live environment and connecting to the internet, simply run:

Launch guided installer
# natixinstall

The installer will walk you through:

Advanced usage

You can also pass a JSON config file for unattended installs:

Unattended install
# natixinstall --config /path/to/user_config.json

Or run with specific flags:

natixinstall flags
# natixinstall --script minimal    # Minimal headless install
# natixinstall --script desktop    # Full desktop with NaTix DE
# natixinstall --dry-run           # Preview without writing

See also: General recommendations · List of applications · NaTix Wiki