diff --git a/setup.sh b/setup.sh
index a8ea41d..018aa2e 100644
--- a/setup.sh
+++ b/setup.sh
@@ -612,11 +612,41 @@ function paru_install () {
     fi
 }
 
+function configure_syslinux () {
+    paru_install 'syslinux'
+    cp /usr/lib/syslinux/bios/*.c32 /boot/syslinux
+    extlinux --install /boot/syslinux
+    cat > /boot/syslinux/syslinux.cfg <<EOF
+UI menu.c32
+PROMPT 0
+
+MENU TITLE ZFSBootMenu
+TIMEOUT 100
+
+DEFAULT zfsbootmenu
+
+LABEL zfsbootmenu
+  MENU LABEL ZFSBootMenu
+  KERNEL /zfsbootmenu/vmlinuz-bootmenu
+  INITRD /zfsbootmenu/initramfs-bootmenu.img
+  APPEND zfsbootmenu quiet loglevel=0
+
+LABEL zfsbootmenu-backup
+  MENU LABEL ZFSBootMenu (Backup)
+  KERNEL /zfsbootmenu/vmlinuz-bootmenu-backup
+  INITRD /zfsbootmenu/initramfs-bootmenu-backup.img
+  APPEND zfsbootmenu quiet loglevel=0
+EOF
+    dd bs=440 count=1 conv=notrunc if='/usr/lib/syslinux/bios/mbr.bin' of="${boot_drive}"
+}
+
 function configure_zfsbootmenu () {
     #2.9
     paru_install 'zfsbootmenu'
-    mkdir -p '/etc/zfsbootmenu/posthooks.d'
-    cat > '/etc/zfsbootmenu/config.yaml' <<EOF
+
+    if [[ "${part_schema}" = 'gpt' ]]; then
+        mkdir -p '/etc/zfsbootmenu/posthooks.d'
+        cat > '/etc/zfsbootmenu/config.yaml' <<EOF
 Global:
   ManageImages: true
   BootMountPoint: /efi
@@ -633,6 +663,23 @@ Kernel:
   CommandLine: ro loglevel=0 zbm.import_policy=hostid
   Prefix: vmlinuz
 EOF
+        get_known_good_stub_loader
+    else
+        configure_syslinux
+        cat > '/etc/zfsbootmenu/config.yaml' <<EOF
+Global:
+  ManageImages: true
+  BootMountPoint: /boot/syslinux
+  InitCPIO: true
+Components:
+  Enabled: true
+  Versions: false
+  ImageDir: /boot/syslinux/zfsbootmenu
+Kernel:
+  Prefix: vmlinuz
+EOF
+    fi
+
 # Up here maybe 'ro quiet' instead of 'ro'. This is ZFSBootMenu's kernel
 # command line.
 
@@ -688,7 +735,9 @@ function install_os_in_chroot () {
 
     # Install ZFSBootMenu image
     configure_zfsbootmenu                       #2.9
-    get_known_good_stub_loader                  #2.10
+    generate-zbm
+
+    # Yes, we do this twice so we immediately get a functional backup file
     generate-zbm
 }