LevitateOS

Documentation

Disk Preparation

Installation steps 1-5: Boot the live environment and prepare your disk. See Installation for an overview.

Section

1. Boot the Live Environment

Boot from the LevitateOS ISO (see Getting Started). You'll be dropped into a root shell.

NOTE

Secure Boot: If your system won't boot, disable Secure Boot in your UEFI firmware settings. LevitateOS does not currently ship with signed bootloaders.
Verify you booted in UEFI mode
ls /sys/firmware/efi/efivars

If /sys/firmware/efi/efivars doesn't exist, you booted in legacy BIOS mode. LevitateOS requires UEFI. Reboot and select UEFI boot in your firmware settings.

Set keyboard layout (optional, default is US)
loadkeys us
Sync system clock
timedatectl set-ntp true

Section

WiFi Connection (Optional)

Installation is fully offline - no network required. Skip this if using Ethernet or don't need network access.

List wireless interfaces
iwctl device list
Scan and connect (replace wlan0 and YOUR_NETWORK)
iwctl station wlan0 connect YOUR_NETWORK

Section

2. Identify Target Disk

List all disks and identify your installation target
lsblk -d -o NAME,SIZE,MODEL,TRAN

OUTPUT

NAME      SIZE MODEL                     TRAN
nvme0n1     2T Samsung 990 PRO 2TB      nvme
nvme1n1     1T WD Black SN850X 1TB      nvme
sda       4.0T Seagate Barracuda        sata

This guide uses /dev/sda as an example. Replace with your actual device. Most modern systems use NVMe (/dev/nvme0n1) - partitions are named nvme0n1p1, nvme0n1p2, etc.

Section

3. Partition the Disk

WARNING: This will erase all data on the disk. We'll create the default A/B layout:

WARNING

Why this layout: LevitateOS is A/B immutable by default. Slot B is the inactive target for atomic updates and rollback. Mutable mode is an explicit opt-in for daredevils, and is unsafe if you let an LLM author recipes without review.

WARNING

Dual-boot: If keeping Windows, do NOT create a new EFI partition. Use your existing EFI partition (usually the first partition on your Windows disk). Create the LevitateOS partitions (system-a, system-b, var) in free space.
Partition Size Type Mount
/dev/sda1 1 GB EFI System /boot
/dev/sda2 64 GB Linux filesystem / (system-a)
/dev/sda3 64 GB Linux filesystem (system-b)
/dev/sda4 Remainder Linux filesystem /var
Start fdisk
fdisk /dev/sda

Inside fdisk, enter these commands:

STEP 01
g Create new GPT partition table
STEP 02
n New partition (EFI)
STEP 03
1 Partition number
STEP 04
Enter Default first sector
STEP 05
+1G Size (room for multiple kernels)
STEP 06
t Change partition type
STEP 07
1 EFI System
STEP 08
n New partition (system-a)
STEP 09
2 Partition number
STEP 10
Enter Default first sector
STEP 11
+64G Size (slot A)
STEP 12
n New partition (system-b)
STEP 13
3 Partition number
STEP 14
Enter Default first sector
STEP 15
+64G Size (slot B)
STEP 16
n New partition (var)
STEP 17
4 Partition number
STEP 18
Enter Default first sector
STEP 19
Enter Use remaining space
STEP 20
w Write changes and exit

Verify with lsblk /dev/sda. For NVMe drives, partitions are named /dev/nvme0n1p1, /dev/nvme0n1p2, etc.

Section

4. Format Partitions

Format EFI partition
mkfs.fat -F32 -n EFI /dev/sda1
Format system slot A
mkfs.ext4 -L system-a /dev/sda2
Format system slot B
mkfs.ext4 -L system-b /dev/sda3
Format persistent state partition (/var)
mkfs.ext4 -L var /dev/sda4

WARNING

Important: Labels matter. Slot A boots with root=LABEL=system-a, slot B boots with root=LABEL=system-b. Persistent data lives in /var (label var); user homes live under /var/home.

Section

5. Mount Filesystems

Mount system slot A (system-a) at /mnt
mount /dev/sda2 /mnt
Create mount point and mount EFI
mkdir -p /mnt/boot
mount /dev/sda1 /mnt/boot
Mount persistent state partition (var) at /mnt/var
mkdir -p /mnt/var
mount /dev/sda4 /mnt/var

Leave system-b unmounted for now. It will be used as the inactive slot for atomic updates.

Continue to Base System (steps 6-9).