How to Install Void Linux (2026 Guide)

Void Linux installation guide with XBPS and runit

✅ Verified against the official Void Linux Handbook (docs.voidlinux.org) — Last updated: September 2026

Void Linux is one of the few major distros built from scratch — not a derivative of Debian, Arch or Fedora. It uses its own package manager (XBPS) and runit instead of systemd for init and service management. That combination makes it faster to boot and lighter on resources than most systemd-based distros, at the cost of a rolling-release install that assumes you're comfortable with a manual, TUI-driven installer — there's no graphical Calamares-style install here.

Contents
  1. glibc vs musl — Which Variant Should You Choose?
  2. Hardware Requirements (Official)
  3. Step 1 — Download the Void Linux Live Image
  4. Step 2 — Create a Bootable USB Drive
  5. Step 3 — Boot and Launch void-installer
  6. Step 4 — Walk Through the Installer
  7. Step 5 — First Boot and Updating the System
  8. Managing Services: runit, Not systemd
  9. Disk Encryption — Not Built Into the Installer
  10. Alternative Method: Manual Bootstrap Install (For Arch Users)
    1. Partition and Mount
    2. Bootstrap the Base System with xbps
    3. fstab and chroot — the xtools Equivalents
    4. Inside the Chroot
  11. Troubleshooting
    1. xbps-install fails with an RSA signature verification error
    2. Repository sync fails with "Operation not permitted"
    3. xbps-install reports a 404 fetching repodata
    4. Something broke after a partial or interrupted update
    5. Do I need to run the update command twice after install?
    6. Can I install Void Linux without the void-installer TUI, like arch-chroot?
    7. Further Reading

glibc vs musl — Which Variant Should You Choose?

Void ships two separate libc variants, and the installer image you download depends on this choice upfront:

  • glibc — the standard C library used by almost every other Linux distro. Choose this unless you have a specific reason not to. Locale support only works on glibc.
  • musl — a smaller, strictly standards-compliant libc. The official handbook is direct about the tradeoff: most proprietary software (the NVIDIA proprietary driver being the most common blocker) does not work correctly on musl. If you need it anyway, the documented workaround is running that software from a glibc chroot.

If you're not sure, pick glibc. Reach for musl only if you specifically want the smaller, stricter base and don't need proprietary drivers or software.

Hardware Requirements (Official)

Unlike a lot of distros that don't publish real numbers, Void's handbook gives an exact minimum table:

VariantCPURAMDisk
x86_64-glibcx86_64520MB700MB
x86_64-muslx86_64520MB600MB
i686-glibcPentium 4 (SSE2)520MB700MB

These are base-system minimums for the console install. The Xfce desktop image needs meaningfully more RAM and disk than the numbers above. A working network connection isn't strictly required by the installer, but it's needed almost immediately after for the first system update.

Step 1 — Download the Void Linux Live Image

Get the live image matching your chosen libc and architecture from voidlinux.org/download. For a standard PC, that's void-live-x86_64-*.iso (glibc) or the -musl variant. Verify the checksum before writing it to a USB drive.

Step 2 — Create a Bootable USB Drive

lsblk    # identify your USB device first
sudo dd if=void-live-x86_64-*.iso of=/dev/sdX bs=4M status=progress oflag=sync

Step 3 — Boot and Launch void-installer

Boot from the USB drive. At the live desktop or console, run:

sudo void-installer

void-installer is a text-mode (TUI) installer, not a graphical one — there's no Calamares-style click-through here. It also isn't available at all on aarch64 images; ARM installs (Raspberry Pi, Pinebook Pro, Apple Silicon via Asahi, ThinkPad X13s) go through the handbook's separate manual chroot guides instead.

Step 4 — Walk Through the Installer

The installer runs through these screens in order — know what's coming before you start:

  1. Keyboard — layout selection
  2. Network — DHCP, manual IP, or WiFi (SSID + WPA passphrase)
  3. Source — Local (the live image itself) or Network install; a desktop environment install forces Local
  4. Hostname
  5. Locale — glibc only. If you're installing musl, there's no locale configuration step here.
  6. Timezone
  7. Root password
  8. User account — added to the wheel group with sudo by default
  9. Bootloader — GRUB2, or skip it if you're chain-loading from elsewhere
  10. Partition — this launches cfdisk directly. There is no guided partitioning: GPT + EFI system partition for UEFI, MBR for legacy BIOS, done manually.
  11. Filesystems — assign mount points to the partitions you just created
  12. Review — confirm every choice
  13. Install

The manual partitioning step surprises people coming from Ubuntu or even Arch's archinstall — there's no "use entire disk" button. You're expected to know your target layout before you get here.

Step 5 — First Boot and Updating the System

Reboot, remove the USB drive, and log in. Update immediately:

sudo xbps-install -Su

Run it a second time if the first run updated the xbps package manager itself — this is documented, expected behavior, not a bug. xbps updates itself first, then needs re-invoking to finish updating everything else.

Managing Services: runit, Not systemd

Void uses runit for init and service supervision. There's no systemctl. To enable a service on a running system:

sudo ln -s /etc/sv/dhcpcd /var/service/

Remove the symlink to disable it. Check status and control a running service with:

sv status dhcpcd
sudo sv restart dhcpcd

For the full picture on package management, logs without journalctl, and Void's XBPS-equivalent of the AUR, see the dedicated XBPS guide.

Disk Encryption — Not Built Into the Installer

Unlike Arch's archinstall or Omarchy, void-installer has no LUKS/LVM checkbox. Full-disk encryption requires the handbook's separate manual guide: cryptsetup luksFormat and luksOpen before you ever reach the installer's partitioning step, then vgcreate for LVM inside the opened container, followed by manual edits to /etc/default/grub, /etc/crypttab, and /etc/dracut.conf.d/10-crypt.conf after install. If encryption is a requirement, plan for it before you boot the installer — it can't be bolted on through the TUI.

Alternative Method: Manual Bootstrap Install (For Arch Users)

If you're coming from Arch and used to archinstall or a fully manual arch-chroot setup, Void has a documented equivalent that skips void-installer entirely — you partition, bootstrap the base system with xbps, and chroot in yourself. It's officially documented, and it maps almost 1:1 to the Arch workflow you already know:

Partition and Mount

# UEFI layout: EFI partition (1GB, type EF00) + root partition (type 8300)
# use cfdisk or your partitioner of choice, then:
mkfs.vfat /dev/sda1
mkfs.ext4 /dev/sda2

mount /dev/sda2 /mnt/
mkdir -p /mnt/boot/efi/
mount /dev/sda1 /mnt/boot/efi/

Bootstrap the Base System with xbps

Copy the signing keys first, then populate the base system directly into /mnt using the current official repo:

mkdir -p /mnt/var/db/xbps/keys
cp /var/db/xbps/keys/* /mnt/var/db/xbps/keys/

REPO=https://repo-default.voidlinux.org/current
XBPS_ARCH=x86_64 xbps-install -S -r /mnt -R "$REPO" base-system

Use REPO=https://repo-default.voidlinux.org/current/musl instead if you're bootstrapping the musl variant. Don't reuse repo URLs from older third-party tutorials — mirrors get retired, and repo-default.voidlinux.org is the current official one.

fstab and chroot — the xtools Equivalents

Void's xtools package ships direct equivalents of Arch's genfstab and arch-chroot:

xgenfstab -U /mnt > /mnt/etc/fstab   # equivalent of genfstab
xchroot /mnt /bin/bash                # equivalent of arch-chroot

xchroot handles the bind mounts for you when entering the chroot. The official handbook notes this can also be done manually if you'd rather control each mount yourself.

Inside the Chroot

echo "your-hostname" > /etc/hostname
passwd                       # set the root password
# edit /etc/rc.conf as needed

# glibc only — locales aren't configurable on musl
echo "en_US.UTF-8 UTF-8" >> /etc/default/libc-locales
xbps-reconfigure -f glibc-locales

# UEFI bootloader
xbps-install -S grub-x86_64-efi
grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id="Void"

# finish and exit
xbps-reconfigure -fa
exit
umount -R /mnt
shutdown -r now

Two things the official handbook doesn't cover, worth knowing before you hit them: it gives no explicit timezone-configuration step, and it doesn't document networking inside the chroot. In practice, a plain chroot shares the host's network namespace, so networking works as long as /mnt/etc/resolv.conf has valid DNS entries before you chroot in — that's a practical workaround, not an official documented step, so treat it as such.

Troubleshooting

xbps-install fails with an RSA signature verification error

This is almost always caused by an incorrect or corrupted local repository cache rather than a real security issue. Resync your repository data and retry.

Repository sync fails with "Operation not permitted"

Check your system clock. This error is commonly caused by the system time being significantly out of sync, which breaks certificate/signature validation against the repo. Fix the clock and retry.

xbps-install reports a 404 fetching repodata

Your repository configuration in /etc/xbps.d/ is pointing at a URL that no longer matches an active mirror or path. Check the repository files there against the current official mirror list.

Something broke after a partial or interrupted update

A partial update can leave broken shared library dependencies. xbps-remove -o removes orphaned packages, which often clears up the inconsistency — then re-run the full update.

Do I need to run the update command twice after install?

Yes, if the first xbps-install -Su updated xbps itself — this is documented official behavior, not an error. Run the same command again to finish updating the rest of the system.

Can I install Void Linux without the void-installer TUI, like arch-chroot?

Yes — see the manual bootstrap method above. xgenfstab and xchroot from the xtools package are Void's direct equivalents of Arch's genfstab and arch-chroot, and the whole flow is officially documented, not a community workaround.


Go up

This site uses cookies for analytics and advertising (Google AdSense). By continuing to browse, you accept our use of cookies. Learn more