diff --git a/infra/azure/azure-pipelines.yml b/infra/azure/azure-pipelines.yml
index 584cabecd632c6f600fccfbbeaab23c6fbf42ae5..b79f982514a77025795294c591d2f0ed91ffdadb 100644
--- a/infra/azure/azure-pipelines.yml
+++ b/infra/azure/azure-pipelines.yml
@@ -3,7 +3,7 @@ trigger:
 - master
 
 pool:
-  vmImage: 'ubuntu-20.04'
+  vmImage: 'ubuntu-24.04'
 
 variables:
   ansible_version: "-core >=2.16,<2.17"
diff --git a/infra/azure/nightly.yml b/infra/azure/nightly.yml
index 2790199eb24b03e1e0ddf1cc974c9ff282c46a37..7eb3a30beac611560afef31f2d0159298ffcdcbc 100644
--- a/infra/azure/nightly.yml
+++ b/infra/azure/nightly.yml
@@ -10,7 +10,7 @@ schedules:
 trigger: none
 
 pool:
-  vmImage: 'ubuntu-20.04'
+  vmImage: 'ubuntu-24.04'
 
 variables:
   # We need to have two sets, as c8s is not supported by all ansible versions
diff --git a/infra/azure/pr-pipeline.yml b/infra/azure/pr-pipeline.yml
index 648a554ec305bf97e6b5c4853f96e3a92dc462da..d87b24d9d2ebb82ad08964691410fcb61a7963cf 100644
--- a/infra/azure/pr-pipeline.yml
+++ b/infra/azure/pr-pipeline.yml
@@ -3,7 +3,7 @@ trigger:
 - master
 
 pool:
-  vmImage: 'ubuntu-20.04'
+  vmImage: 'ubuntu-24.04'
 
 variables:
   distros: "fedora-latest,c10s,c9s,c8s,fedora-rawhide"
diff --git a/infra/image/shcontainer b/infra/image/shcontainer
index a2d36c65c2e06aaa7e88fc34d52809e423b26270..636cd678c0e5934ce1dcb4e1a8a6670667306c92 100644
--- a/infra/image/shcontainer
+++ b/infra/image/shcontainer
@@ -47,6 +47,8 @@ container_start() {
 
     log info "= Starting ${name} ="
     podman start "${name}"
+    # Ensure /etc/shadow is readable
+    podman exec "${name}" bash -c "chmod u+r /etc/shadow"
     echo
 }
 
diff --git a/utils/setup_test_container.sh b/utils/setup_test_container.sh
index 0916c27f530fdf706acd63e8ab8f03a0742942e9..2cd11dc348f1b9dd07fd27bd3250427e973371c4 100755
--- a/utils/setup_test_container.sh
+++ b/utils/setup_test_container.sh
@@ -79,6 +79,20 @@ shift
 prepare_container "${scenario}" "${IMAGE_TAG}"
 start_container "${scenario}"
 
+log info "Wait till systemd-journald is running"
+max=20
+wait=2
+count=0
+while ! podman exec "${scenario}" ps -x | grep -q "systemd-journald"
+do
+    if [ $count -ge $max ]; then
+        die "Timeout: systemd-journald is not starting up"
+    fi
+    count=$((count+1))
+    log none "Waiting ${wait} seconds .."
+    sleep ${wait}
+done
+
 # wait for FreeIPA services to be available (usually ~45 seconds)
 log info "Wait for container to be initialized."
 wait=15