diff --git a/auto/scripts/create-usb-image-from-iso b/auto/scripts/create-usb-image-from-iso
index d78364a100efa5911528b05f13701db0c2a01eee..2b07fd5028ee96c47c12dfd3856347d3c387926d 100755
--- a/auto/scripts/create-usb-image-from-iso
+++ b/auto/scripts/create-usb-image-from-iso
@@ -4,6 +4,7 @@ import argparse
 import os
 import logging
 from contextlib import contextmanager
+from pathlib import Path
 import tempfile
 import time
 import subprocess
@@ -103,12 +104,7 @@ class ImageCreator(object):
         with self.setup_loop_device():
             self.create_gpt()
             self.create_partition()
-            # udisks' create_partition function seems to ignore arg_type
-            # in Stretch, so we set it via sgdisk.
-            # XXX: Remove set_partition_type once our Vagrant box runs Buster (#16868)
-            self.set_partition_type()
             self.set_partition_flags()
-            # XXX: Rescan?
             self.format_partition()
             with self.mount_iso():
                 self.extract_iso()
@@ -201,7 +197,7 @@ class ImageCreator(object):
             arg_name=PARTITION_LABEL,
             arg_options=GLib.Variant('a{sv}', None)
         )
-        # XXX: Tails Installer ignores GLib errors here
+        # Note: Tails Installer ignores GLib errors here
 
         logger.info("Partition: %r", partition)
         self._partition = partition
@@ -213,9 +209,6 @@ class ImageCreator(object):
         # (https://github.com/storaged-project/udisks/issues/418)
         execute(["/sbin/sgdisk", "--attributes=1:=:%x" % SYSTEM_PARTITION_FLAGS, self.image])
 
-    def set_partition_type(self):
-        execute(["/sbin/sgdisk", "--typecode=1:%s" % ESP_GUID, self.image])
-
     def format_partition(self):
         logger.info("Formatting partition")
         execute([
@@ -293,6 +286,18 @@ class ImageCreator(object):
                 '--directory', '/syslinux/',
                 '--install', self.image
             ])
+        # Detect a class of syslinux installation failure in which syslinux
+        # returns a 0 exit code (#18664)
+        with set_env("MTOOLS_SKIP_CHECK", "1"):
+            try:
+                # This will succeed if, and only if, the syslinux/ldlinux.sys
+                # file exists inside self.partition.props.block.props.device:
+                execute(['mdir',
+                         '-i', self.partition.props.block.props.device,
+                         '-a',
+                         '::syslinux/ldlinux.sys'])
+            except subprocess.CalledProcessError:
+                raise ImageCreationError("syslinux installation failed")
 
     def set_guids(self):
         logger.info("Setting disk and partition GUID")