Arch Linux BasedManjaro

How To Install Incus on Manjaro

Install Incus on Manjaro

Linux containerization has evolved fast. If you have been relying on LXD for system containers, you have probably heard the news — the Linux Containers community forked LXD into a new, community-driven project called Incus. It is cleaner, actively maintained, and for Manjaro users, surprisingly easy to get running. This guide walks you through everything: what Incus is, why it matters on Manjaro, and exactly how to install, configure, and launch your first container from scratch.

What Is Incus?

Incus is a next-generation system container and virtual machine manager built on top of LXC (Linux Containers). It was born in October 2023 when Canonical assumed full ownership of LXD, prompting the original Linux Containers team to fork the project independently. The result is Incus: a community-governed, open-source platform hosted under the linuxcontainers.org umbrella alongside LXC, LXCFS, and Distrobuilder.

Unlike Docker, which manages application containers, Incus manages system containers — full OS-level environments that behave like lightweight virtual machines but share the host kernel. It also supports genuine virtual machines using QEMU. Think of it as a middle ground between Docker’s simplicity and full hypervisor complexity like KVM or VirtualBox.

As of early 2025, Incus has added OCI application container support, meaning you can now run Docker images natively inside Incus. It also ships with clustered LVM storage backends, cross-cluster OVN networking, and automated cluster rebalancing. It is no longer just a fork — it is a mature platform in its own right.

Why Install Incus on Manjaro?

Manjaro Linux is an Arch-based, rolling-release distribution. That matters here for one key reason: Incus is available in the official Arch Linux repositories, which Manjaro inherits directly. You do not need to add a PPA, a Copr repo, or any third-party source. A single pacman command is enough.

The rolling-release model also means you will always have access to the latest stable Incus version as soon as it is packaged upstream — no waiting for point releases or LTS cycles. And if you ever need the bleeding-edge development build, Manjaro’s deep AUR (Arch User Repository) integration makes that equally accessible. For anyone serious about Linux container management, Manjaro is one of the most friction-free environments to run Incus on.

Incus vs. LXD: What Is the Difference?

Both tools are rooted in the same codebase. The split is primarily about governance and long-term direction.

Feature Incus LXD
Maintainer Linux Containers (community) Canonical
Arch/Manjaro Package Official repo via pacman Not officially packaged
OCI Container Support Yes (since v6.6) Limited
Migration Tool lxd-to-incus included N/A
VM Support Yes (QEMU) Yes
License Apache 2.0 Apache 2.0

Incus includes a lxd-to-incus migration utility that supports LXD versions 4.0 through 5.18, making the transition seamless for existing LXD users. If you are starting fresh on Manjaro, Incus is simply the right tool to start with.

Prerequisites and System Requirements

Before running any installation command, make sure your system is properly prepared. Skipping this section is the single most common reason installations fail.

You will need:

  • A working Manjaro Linux installation (KDE, GNOME, XFCE, or any edition)
  • Linux kernel 5.4 or newer for full cgroup v2 support — verify with uname -r
  • sudo or root access
  • An active internet connection
  • base-devel and git installed (required for AUR builds)
  • At least 2 GB of RAM; 4 GB or more recommended if you plan to run VMs
  • 10+ GB of free disk space for container image storage
  • A 64-bit CPU with Intel VT-x or AMD-V enabled in BIOS (only required for VM support)

If you are unsure about virtualization support, run the following command to check:

grep -E 'vmx|svm' /proc/cpuinfo

Any output confirms that virtualization is supported by your CPU.

Method 1: Install Incus via Pacman (Recommended)

This is the cleanest, most reliable method for Manjaro users. The incus package lives in the official Arch community repository and is fully maintained upstream.

Step 1: Update Your System

Always start with a full system update on a rolling-release distribution. Outdated dependencies are a leading cause of post-install breakage.

sudo pacman -Syu

Wait for the update to complete, then reboot if the kernel was updated before proceeding.

Step 2: Install the Incus Package

sudo pacman -S incus

Pacman will automatically pull in all required dependencies — including lxc, dnsmasq, iproute2, squashfs-tools, and nftables — without any manual intervention. Accept all prompts and let the installation finish.

Step 3: Install Virtual Machine Support (Optional)

If you only need system containers, skip this step. If you plan to run full virtual machines inside Incus, install the QEMU stack:

sudo pacman -S qemu-desktop edk2-ovmf virtiofsd
  • qemu-desktop — provides the core QEMU hypervisor
  • edk2-ovmf — supplies UEFI firmware for virtual machines
  • virtiofsd — enables shared filesystem access between host and guest VMs

Step 4: Verify the Installation

incus --version

You should see a version string such as 6.x.x. If the command is not found, verify the package installed correctly with pacman -Qi incus.

Method 2: Install Incus via the AUR (Advanced Build)

The AUR method is for users who want the latest git-based development build, or when the official repo has not yet packaged a very recent release. Use this method with awareness — AUR packages are community-maintained and not officially supported by Manjaro.

Using yay (CLI Method)

If yay is not already installed, set it up first:

sudo pacman -S --needed base-devel git
git clone https://aur.archlinux.org/yay.git
cd yay && makepkg -si

Then install Incus from the AUR:

yay -S incus-git

The build process will compile Incus from source. This takes several minutes depending on your hardware specifications.

Using Pamac (GUI Method)

Pamac is Manjaro’s graphical package manager and makes AUR installation straightforward:

  1. Open Pamac (Add/Remove Software)
  2. Go to Settings → Third Party → Enable AUR support
  3. Search for incus-git
  4. Click Install and follow the prompts

Verify the AUR Installation

pacman -Qi incus-git

This confirms the package version, install date, and that all dependencies resolved successfully.

Configure subUID and subGID for Unprivileged Containers

This step is frequently overlooked by beginners, yet it is critical for Incus to function correctly. Incus launches unprivileged containers by default — containers that run without root privileges inside the namespace. To do this safely, the Linux kernel needs a valid UID and GID mapping range assigned to the root user.

First, check whether entries already exist:

cat /etc/subuid
cat /etc/subgid

If you see root:1000000:65536 (or similar) in both files, you are all set. If not — or if the files are empty — add the entries manually:

echo "root:1000000:65536" | sudo tee -a /etc/subuid
echo "root:1000000:65536" | sudo tee -a /etc/subgid

The format is username:start_uid:count. The range 1000000:65536 provides 65,536 unique UIDs and GIDs — the minimum recommended for secure container isolation. Without this configuration, Incus will either refuse to launch containers or produce confusing namespace errors.

Enable and Start the Incus Service

Incus integrates with systemd and uses socket activation by default — meaning the daemon only starts when a client actually connects to it, keeping idle resource usage minimal.

Enable and start the socket:

sudo systemctl enable --now incus.socket

Alternatively, if you prefer the daemon to run continuously in the background:

sudo systemctl enable --now incus.service

If you installed VM support packages, also enable the VM startup service:

sudo systemctl enable --now incus-startup.service

Verify everything is running cleanly:

sudo systemctl status incus.socket

Look for active (listening) in the output. A failed state at this point typically indicates a missing dependency or a subUID/subGID misconfiguration from the previous step.

Add Your User to the Incus Groups

Running every incus command with sudo is inconvenient and unnecessary. Incus provides two dedicated groups for access control:

  • incus — for standard container management tasks
  • incus-admin — for administrative operations like initialization and daemon configuration

Add your user to both groups:

sudo usermod -aG incus $USER
sudo usermod -aG incus-admin $USER

Apply group changes immediately without logging out:

newgrp incus

Or log out and back in to ensure both groups are fully active in your session. After this, all incus commands work without sudo.

Initialize Incus with incus admin init

Before launching a single container, Incus needs to be initialized. This one-time setup configures your storage backend and network bridge. Run the interactive wizard:

sudo incus admin init

You will be walked through a series of prompts. Here is how to answer them for a standard single-node setup:

Prompt Recommended Answer
Use clustering? No
New storage pool name default
Storage backend dir (simple) or btrfs / zfs for advanced
Create a new storage pool? Yes
Use existing bridge? No
Create a new bridge incusbr0
IPv4 / IPv6 addressing auto

Storage backend quick guide:

  • dir — simple directory-based storage; no special setup required; best for beginners
  • btrfs — supports copy-on-write snapshots efficiently; great for development environments
  • zfs — best performance and snapshot support; requires zfs-utils installed first
  • lvm — block-level storage; suited for production use with raw disk performance needs

For scripted or automated deployments, skip the wizard entirely:

sudo incus admin init --minimal

This uses safe defaults: dir storage backend, incusbr0 bridge, no clustering. Confirm that initialization was successful:

incus info

The output should display your storage pool, network bridge, and full server environment details.

Creating and Managing Your First Container

Everything is configured. Now comes the rewarding part.

Launch a Container

incus launch images:ubuntu/22.04 my-first-container

Incus contacts the images: remote at linuxcontainers.org, downloads the Ubuntu 22.04 image, creates the container, and starts it — all in one command. The first launch takes a moment for the image download; subsequent launches using the same base image are nearly instant thanks to local image caching.

Access the Container Shell

incus exec my-first-container -- bash

You are now inside a fully isolated Ubuntu environment running on your Manjaro host. Type exit to leave the container and return to your host shell.

List Running Containers

incus list

Launch Additional Containers

incus launch images:debian/12 debian-test
incus launch images:alpine/3.19 alpine-test

The second and third launches are noticeably faster since Incus caches downloaded images locally.

Create a Container Without Autostarting It

incus create images:ubuntu/22.04 staging-box -c boot.autostart=true

The -c boot.autostart=true profile flag ensures this container starts automatically whenever your Manjaro system boots.

Stop and Delete a Container

incus stop my-first-container
incus delete my-first-container

Essential Incus Command Reference

Command What It Does
incus list List all containers and VMs
incus launch images:<distro> <name> Create and start a container
incus exec <name> -- bash Open a shell inside a container
incus stop <name> Gracefully stop a container
incus start <name> Start a stopped container
incus restart <name> Restart a running container
incus delete <name> Delete a container permanently
incus snapshot <name> snap1 Create a container snapshot
incus copy <source> <dest> Clone a container
incus info Show server and daemon details
incus remote list View available image remotes
incus image list images: Browse all available images
incus profile list List configuration profiles

For VM-specific operations, add the --vm flag to the launch command:

incus launch images:ubuntu/22.04 my-vm --vm

Full command documentation is always available via incus help or man incus.

Troubleshooting Common Issues

Even on a clean Manjaro setup, a few issues come up regularly. Here is how to resolve the most common ones.

Error: Failed to Connect to the Daemon

The Incus service is not running. Start it with:

sudo systemctl start incus.socket

Then verify its status with sudo systemctl status incus.socket.

Error: No subuid/subgid Entries for Root

Missing UID/GID mapping. Re-add the entries to both /etc/subuid and /etc/subgid as shown earlier, then restart the service:

sudo systemctl restart incus

incus Command Not Found After AUR Install

The Go binary path is not in your shell’s PATH. Add it temporarily:

export PATH=$PATH:$(go env GOPATH)/bin

Add this line to your ~/.bashrc or ~/.zshrc for a permanent fix.

Container Has No Network Access

The incusbr0 bridge was not created properly during initialization. Re-run the wizard:

sudo incus admin init

Confirm a new bridge (incusbr0) is created and that dnsmasq is active.

KVM/QEMU Errors When Launching Virtual Machines

Either virtualization is not enabled in BIOS, or QEMU packages are missing. Enable Intel VT-x or AMD-V in your BIOS settings, then install the required packages:

sudo pacman -S qemu-desktop edk2-ovmf virtiofsd

Snapshot or Storage Errors

If using btrfs or zfs, make sure the respective kernel modules are loaded:

sudo modprobe btrfs
sudo modprobe zfs

For ZFS, install zfs-utils via pacman before attempting to use the ZFS storage backend.

Congratulations! You have successfully installed Incus. Thanks for using this tutorial for installing Incus container and virtual machine manager on Manjaro Linux system. For additional help or useful information, we recommend you check the official Incus website.

VPS Manage Service Offer
If you don’t have time to do all of this stuff, or if this is not your area of expertise, we offer a service to do “VPS Manage Service Offer”, starting from $10 (Paypal payment). Please contact us to get the best deal!

r00t

r00t is a dedicated and highly skilled Linux Systems Administrator with over a decade of progressive experience in designing, deploying, and maintaining enterprise-grade Linux infrastructure. His professional journey began in the telecommunications industry, where early exposure to Unix-based operating systems ignited a deep and enduring passion for open-source technologies and server administration.​ Throughout his career, r00t has demonstrated exceptional proficiency in managing large-scale Linux environments, overseeing more than 300 servers across development, staging, and production platforms while consistently achieving 99.9% system uptime. He holds advanced competencies in Red Hat Enterprise Linux (RHEL), Debian, and Ubuntu distributions, complemented by hands-on expertise in automation tools such as Ansible, Terraform, Bash scripting, and Python.
Back to top button