Manual installation


This page will act as a rough guideline for installing Xenia Linux manually, without the use of an installer. While this won’t show every different way you can setup your system, it will provide the necessary details to get a working system.

This guide will serve as a point-of-reference for those wanting to learn how a complete Xenia system is built and as a guide for those wanting to build their own custom system from scratch.


Booting the live media

Firstly, boot into the LiveCD and setup networking if applicable. To make sure this guide stays up-to-date, follow the handbook up to Configuring the network.

Setting up disks

Xenia expectations

Xenia Linux expects a specific disk layout. For a traditional filesystem, it expects your filesystems to be labelled in a specific manner:

  • ROOTS - this is where your root images are stored.

  • OVERLAY - this is where system overlays over /usr, /var and /etc are stored.

  • HOME - this is where /home resides.

  • EFI - this is where /boot/efi resides.

For Btrfs, it expects the following labels:

  • ROOTS - this is where root images, overlays and home is stored.

  • EFI - this is where /boot/efi resides.


You can find a full list of filesystem layouts here.


First, find the disk to install on with lsblk:

sda    8:0    0  80G  0 disk

Your disk will most likely be /dev/sda, /dev/vda, /dev/nvme0n1 or /dev/mmcblk0. You can check the SIZE column to see if it matches with your disk.

Next, partition the disk with fdisk. Replace the disk referenced in the below commands with the one you found above. It should look like this, some text has been redacted for clarity:

fdisk /dev/sda
Welcome to fdisk (util-linux 2.38.1).

Command (m for help):


For BIOS systems, we still make an “ESP” as that is where GRUB will store its config. It might be a bit confusing, but specific steps for BIOS/UEFI are marked throughout.

To partition the disk, we will follow the following layout:

  • /dev/sda1 - EFI - 512M

  • /dev/sda2 - ROOTS - remaining space

To achieve this layout with fdisk, use the following commands:

(press enter)
(press enter)
(press enter)
(press enter)
(press enter)


First, format the EFI System Partition:

mkfs.vfat -F 32 -n EFI /dev/sda1

Next, format the Btrfs partition:

mkfs.btrfs -L ROOTS /dev/sda2

With our disks partitioned, we will mount ROOTS to prepare for the root.img:

mount -L ROOTS /mnt/gentoo
cd /mnt/gentoo

Next, we will create the subvolumes for /home and the filesystem overlays.

btrfs subvolume create /mnt/gentoo/home
btrfs subvolume create /mnt/gentoo/overlay
btrfs subvolume create /mnt/gentoo/overlay/etc
btrfs subvolume create /mnt/gentoo/overlay/var
btrfs subvolume create /mnt/gentoo/overlay/usr

Acquiring a root.img

The root image is the heart of a Xenia Linux system. It contains your whole root filesystem.

Picking the root image

There are a few versions of the root image. The main two are:

  • Current, which is the current stable release of Xenia. Some newer features may not be available, but this is a tested point release

  • Unstable, which is the latest rolling version of Xenia. This may contain some bugs but will have newer features being prepared for a later release

As a rule of thumb, pick Current if you are new to Xenia Linux or want a more stable, tested system.

Acquiring the root image

Downloading the root in the live media

You can download the root image now. Depending on what release channel you would like, substitute current for unstable:

mv /mnt/gentoo/root-systemd.img /mnt/gentoo/root.img

Building your own

To learn about building your own root follow the guide here. When you get to the Installing section, host the web server and copy the root over to here.

Setting up the new system

First, make the directory /mnt/root:

mkdir /mnt/root
cd /mnt/root

And mount root.img there:

mount -o ro,loop -t squashfs /mnt/gentoo/root.img /mnt/root

Mount the ESP:

mount -L EFI /mnt/root/boot/efi

Mount home:

mount -L ROOTS -o subvol=home /mnt/root/home

Chroot into Xenia and install the bootloader

Next, we will chroot into the new system and install the bootloader.

Mount special filesystems:

mount -t proc /proc /mnt/root/proc
mount --rbind /dev /mnt/root/dev
mount --rbind /sys /mnt/root/sys
mount --bind /run /mnt/root/run
mount --make-slave /mnt/root/run

Chroot into the new system:

chroot /mnt/root /bin/bash


We install grub with LVM support here, as LVM layouts won’t boot without it. Feel free to leave it out if you aren’t using LVM.

Install the bootloader:

grub-install --modules=lvm --target="x86_64-efi" --efi-directory="/boot/efi" --boot-directory="/boot/efi"

Configure the bootloader:

grub-mkconfig -o /boot/efi/grub/grub.cfg

And you are done! Now for the moment of truth:


On reboot, the password for root will be 87658765XeniaLinux.