diff --git a/board/shredos/bootx64.efi b/board/shredos/bootx64.efi new file mode 100644 index 0000000000..ec1f93f1b8 Binary files /dev/null and b/board/shredos/bootx64.efi differ diff --git a/board/shredos/fsoverlay/etc/shredos/version.txt b/board/shredos/fsoverlay/etc/shredos/version.txt index b1f93a2534..a48a079a02 100644 --- a/board/shredos/fsoverlay/etc/shredos/version.txt +++ b/board/shredos/fsoverlay/etc/shredos/version.txt @@ -1 +1 @@ -2025.11_28_i686_26ece7a-commit-dev +2025.11_28_x86-64_26ece7a-commit-dev diff --git a/board/shredos/genimage_i586.cfg b/board/shredos/genimage_i586.cfg index c3a2d3ef13..49e5fe364a 100644 --- a/board/shredos/genimage_i586.cfg +++ b/board/shredos/genimage_i586.cfg @@ -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' } diff --git a/fs/iso9660/iso9660.mk b/fs/iso9660/iso9660.mk index 1eb6abb1b6..f124d2702f 100644 --- a/fs/iso9660/iso9660.mk +++ b/fs/iso9660/iso9660.mk @@ -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