diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index 42a419ffe..2ac6b6943 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -59,7 +59,7 @@ jobs:
             # Full suite: all OSes
             echo 'package_os_matrix=["fedora-43","fedora-44","fedora-45","centos-9","centos-10"]' >> "$GITHUB_OUTPUT"
             echo 'integration_os_matrix=["fedora-43","fedora-44","centos-9","centos-10"]' >> "$GITHUB_OUTPUT"
-            echo 'upgrade_os_matrix=["fedora-43","centos-10"]' >> "$GITHUB_OUTPUT"
+            echo 'upgrade_os_matrix=["fedora-44","centos-10"]' >> "$GITHUB_OUTPUT"
             echo 'run_heavy=true' >> "$GITHUB_OUTPUT"
           elif echo "$LABELS" | jq -e 'index("ci/tier-1")' > /dev/null; then
             # Tier-1 only: centos-10
diff --git a/crates/initramfs/dracut/module-setup.sh b/crates/initramfs/dracut/module-setup.sh
index 2e5187dfd..5250dffd3 100755
--- a/crates/initramfs/dracut/module-setup.sh
+++ b/crates/initramfs/dracut/module-setup.sh
@@ -14,7 +14,7 @@ install() {
     local service=bootc-root-setup.service
     dracut_install /usr/lib/bootc/initramfs-setup
     inst_simple "${systemdsystemunitdir}/${service}"
-    mkdir -p "${initdir}${systemdsystemconfdir}/initrd-root-fs.target.wants"
+    mkdir -p "${initdir}${systemdsystemunitdir}/initrd-root-fs.target.wants"
     ln_r "${systemdsystemunitdir}/${service}" \
-        "${systemdsystemconfdir}/initrd-root-fs.target.wants/${service}"
+        "${systemdsystemunitdir}/initrd-root-fs.target.wants/${service}"
 }
diff --git a/hack/provision-fetch.sh b/hack/provision-fetch.sh
index fb73b8695..35f6e8817 100755
--- a/hack/provision-fetch.sh
+++ b/hack/provision-fetch.sh
@@ -137,6 +137,44 @@ if ! rpm -q ostree 2>/dev/null | grep -q "2026\." ; then
     esac
 fi
 
+# Temporary: downgrade kernel to last 6.x when 7.0 or 7.1 is present.
+# Kernel 7.x broke composefs ("has no fs-verity digest"), fixed in 7.2.
+# xref https://github.com/bootc-dev/bootc/issues/2174
+# TODO: Remove once all base images ship kernel >= 7.2
+kernel_ver=$(rpm -q --qf '%{VERSION}' kernel 2>/dev/null || true)
+case "${kernel_ver}" in
+    7.0.*|7.1.*)
+        arch=$(uname -m)
+        koji_kver="6.19.10"
+        koji_krel="300.fc44"
+        koji_base="https://kojipkgs.fedoraproject.org/packages/kernel/${koji_kver}/${koji_krel}/${arch}"
+        kernel_td=$(mktemp -d)
+        trap 'rm -rf "${kernel_td}"' EXIT
+        for pkg in kernel kernel-core kernel-modules kernel-modules-core; do
+            curl --retry 5 --retry-delay 5 --retry-all-errors -fL \
+                "${koji_base}/${pkg}-${koji_kver}-${koji_krel}.${arch}.rpm" \
+                -o "${kernel_td}/${pkg}.rpm"
+        done
+        # Skip scriptlets: kernel-core's posttrans runs `kernel-install add`
+        # which calls rpm-ostree, and that fails inside a container build.
+        # We manually run depmod afterward since it's the only useful
+        # scriptlet the kernel packages would otherwise execute.
+        dnf -y install --allowerasing --setopt=tsflags=noscripts "${kernel_td}"/*.rpm
+        /sbin/depmod -a "${koji_kver}-${koji_krel}.$(uname -m)"
+        # Remove any leftover module directories for the old kernel (e.g.
+        # initramfs.img generated by the base image build is not RPM-owned
+        # so dnf does not clean it up).
+        for old_kmod_dir in /usr/lib/modules/*; do
+            kd_ver=$(basename "${old_kmod_dir}")
+            if [[ "${kd_ver}" != "${koji_kver}-"* ]]; then
+                rm -rf "${old_kmod_dir}"
+            fi
+        done
+        rm -rf "${kernel_td}"
+        trap - EXIT
+        ;;
+esac
+
 dnf clean all
 # Clean logs and caches
 rm /var/log/* /var/cache /var/lib/{dnf,rpm-state,rhsm} -rf
diff --git a/tmt/tests/Dockerfile.upgrade-source b/tmt/tests/Dockerfile.upgrade-source
index 5a3c2c8d1..8cc50eaa2 100644
--- a/tmt/tests/Dockerfile.upgrade-source
+++ b/tmt/tests/Dockerfile.upgrade-source
@@ -40,6 +40,16 @@ if [[ "${variant}" == composefs* ]]; then
     echo 'add_dracutmodules+=" bootc "' > /etc/dracut.conf.d/50-bootc-composefs.conf
     kver=$(cd /usr/lib/modules && echo *)
     dracut --force --kver "$kver" "/usr/lib/modules/$kver/initramfs.img"
+else
+    . /usr/lib/os-release
+
+    if [[ $ID == "fedora" && $VERSION_ID == "44" ]]; then
+        # We skip kernel postinstall in "provision-fetch" which would've generated
+        # the initrd, so we do it ourselves here
+        kver=$(cd /usr/lib/modules && echo *)
+        dracut --force --kver "$kver" "/usr/lib/modules/$kver/initramfs.img"
+    fi
 fi
+
 rm -rf /run/provision
 EORUN
