CachyOS / CachyOS/distribution

[Bug]: fwupd cannot stage UEFI capsule updates on Limine installs because EFI/cachyos is missing

Open
#424 5 comments 6 reactions 0 assignees View on GitHub
Dominant language
No language data
Stars
27
Forks
2
PR merge metrics
No merged PRs in 30d

Description

## Kernel
`7.0.0-1-cachyos`

## Desktop Environment / Window Manager
KDE Plasma

## CPU
Intel(R) Core(TM) Ultra 7 165H

## GPU / Driver
Intel Arc Graphics / `xe`
NVIDIA RTX 3000 Ada Generation Laptop GPU / `nvidia`

## Description
On a CachyOS installation using **Limine** with the ESP mounted at `/boot`, `fwupdmgr update` failed to stage UEFI capsule updates with this error:

```text
failed to write-firmware: cannot find either EFI/systemd or EFI/cachyos in ESP
```

This appears to be a CachyOS integration issue rather than an upstream `fwupd` bug.

I investigated `fwupd` upstream and found that this fallback is intentional:
- `fwupd` first checks `EFI/systemd`
- then `EFI/$ID`
- then `EFI/$ID_LIKE`
- and errors if none exist

On CachyOS, `/etc/os-release` contains `ID=cachyos`, so `fwupd` expects `EFI/cachyos` to exist if no supported bootloader integration is present.

On this system, Limine had created `EFI/limine`, but there was no `EFI/cachyos` directory.

## Steps to Reproduce
1. Install CachyOS with Limine on a UEFI system
2. Ensure the ESP is mounted at `/boot`
3. Run `fwupdmgr update`
4. Try to stage a UEFI capsule update (in my case Lenovo system firmware / Intel ME)

## Expected Behavior
`fwupd` should be able to stage firmware updates successfully on a standard CachyOS + Limine install, without requiring manual ESP fixes.

## Actual Behavior
`fwupd` failed with:

```text
failed to write-firmware: cannot find either EFI/systemd or EFI/cachyos in ESP
```

## Logs / Error Messages
Relevant error:

```text
failed to write-firmware: cannot find either EFI/systemd or EFI/cachyos in ESP
```

The CachyOS bugreport helper is interactive and I did not complete an upload link before filing this issue. I can provide one later if needed.

## Additional Context
### Workaround that worked
Creating the distro-specific ESP path and placing `fwupdx64.efi` there immediately fixed the problem:

```bash
sudo install -d -m 0755 /boot/EFI/cachyos
sudo install -m 0755 /usr/lib/fwupd/efi/fwupdx64.efi /boot/EFI/cachyos/fwupdx64.efi
sudo systemctl restart fwupd.service
fwupdmgr update
```

After doing this, `fwupd` successfully staged and installed the pending firmware updates.

### Evidence this is likely a CachyOS integration issue
I looked through the relevant repos:

- `CachyOS/distribution`
- described as the place for generic non-package-specific issues
- `CachyOS/cachyos-calamares`
- installs Limine via `limine-install`
- `src/modules/bootloader/main.py:806-837`
- installs Limine packages via `src/modules/pacstrap/main.py:111-116`
- but I could not find any handling to create `EFI/cachyos` for `fwupd`
- `CachyOS/New-Cli-Installer`
- has explicit `EFI/cachyos` logic for GRUB
- `installer-lib/src/bootloader.cpp:248-253`
- but its Limine path only calls `limine-install`
- `gucc/src/bootloader.cpp:399-467`
- and similarly does not seem to create `EFI/cachyos` for `fwupd`
- `CachyOS/CachyOS-PKGBUILDS`
- contains `limine/PKGBUILD`, but does not appear to contain the relevant `fwupd`/ESP integration logic

### Upstream `fwupd` references
Upstream code/docs indicate this behavior is by design:
- `plugins/uefi-capsule/fu-uefi-capsule-device.c`
- checks `EFI/systemd`, then `EFI/$ID`, then `EFI/$ID_LIKE`
- `plugins/uefi-capsule/README.md`
- says third-party bootloaders should implement `BootloaderSupportsFwupd` if they want native support
- `meson_options.txt`
- documents `efi_os_dir` as a distro integration knob

There is also a related upstream precedent in `fwupd` issue `#6538`, where a maintainer described a similar mismatch as a **distribution packaging bug**.

### Suggested fix direction
One of these would likely resolve it:
1. Ensure CachyOS installer paths that set up Limine also create `EFI/cachyos` on the ESP
2. Optionally place/copy `fwupdx64.efi` there when `fwupd-efi` is installed
3. Or otherwise document and support a Limine-specific `fwupd` integration path

If this issue belongs in a more specific CachyOS repo instead of `distribution`, I’m happy to re-file it there.

Contributor guide

No contributing guide indexed for this repository

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.