# edera-check

3 min read · Beginner

---

`edera-check` is a standalone CLI tool that validates whether your system is ready to install and run Edera. Run it **before** installation to catch issues early, and **after** to confirm everything is working.

It also generates a compressed system info bundle that stays on your machine, useful for sharing with [support@edera.dev](mailto:support@edera.dev) if you run into problems.

**Source:** [github.com/edera-dev/edera-check](https://github.com/edera-dev/edera-check)

## Installation

### Docker (recommended)

```bash
docker run \
  --pull always \
  --pid host \
  --privileged \
  ghcr.io/edera-dev/edera-check:stable preinstall
```

Podman should also work. The container image is signed with [cosign](https://github.com/sigstore/cosign). Requires `--pid host` and `--privileged` to access host system state.

### Static binary

```bash
curl -sL $(curl -s https://api.github.com/repos/edera-dev/edera-check/releases/latest \
  | grep -oP '"browser_download_url": "\K.*linux-x86_64-musl[^"]*') -o edera-check
chmod +x edera-check
sudo ./edera-check preinstall
```

Binaries are available for `x86_64` and `aarch64`. See [releases](https://github.com/edera-dev/edera-check/releases) for all options.

### Cargo

```bash
cargo install edera-check
sudo edera-check preinstall
```

## Commands

### `preinstall`

Run on a system **without** Edera installed to validate it meets all requirements:

```bash
sudo edera-check preinstall
```

Use the Docker method if you don’t want to install the binary:

```bash
docker run --pull always --pid host --privileged \
  ghcr.io/edera-dev/edera-check:stable preinstall
```

### `postinstall`

Run on a system that **has** Edera installed and booted to validate it’s functional:

```bash
sudo edera-check postinstall
```

Both subcommands support additional flags (such as `--byo-kernel`, `--report-dir`, and `--only-checks`). Run `edera-check preinstall --help` or `edera-check postinstall --help` for the full list.

## Check groups

Checks are organized into groups with severity tiers:

| Group | Severity | Description |
| --- | --- | --- |
| System Checks | Required | Memory and disk requirements (minimum: 1 GB on `/usr`, 5 GB on `/var/lib`, 200 MB on `/boot`) |
| Kernel Checks | Required | Kernel version and module requirements |
| IOMMU Checks | Optional | IOMMU capability for device passthrough |
| PVH Checks | Optional | PVH paravirtualization support |
| NUMA Checks | Advisory | NUMA topology awareness |
| BYO Kernel Checks | Optional | Custom kernel validation (requires `--byo-kernel` flag) |
| System Info Recorder | Advisory | Captures system info into the report bundle |

**Severity tiers:**

- **Required**: Must pass for Edera to install and run correctly.
- **Optional**: Enhanced capabilities. Edera works without these, but some features may be unavailable.
- **Advisory**: Informational. Captures data for diagnostics.

## Example output

```text
Collecting information about the current host as part of locally-generated preinstall report.
The information collected will remain on this host.
Running Group System Checks [Required] - System requirement checks
    . Enough Memory: Passed
    . Enough Disk: Passed
System Checks: Passed
Running Group Kernel Checks [Required] - Kernel requirement checks
    . Host Has Necessary Modules: Passed
    . Host Kernel Version Is Good: Passed
Kernel Checks: Passed
Running Group IOMMU Checks [Optional] - IOMMU capability checks
    . IOMMU Support: Passed
IOMMU Checks: Passed
Running Group PVH Checks [Optional] - PVH capability checks
    . PVH Support: Passed
PVH Checks: Passed
Running Group NUMA Checks [Advisory] - NUMA capability checks
    . IOMMU Support: Passed
NUMA Checks: Passed
Running Group System Info Recorder [Advisory] - Record system information for reporting purposes
    . Captured lspci -vvv: Passed
    . Captured dmidecode: Passed
    . Captured /proc/cpuinfo: Passed
    . Captured /proc/cmdline: Passed
    . Captured /boot/grub2/grub.cfg: Passed
    . Captured boot/config-6.18.7-200.fc43.x86_64: Passed
    . Record current host kernel loaded modules: Passed
System Info Recorder: Passed
All Done! Report saved: ./edera-preinstall-report-StolidWingnut-20260218-003925.tar.gz
```

## System info bundle

Every run generates a compressed `.tar.gz` report that stays on your machine. The filename follows the pattern:

```text
edera-preinstall-report-{Name}-{YYYYMMDD}-{HHMMSS}.tar.gz
```

The bundle captures:

- `lspci -vvv`: PCI device details
- `dmidecode`: Hardware and BIOS data
- `/proc/cpuinfo`: CPU information
- `/proc/cmdline`: Kernel command-line arguments
- GRUB bootloader configuration
- Kernel configuration
- Loaded kernel modules

No data is transmitted externally. If you hit installation issues, send this bundle to [support@edera.dev](mailto:support@edera.dev) to help us diagnose your environment.

## Exit codes

Exit code is **non-zero** if any **Required** check group fails or errors. Optional and Advisory failures are reported in the output but don’t affect the exit code. This makes `edera-check` usable in scripts and CI pipelines.

## Requirements

- Must run as root (`sudo`) or in a privileged container
- Linux only (x86_64 and aarch64)
