This issue is really weird, but it recreates easily on my own system (ubuntu 22.04.4 on host, running incus 6.0 LTS)
$ incus create images:ubuntu/24.04/cloud foo1 # the exact image is 45b8d997e210
Creating foo1
$ incus publish foo1 --alias foo1 --reuse --public
Instance published with fingerprint: 025b078661e05e381ca802429eb65488ca578eedf5471a43e275e7befbd27d95
$ incus create foo1 foo2
Creating foo2
$ incus start foo1 foo2
$ incus exec foo1 -- dpkg -V dhcpcd-base
$ incus exec foo2 -- dpkg -V dhcpcd-base
missing /usr/lib/x86_64-linux-gnu/dhcpcd/dev/udev.so
$
The image “foo1” is created directly from instance “foo1” (which hasn’t even been started). Then instance “foo2” is created from this image. But somewhere along that process, the file /usr/lib/x86_64-linux-gnu/dhcpcd/dev/udev.so
goes missing.
Are there any other differences? No - except they create different journal files at startup.
# find /var/lib/incus/containers/nsrc-builder_foo1/ -type f | sed 's/foo1/fooX/g' | sort >a
# find /var/lib/incus/containers/nsrc-builder_foo2/ -type f | sed 's/foo2/fooX/g' | sort >b
# diff -u a b
--- a 2024-05-17 10:21:59.207955347 +0000
+++ b 2024-05-17 10:22:02.963982709 +0000
@@ -5884,7 +5884,6 @@
/var/lib/incus/containers/nsrc-builder_fooX/rootfs/usr/lib/x86_64-linux-gnu/cryptsetup/libcryptsetup-token-systemd-fido2.so
/var/lib/incus/containers/nsrc-builder_fooX/rootfs/usr/lib/x86_64-linux-gnu/cryptsetup/libcryptsetup-token-systemd-pkcs11.so
/var/lib/incus/containers/nsrc-builder_fooX/rootfs/usr/lib/x86_64-linux-gnu/cryptsetup/libcryptsetup-token-systemd-tpm2.so
-/var/lib/incus/containers/nsrc-builder_fooX/rootfs/usr/lib/x86_64-linux-gnu/dhcpcd/dev/udev.so
/var/lib/incus/containers/nsrc-builder_fooX/rootfs/usr/lib/x86_64-linux-gnu/e2fsprogs/e2scrub_all_cron
/var/lib/incus/containers/nsrc-builder_fooX/rootfs/usr/lib/x86_64-linux-gnu/e2fsprogs/e2scrub_fail
/var/lib/incus/containers/nsrc-builder_fooX/rootfs/usr/lib/x86_64-linux-gnu/engines-3/afalg.so
@@ -20497,7 +20496,7 @@
/var/lib/incus/containers/nsrc-builder_fooX/rootfs/var/log/dmesg
/var/lib/incus/containers/nsrc-builder_fooX/rootfs/var/log/dpkg.log
/var/lib/incus/containers/nsrc-builder_fooX/rootfs/var/log/faillog
-/var/lib/incus/containers/nsrc-builder_fooX/rootfs/var/log/journal/7665a148b1a24b708af1eb21d8dc20b1/system.journal
+/var/lib/incus/containers/nsrc-builder_fooX/rootfs/var/log/journal/a728031f49f64d0d8c1aa845301ba362/system.journal
/var/lib/incus/containers/nsrc-builder_fooX/rootfs/var/log/lastlog
/var/lib/incus/containers/nsrc-builder_fooX/rootfs/var/log/syslog
/var/lib/incus/containers/nsrc-builder_fooX/rootfs/var/log/unattended-upgrades/unattended-upgrades-shutdown.log
What about the image itself?
$ incus image list foo1
+-------+--------------+--------+---------------------------------------------+--------------+-----------+-----------+----------------------+
| ALIAS | FINGERPRINT | PUBLIC | DESCRIPTION | ARCHITECTURE | TYPE | SIZE | UPLOAD DATE |
+-------+--------------+--------+---------------------------------------------+--------------+-----------+-----------+----------------------+
| foo1 | 025b078661e0 | yes | Ubuntu noble amd64 (cloud) (20240516_07:42) | x86_64 | CONTAINER | 194.09MiB | 2024/05/17 10:15 UTC |
+-------+--------------+--------+---------------------------------------------+--------------+-----------+-----------+----------------------+
# tar -tvzf /var/lib/incus/images/025b078661e05e381ca802429eb65488ca578eedf5471a43e275e7befbd27d95 rootfs/usr/lib/x86_64-linux-gnu/dhcpcd
drwxr-xr-x root/root 0 2024-05-16 07:43 rootfs/usr/lib/x86_64-linux-gnu/dhcpcd
drwxr-xr-x root/root 0 2024-05-16 07:43 rootfs/usr/lib/x86_64-linux-gnu/dhcpcd/dev
-rw-r--r-- root/root 14488 2024-03-31 08:48 rootfs/usr/lib/x86_64-linux-gnu/dhcpcd/dev/udev.so
So the file is in the image. Is something deleting when it starts up, or beforehand? Let’s create another instance and not start it.
$ incus create foo1 foo3
$ incus file pull foo3/usr/lib/x86_64-linux-gnu/dhcpcd/dev/udev.so - | md5sum
Error: Not Found
d41d8cd98f00b204e9800998ecf8427e -
$ md5sum </dev/null
d41d8cd98f00b204e9800998ecf8427e -
$ incus file pull foo3/usr/lib/x86_64-linux-gnu/security/pam_unix.so - | md5sum
2ecd769e3a77af2afa1ce56428a5ab82 -
Therefore, it’s going missing before the container is even launched. How bizarre??
Aside: the symptom which brought this to my attention is LP#2039342.