Merge pull request #448 from PartialVolume/boot-i686-using-64bit-EFI

Allow shredos i686 builds to boot on 64bit EFI only system that don't have legacy boot options.
This commit is contained in:
PartialVolume
2026-01-29 19:54:09 +00:00
committed by GitHub
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