************
Installation
************
ADARE uses **QEMU** as its hypervisor on Linux and macOS hosts — that's the
recommended path and the rest of this page walks through it top-to-bottom.
**VirtualBox** is also supported and is the only option for Windows hosts; if
that's you, jump to :ref:`hypervisor-virtualbox` below.
.. _common-prereqs:
Step 1: Install Prerequisites
*****************************
These are required regardless of which hypervisor you use: **Python 3.10+**,
**uv**, **make**, and **git**.
.. tab-set::
.. tab-item:: Linux
.. tab-set::
.. tab-item:: Ubuntu/Debian
.. code-block:: bash
sudo apt update
sudo apt install python3 python3-venv make git
curl -LsSf https://astral.sh/uv/install.sh | sh
.. tab-item:: Fedora/RHEL
.. code-block:: bash
sudo dnf install python3 make git
curl -LsSf https://astral.sh/uv/install.sh | sh
.. tab-item:: Arch
.. code-block:: bash
sudo pacman -S python make git
curl -LsSf https://astral.sh/uv/install.sh | sh
After installing ``uv``, restart your shell so it appears on ``PATH``.
.. tab-item:: macOS
Install Python via `python.org `_ or
Homebrew, then install ``uv`` and the build tools:
.. code-block:: bash
brew install python make git
curl -LsSf https://astral.sh/uv/install.sh | sh
After installing ``uv``, restart your shell so it appears on ``PATH``.
.. tab-item:: Windows
Install Python from PowerShell:
.. code-block:: powershell
# Download Python installer
$pythonInstaller = "https://www.python.org/ftp/python/3.12.0/python-3.12.0-amd64.exe"
$installerPath = "$env:TEMP\python-installer.exe"
Invoke-WebRequest $pythonInstaller -OutFile $installerPath
# Install Python (add to PATH, install pip)
Start-Process -FilePath $installerPath -ArgumentList "/quiet", "InstallAllUsers=1", "PrependPath=1" -Wait
Install ``uv``:
.. code-block:: powershell
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
Install ``make`` and ``git`` via your preferred method (Git for Windows,
Chocolatey, or Scoop). Restart your shell, then verify:
.. code-block:: powershell
python --version
uv --version
.. _hypervisor-qemu:
Step 2: Install QEMU
********************
.. note::
QEMU is not supported on Windows hosts. If you're on Windows, skip ahead
to :ref:`hypervisor-virtualbox`.
.. tab-set::
.. tab-item:: Linux
.. tab-set::
.. tab-item:: Ubuntu/Debian
.. code-block:: bash
sudo apt update
sudo apt install qemu-system-x86 qemu-utils python3-guestfs libguestfs-tools libvirt-dev
.. tab-item:: Fedora/RHEL
.. code-block:: bash
sudo dnf install qemu-kvm qemu-img python3-libguestfs libguestfs-tools libvirt-devel
.. tab-item:: Arch
.. code-block:: bash
sudo pacman -S qemu python-guestfs libguestfs libvirt
.. note::
ADARE supports **Ubuntu and Windows guest VMs only** under QEMU.
macOS guest VMs are not supported.
.. note::
``libvirt-dev`` / ``libvirt-devel`` / ``libvirt`` provide the headers
required to build the ``libvirt-python`` wheel that ``make install``
pulls in by default. Install the system package before running
``make install`` in Step 3.
.. note::
The libguestfs tools are required for file operations with stopped
QEMU VMs.
.. tab-item:: macOS
On macOS, QEMU must be installed via **MacPorts**. The Homebrew build of
QEMU has the ``smbd`` path hardcoded to ``/opt/local/sbin/smbd`` (a
MacPorts path), so the MacPorts build is the supported way to get
working SMB host-to-guest sharing out of the box.
First, install MacPorts itself by following the official installer for
your macOS version: `macports.org/install.php
`_. After installation, restart
your shell so ``/opt/local/bin`` is on ``PATH``, then verify:
.. code-block:: bash
port version
Install QEMU and its samba/libvirt dependencies via MacPorts:
.. code-block:: bash
sudo port install qemu samba4 libvirt
MacPorts installs samba's ``smbd`` at ``/opt/local/sbin/smbd``, which is
exactly the path QEMU expects — no symlink needed.
.. note::
ADARE supports **Ubuntu and Windows guest VMs only** under QEMU.
macOS guest VMs are not supported.
.. note::
On macOS, virtiofsd is not available. ADARE uses QEMU's built-in SMB
sharing (via ``samba``) to mount host directories in the guest VM.
This provides the same shared-directory experience as virtiofs on
Linux. If ``samba`` is not installed at ``/opt/local/sbin/smbd``,
ADARE falls back to QGA file transfer (slower, but functional).
ADARE will detect the mismatch and print the exact command needed.
Step 3: Install ADARE
*********************
With prerequisites and QEMU in place, clone and install ADARE.
.. tab-set::
.. tab-item:: Linux
.. code-block:: bash
git clone https://github.com/fkie-cad/adare.git
cd adare
make install
``make install`` sets up a Python virtual environment, installs
dependencies via uv, and installs the ADARE command-line tools. It
includes QEMU support by default (it pulls in the ``libvirt-python``
extra), so make sure the libvirt development headers from Step 2 are
installed first or the wheel build will fail.
.. note::
``make install-qemu`` is kept as a backwards-compatible alias for
``make install`` on Linux/macOS.
.. tab-item:: macOS
.. code-block:: bash
git clone https://github.com/fkie-cad/adare.git
cd adare
make install
``make install`` sets up a Python virtual environment, installs
dependencies via uv, and installs the ADARE command-line tools. It
includes QEMU support by default (it pulls in the ``libvirt-python``
extra), so make sure ``libvirt`` is installed via MacPorts (Step 2) or
the wheel build will fail.
Verify Installation
*******************
Check that ADARE is on your ``PATH``:
.. code-block:: bash
adare --version
You should see output similar to ``ADARE version 0.1.0``. Then test the help
menu:
.. code-block:: bash
adare --help
This should display the main help menu without errors.
.. _choose-hypervisor:
.. _hypervisor-virtualbox:
Alternative: VirtualBox
***********************
VirtualBox is a supported alternative to QEMU. Pick it if:
- You're on a **Windows host** — VirtualBox is the only supported backend
there.
- You want a **GUI-managed VM** you can also poke at outside ADARE.
- You **already have VirtualBox installed** and don't need QEMU's extras
(VirtioFS on Linux, HVF acceleration, SMB sharing on macOS).
The choice is per-environment: set ``hypervisor: virtualbox`` in the
environment YAML to override the project default. You can switch later
without reinstalling ADARE.
Install VirtualBox
==================
.. tab-set::
.. tab-item:: Linux
Download and install from
`virtualbox.org `_.
.. note::
ADARE supports **Windows and Ubuntu guest VMs only** under
VirtualBox. macOS guest VMs are not supported.
.. tab-item:: Windows
Download and install from
`virtualbox.org `_.
.. note::
On Windows, ensure **Hyper-V is disabled** as it conflicts with
VirtualBox:
- Open "Turn Windows features on or off"
- Uncheck "Hyper-V"
- Restart your computer
.. note::
ADARE supports **Windows and Ubuntu guest VMs only** under
VirtualBox. macOS guest VMs are not supported.
Install ADARE (VirtualBox-only)
===============================
.. tab-set::
.. tab-item:: Linux
If you only need VirtualBox and want to skip QEMU extras, run the
installer directly instead of ``make install``:
.. code-block:: bash
git clone https://github.com/fkie-cad/adare.git
cd adare
./adare/install/install.sh
.. tab-item:: Windows
.. code-block:: powershell
git clone https://github.com/fkie-cad/adare.git
cd adare
make install
On Windows, ``make install`` runs the PowerShell installer and does
**not** install QEMU extras (Windows host support is experimental and
VirtualBox is the supported backend there).
Tested Configurations
*********************
ADARE has been tested with the following software versions:
.. list-table::
:widths: 25 30 20
:header-rows: 1
* - Software
- Version
- Platform
* - **Python**
- 3.13.2
- All platforms
* - **uv**
- 0.7+
- All platforms
* - **VirtualBox**
- 7.0.26+
- All platforms
* - **Ubuntu host**
- 22.04
- Recommended
* - **macOS host**
- 13+
- Tested
* - **Windows host**
- 10+
- Experimental
.. note::
While later versions should work, earlier versions (especially Python < 3.10) are not supported due to language features used by ADARE.
System Requirements
*******************
.. list-table::
:widths: 20 40
:header-rows: 1
* - Component
- Minimum
* - **RAM**
- 16 GB or more
* - **Storage**
- 50 GB (for windows VM more)
* - **CPU**
- 6+ cores with virtualization support
* - **OS**
- Linux (tested on Ubuntu 22.04) or macOS 13+; Windows 10+ is experimental
Next Steps
**********
After successful installation:
1. **Quick Start**: Follow the :doc:`tutorial` guide
2. **Learn the Basics**: Explore :doc:`/guide/projects`, :doc:`/guide/environments`, and :doc:`/guide/experiments`