Open

Overlay whiteouts hide base-image files after layered packages moved into the base image (xrdb, fuse-libs)

Reported by a64z · assigned to Tohur
Report
October 5, 2026 7:17 AM

**Summary**

I had installed `xrdb` and `fuse-libs` with `dnf` (rum) into the persistent overlay. The `staging.20261003` update added both packages to the base image. On the first boot of the new deployment, overlay whiteouts were created in `/var/lib/rakuos/overlay/upper` for every file of both packages. These whiteouts hide the base image's copies, so the packages show as installed while their files are missing, and rum refuses to reinstall them because the base image provides them.


**Environment**

- RakuOS COSMIC Staging, image `quay.io/rakuos/rakuos-cosmic-v4:staging`

- Booted `staging.20261003`, rollback `staging.20260929`

- Kernel `7.2.8.p03raku.staging.v4-1.fc44.x86_64`

- Framework Laptop 16 (AMD Ryzen AI 300 series)

- Possibly relevant: on my system this is the first image that mounts with composefs (`bootc status` showed `composefs: null` on the previous image)


**What happened**

1. On `staging.20260929` I installed `xrdb` (Sep 30) and `fuse-libs` (DATE) with `sudo dnf install`.

2. I updated to `staging.20261003`, which includes both packages in the base image.

3. First boot of the new deployment was Oct 5 at 09:57. `rakuos-overlay-mount` logged `deployment changed ... reseed complete`. xrdb still worked at login: COSMIC logged no xrdb errors.

4. At 10:00:36 the same morning, whiteouts were created for every file of both packages. All entries are `c---------` character devices, i.e. overlayfs whiteouts:


```

2026-10-05 10:00  /var/lib/rakuos/overlay/upper/bin/xrdb

2026-10-05 10:00  /var/lib/rakuos/overlay/upper/lib64/libfuse.so.2

2026-10-05 10:00  /var/lib/rakuos/overlay/upper/lib64/libfuse.so.2.9.9

2026-10-05 10:00  /var/lib/rakuos/overlay/upper/lib64/libulockmgr.so.1

2026-10-05 10:00  /var/lib/rakuos/overlay/upper/lib64/libulockmgr.so.1.0.1

2026-10-05 10:00  /var/lib/rakuos/overlay/upper/lib/.build-id/25/65152b9b7af9670ca1460c1d4c04ed6e026387

2026-10-05 10:00  /var/lib/rakuos/overlay/upper/lib/.build-id/90/34877d01cdbb2d98c2037d4db05e103ad82bc2

2026-10-05 10:00  /var/lib/rakuos/overlay/upper/lib/.build-id/9b/f9304144947b362693010ff40c753431fbb6be

2026-10-05 10:00  /var/lib/rakuos/overlay/upper/share/licenses/fuse-libs

2026-10-05 10:00  /var/lib/rakuos/overlay/upper/share/licenses/xrdb

2026-10-05 10:00  /var/lib/rakuos/overlay/upper/share/man/man1/xrdb.1.gz

```


5. After that, the packages were registered but their files were gone, and rum would not repair them:


```

$ rpm -q xrdb

xrdb-1.2.2-7.fc44.x86_64

$ rpm -V xrdb

missing     /usr/bin/xrdb

missing   a /usr/lib/.build-id/25/65152b9b7af9670ca1460c1d4c04ed6e026387

missing     /usr/share/licenses/xrdb

missing   l /usr/share/licenses/xrdb/COPYING

missing   d /usr/share/man/man1/xrdb.1.gz

$ sudo dnf reinstall xrdb

'xrdb' is provided by the base image; rum will not layer a copy into the overlay to reinstall it — skipping.

Nothing to reinstall — no matching candidate found.

```


**Impact**

- COSMIC logs ``​`xrdb` not found, cannot update Xresources`` at every login, so X11 apps don't get Xresources updates.

- `libfuse.so.2` is hidden, so AppImages can't start.

- Anyone whose layered packages later move into the base image will likely hit the same problem, and there's no supported way to recover.


**Expected behavior**

When a layered package becomes part of the base image, its files should be removed from the upper directory itself, so the base image's copies show through. It looks like they were deleted through the merged `/usr` instead, which makes overlayfs create whiteouts that hide the base files.


**Workaround**

Delete the whiteouts from the upper directory, then reboot:


```

sudo find /var/lib/rakuos/overlay/upper -type c -newermt '2026-10-05 10:00' ! -newermt '2026-10-05 10:01' -print -delete

# reboot

rpm -V --nomtime xrdb fuse-libs   # now clean; /usr/bin/xrdb and /usr/lib64/libfuse.so.2 are back

```


**Suggestions**

- During reseed/cleanup, remove superseded layered files directly in the upper directory rather than through the merged view.

- After a reseed, delete any whiteouts whose paths belong to base-image packages.

- Let `rum reinstall` repair a base-image package whose files are missing, for example by clearing its whiteouts.

Reply
October 5, 2026 3:54 PM

hmm  need go bit deeper with the whiteout protection in RakuOS Core , will work on this  to fix

Reply