The i686 .iso builds failed to boot on X86-64 systems that only support booting with 64bit efi, i.e no legacy boot option. This was due to bootx64.efi not being included by iso9660.mk when the architecture is i686. Changes were made to iso9660.mk to correct this.

This commit is contained in:
PartialVolume
2026-01-29 19:49:33 +00:00
parent 2e3aff54c4
commit 7e198a902e
4 changed files with 28 additions and 7 deletions

BIN
board/shredos/bootx64.efi Normal file

Binary file not shown.

View File

@@ -1 +1 @@
2025.11_28_i686_26ece7a-commit-dev
2025.11_28_x86-64_26ece7a-commit-dev

View File

@@ -6,6 +6,7 @@ image boot.vfat {
file boot/version.txt { image = 'version.txt' }
file boot/shredos.id { image = '/dev/null' }
file EFI/BOOT/bootia32.efi { image = 'bootia32.efi' }
file EFI/BOOT/bootx64.efi { image = 'board/shredos/bootx64.efi'}
file EFI/BOOT/grub.cfg { image = 'grub.cfg' }
file shredos.ico { image = 'shredos.ico' }
file README.txt { image = 'README.txt' }

View File

@@ -141,12 +141,25 @@ ROOTFS_ISO9660_GRUB2_CONFIG_PATH = $(ROOTFS_ISO9660_TMP_TARGET_DIR)/boot/grub/gr
ROOTFS_ISO9660_GRUB2_EFI_CONFIG_PATH = $(ROOTFS_ISO9660_TMP_TARGET_DIR)/$(ROOTFS_ISO9660_GRUB2_EFI_PREFIX)/grub.cfg
define ROOTFS_ISO9660_INSTALL_GRUB2_EFI
# If 32bit build also copy the bootx64.efi from board/shredos/ so 32bit shredos will boot on a 64 EFI system
if [ "$(BR2_i386)" = "y" ]; then \
$(INSTALL) -D -m 0644 $(TOPDIR)/board/shredos/bootx64.efi $(BINARIES_DIR)/efi-part/EFI/BOOT/bootx64.efi; \
fi
# Create file to better find ISO9660 filesystem
$(INSTALL) -D -m 0644 /dev/null \
$(ROOTFS_ISO9660_TMP_TARGET_DIR)/$(ROOTFS_ISO9660_GRUB2_EFI_IDENT_FILE)
# Copy EFI bootloader also to ISO9660 filesystem
$(INSTALL) -D -m 0644 $(ROOTFS_ISO9660_EFI_PARTITION_CONTENT)/$(ROOTFS_ISO9660_GRUB2_EFI_PREFIX)/$(ROOTFS_ISO9660_EFI_NAME) \
$(ROOTFS_ISO9660_TMP_TARGET_DIR)/$(ROOTFS_ISO9660_GRUB2_EFI_PREFIX)/$(ROOTFS_ISO9660_EFI_NAME)
# If 32 bit build we also want the 64 bit EFI installed
if [ "$(BR2_i386)" = "y" ]; then \
$(INSTALL) -D -m 0644 $(ROOTFS_ISO9660_EFI_PARTITION_CONTENT)/$(ROOTFS_ISO9660_GRUB2_EFI_PREFIX)/$(ROOTFS_ISO9660_EFI_NOTNAME) \
$(ROOTFS_ISO9660_TMP_TARGET_DIR)/$(ROOTFS_ISO9660_GRUB2_EFI_PREFIX)/$(ROOTFS_ISO9660_EFI_NOTNAME)
fi
# If 64bit build copy the bootx64.efi to board/shredos/ as this will be used when building 32bit build
if [ "$(BR2_x86_64)" = "y" ]; then \
$(INSTALL) -D -m 0644 $(BINARIES_DIR)/efi-part/EFI/BOOT/bootx64.efi $(TOPDIR)/board/shredos/bootx64.efi; \
fi
# Create EFI FAT partition
$(RM) -rf $(ROOTFS_ISO9660_EFI_PARTITION_PATH)
mkdir -p $(dir $(ROOTFS_ISO9660_EFI_PARTITION_PATH))
@@ -156,9 +169,6 @@ define ROOTFS_ISO9660_INSTALL_GRUB2_EFI
$(ROOTFS_ISO9660_FIX_TIME) $(ROOTFS_ISO9660_EFI_PARTITION_CONTENT)/*
$(HOST_DIR)/bin/mcopy -p -m -i $(ROOTFS_ISO9660_EFI_PARTITION_PATH) -s \
$(ROOTFS_ISO9660_EFI_PARTITION_CONTENT)/* ::/
# Delete the EFI bootloader that is NOT for the platform we're building for
$(HOST_DIR)/bin/mdel -i $(ROOTFS_ISO9660_EFI_PARTITION_PATH) \
::$(ROOTFS_ISO9660_GRUB2_EFI_PREFIX)/$(ROOTFS_ISO9660_EFI_NOTNAME) || true
# Overwrite generic EFI configuration with our EFI configuration
$(HOST_DIR)/bin/mcopy -n -o -p -m -i $(ROOTFS_ISO9660_EFI_PARTITION_PATH) \
$(ROOTFS_ISO9660_GRUB2_EFI_CONFIG_PATH) ::$(ROOTFS_ISO9660_GRUB2_EFI_PREFIX)/grub.cfg
@@ -248,12 +258,25 @@ define ROOTFS_ISO9660_INSTALL_ISOLINUX_CONFIG
endef
define ROOTFS_ISO9660_INSTALL_GRUB2_EFI
# If 32bit build also copy the bootx64.efi from board/shredos/ so 32bit shredos will boot on a 64 EFI system
if [ "$(BR2_i386)" = "y" ]; then \
$(INSTALL) -D -m 0644 $(TOPDIR)/board/shredos/bootx64.efi $(BINARIES_DIR)/efi-part/EFI/BOOT/bootx64.efi; \
fi
# Create file to better find ISO9660 filesystem
$(INSTALL) -D -m 0644 /dev/null \
$(ROOTFS_ISO9660_TMP_TARGET_DIR)/$(ROOTFS_ISO9660_GRUB2_EFI_IDENT_FILE)
# Copy EFI bootloader also to ISO9660 filesystem
$(INSTALL) -D -m 0644 $(ROOTFS_ISO9660_EFI_PARTITION_CONTENT)/$(ROOTFS_ISO9660_GRUB2_EFI_PREFIX)/$(ROOTFS_ISO9660_EFI_NAME) \
$(ROOTFS_ISO9660_TMP_TARGET_DIR)/$(ROOTFS_ISO9660_GRUB2_EFI_PREFIX)/$(ROOTFS_ISO9660_EFI_NAME)
# If 32 bit build we also want the 64 bit EFI installed
if [ "$(BR2_i386)" = "y" ]; then \
$(INSTALL) -D -m 0644 $(ROOTFS_ISO9660_EFI_PARTITION_CONTENT)/$(ROOTFS_ISO9660_GRUB2_EFI_PREFIX)/$(ROOTFS_ISO9660_EFI_NOTNAME) \
$(ROOTFS_ISO9660_TMP_TARGET_DIR)/$(ROOTFS_ISO9660_GRUB2_EFI_PREFIX)/$(ROOTFS_ISO9660_EFI_NOTNAME)
fi
# If 64bit build copy the bootx64.efi to board/shredos/ as this will be used when building 32bit build
if [ "$(BR2_x86_64)" = "y" ]; then \
$(INSTALL) -D -m 0644 $(BINARIES_DIR)/efi-part/EFI/BOOT/bootx64.efi $(TOPDIR)/board/shredos/bootx64.efi; \
fi
# Create EFI FAT partition
$(RM) -rf $(ROOTFS_ISO9660_EFI_PARTITION_PATH)
mkdir -p $(dir $(ROOTFS_ISO9660_EFI_PARTITION_PATH))
@@ -263,9 +286,6 @@ define ROOTFS_ISO9660_INSTALL_GRUB2_EFI
$(ROOTFS_ISO9660_FIX_TIME) $(ROOTFS_ISO9660_EFI_PARTITION_CONTENT)/*
$(HOST_DIR)/bin/mcopy -p -m -i $(ROOTFS_ISO9660_EFI_PARTITION_PATH) -s \
$(ROOTFS_ISO9660_EFI_PARTITION_CONTENT)/* ::/
# Delete the EFI bootloader that is NOT for the platform we're building for
$(HOST_DIR)/bin/mdel -i $(ROOTFS_ISO9660_EFI_PARTITION_PATH) \
::$(ROOTFS_ISO9660_GRUB2_EFI_PREFIX)/$(ROOTFS_ISO9660_EFI_NOTNAME) || true
# Overwrite generic EFI configuration with our EFI configuration
$(HOST_DIR)/bin/mcopy -n -o -p -m -i $(ROOTFS_ISO9660_EFI_PARTITION_PATH) \
$(ROOTFS_ISO9660_GRUB2_EFI_CONFIG_PATH) ::$(ROOTFS_ISO9660_GRUB2_EFI_PREFIX)/grub.cfg