diff --git a/.cirrus-ci/pkg-install.sh b/.cirrus-ci/pkg-install.sh
new file mode 100644
index 000000000000..ef83e5284078
--- /dev/null
+++ b/.cirrus-ci/pkg-install.sh
@@ -0,0 +1,15 @@
+#!/bin/sh
+set -e
+
+pkg install -y "$@" && exit 0
+
+cat <<EOF
+pkg install failed
+
+dmesg tail:
+$(dmesg | tail)
+
+trying again
+EOF
+
+pkg install -y "$@"
diff --git a/.cirrus.yml b/.cirrus.yml
index 2cc2243162ac..823d8bc2e1b0 100644
--- a/.cirrus.yml
+++ b/.cirrus.yml
@@ -17,7 +17,7 @@ task:
   name: World and kernel amd64 build and boot smoke test
   timeout_in: 120m
   install_script:
-  - pkg install -y qemu uefi-edk2-qemu-x86_64 llvm12
+  - sh .cirrus-ci/pkg-install.sh qemu uefi-edk2-qemu-x86_64 llvm12
   setup_script:
   - uname -a
   - df -m