diff --git a/mkosi/mkosi.conf.d/debian-ubuntu/mkosi.conf b/mkosi/mkosi.conf.d/debian-ubuntu/mkosi.conf index 64850af0c0..fe4eeb04fc 100644 --- a/mkosi/mkosi.conf.d/debian-ubuntu/mkosi.conf +++ b/mkosi/mkosi.conf.d/debian-ubuntu/mkosi.conf @@ -48,7 +48,6 @@ Packages= hostname iproute2 iputils-ping - isc-dhcp-server knot libcap-ng-utils libdw-dev diff --git a/mkosi/mkosi.conf.d/debian-ubuntu/mkosi.conf.d/isc-dhcp.conf b/mkosi/mkosi.conf.d/debian-ubuntu/mkosi.conf.d/isc-dhcp.conf new file mode 100644 index 0000000000..2977041fd9 --- /dev/null +++ b/mkosi/mkosi.conf.d/debian-ubuntu/mkosi.conf.d/isc-dhcp.conf @@ -0,0 +1,16 @@ +# SPDX-License-Identifier: LGPL-2.1-or-later + +[TriggerMatch] +Distribution=debian +Release=bullseye +Release=bookworm +Release=trixie + +[TriggerMatch] +Distribution=ubuntu +Release=jammy +Release=noble +Release=questing + +[Content] +Packages=isc-dhcp-server diff --git a/src/shared/discover-image.c b/src/shared/discover-image.c index 885b896de4..5bb5474608 100644 --- a/src/shared/discover-image.c +++ b/src/shared/discover-image.c @@ -455,10 +455,26 @@ static int image_make( uint64_t on_mount_id; int _mnt_id; + /* The fallback is required for CentOS 9 compatibility when working on a directory located on an + * overlayfs. */ r = name_to_handle_at_try_fid(fd, /* path= */ NULL, &fh, &_mnt_id, &on_mount_id, AT_EMPTY_PATH); - if (r < 0) - return r; - if (r == 0) + if (r < 0) { + if (is_name_to_handle_at_fatal_error(r)) + return r; + + r = path_get_unique_mnt_id_at(fd, /* path= */ NULL, &on_mount_id); + if (r < 0) { + if (!ERRNO_IS_NEG_NOT_SUPPORTED(r) && r != -EUNATCH) + return r; + + int on_mount_id_fallback = -1; + r = path_get_mnt_id_at(fd, /* path= */ NULL, &on_mount_id_fallback); + if (r < 0) + return r; + + on_mount_id = on_mount_id_fallback; + } + } else if (r == 0) on_mount_id = _mnt_id; if (S_ISDIR(st->st_mode)) {