diff --git a/README.md b/README.md index 7524f227a6..89d2dbc45d 100644 --- a/README.md +++ b/README.md @@ -807,18 +807,13 @@ $ dd if=shredos-20200412.img of=/dev/sdx (20200412 will be the day you compiled, #### The following configurations are available to build different targets: - `make shredos_defconfig` - build USB image and hybrid ISO (64-bit) -- `make shredos_i586_defconfig` - build USB image and hybrid ISO (32-bit) -- `make shredos_img_defconfig` - build USB image only (64-bit) -- `make shredos_img_i586_defconfig` - build USB image only (32-bit) -- `make shredos_iso_defconfig` - build hybrid ISO only (64-bit) -- `make shredos_iso_i586_defconfig` - build hybrid ISO only (32-bit) -- `make shredos_iso_legacy_defconfig` - build legacy ISO only (64-bit) -- `make shredos_iso_legacy_i586_defconfig` - build legacy ISO only (32-bit) +- `make shredos_lite_defconfig` - build lighter USB image and hybrid ISO (64-bit) +- `make shredos_i686_lite_defconfig` - build lighter USB image and hybrid ISO (32-bit) #### The following experimental configurations are available for testing: - `make shredos_iso_extra_defconfig` - build hybrid ISO with appended writeable partition (64-bit) -- `make shredos_iso_extra_i586_defconfig` - build hybrid ISO with appended writeable partition (32-bit) +- `make shredos_iso_extra_i686_lite_defconfig` - build lighter hybrid ISO with appended writeable partition (32-bit) Do note that loading a configuration should typically be the last step before `make`. @@ -833,8 +828,6 @@ Do note that loading a configuration should typically be the last step before `m > partition at burn-time, which then also allows customization of the GRUB > configuration. > ->The **extra** ISOs (experimental) have an "extra" write partition appended. ->The **legacy** ISOs work in BIOS and UEFI, but only as burned to CD/DVD-ROM. #### Building multiple configurations: diff --git a/board/shredos/genimage_i586.cfg b/board/shredos/genimage_i686.cfg similarity index 100% rename from board/shredos/genimage_i586.cfg rename to board/shredos/genimage_i686.cfg diff --git a/board/shredos/make_img_file.sh b/board/shredos/make_img_file.sh index b57043c58e..97d692fb92 100755 --- a/board/shredos/make_img_file.sh +++ b/board/shredos/make_img_file.sh @@ -5,9 +5,9 @@ if grep -Eq "^BR2_ARCH_IS_64=y$" "${BR2_CONFIG}"; then MKIMAGE_EFI=bootx64.efi MKIMAGE_CFG=genimage.cfg else - MKIMAGE_ARCH=i586 + MKIMAGE_ARCH=i686 MKIMAGE_EFI=bootia32.efi - MKIMAGE_CFG=genimage_i586.cfg + MKIMAGE_CFG=genimage_i686.cfg fi version=$(cat board/shredos/fsoverlay/etc/shredos/version.txt) diff --git a/board/shredos/make_iso_file.sh b/board/shredos/make_iso_file.sh index a9a12ab346..d9068f1cd9 100755 --- a/board/shredos/make_iso_file.sh +++ b/board/shredos/make_iso_file.sh @@ -3,7 +3,7 @@ if grep -Eq "^BR2_ARCH_IS_64=y$" "${BR2_CONFIG}"; then MKIMAGE_ARCH=x86_64 else - MKIMAGE_ARCH=i386 + MKIMAGE_ARCH=i686 fi version=$(cat board/shredos/fsoverlay/etc/shredos/version.txt) diff --git a/fs/iso9660/iso9660.mk b/fs/iso9660/iso9660.mk index 6648e65b43..c12f59febe 100644 --- a/fs/iso9660/iso9660.mk +++ b/fs/iso9660/iso9660.mk @@ -44,11 +44,9 @@ ROOTFS_ISO9660_HYBRID_APPEND_PARTITION_TYPE = $(call qstrip,$(BR2_TARGET_ROOTFS_ ifeq ($(BR2_ARCH_IS_64),y) ROOTFS_ISO9660_EFI_NAME = bootx64.efi -ROOTFS_ISO9660_EFI_NOTNAME = bootia32.efi ROOTFS_ISO9660_GRUB2_EFI_PREFIX = $(call qstrip,$(GRUB2_PREFIX_x86_64-efi)) else ROOTFS_ISO9660_EFI_NAME = bootia32.efi -ROOTFS_ISO9660_EFI_NOTNAME = bootx64.efi ROOTFS_ISO9660_GRUB2_EFI_PREFIX = $(call qstrip,$(GRUB2_PREFIX_i386-efi)) endif @@ -95,9 +93,15 @@ else ROOTFS_ISO9660_TMP_TARGET_DIR = $(TARGET_DIR) endif +################################################################################ +# Memtest +################################################################################ + define ROOTFS_ISO9660_COPY_MEMTEST_BINARIES - $(INSTALL) -D -m 0644 $(BINARIES_DIR)/memtest.efi $(ROOTFS_ISO9660_TMP_TARGET_DIR)/EFI/BOOT/memtest.efi - $(INSTALL) -D -m 0644 $(BINARIES_DIR)/memtest.bin $(ROOTFS_ISO9660_TMP_TARGET_DIR)/boot/memtest + $(INSTALL) -D -m 0644 $(BINARIES_DIR)/memtest.efi \ + $(ROOTFS_ISO9660_TMP_TARGET_DIR)/$(ROOTFS_ISO9660_GRUB2_EFI_PREFIX)/memtest.efi + $(INSTALL) -D -m 0644 $(BINARIES_DIR)/memtest.bin \ + $(ROOTFS_ISO9660_TMP_TARGET_DIR)/boot/memtest endef ################################################################################ @@ -145,28 +149,33 @@ ROOTFS_ISO9660_EFI_PARTITION_CONTENT = $(BINARIES_DIR)/efi-part ROOTFS_ISO9660_GRUB2_CONFIG_PATH = $(ROOTFS_ISO9660_TMP_TARGET_DIR)/boot/grub/grub.cfg ROOTFS_ISO9660_GRUB2_EFI_CONFIG_PATH = $(ROOTFS_ISO9660_TMP_TARGET_DIR)/$(ROOTFS_ISO9660_GRUB2_EFI_PREFIX)/grub.cfg +ifeq ($(BR2_ARCH_IS_64),y) +# Backup 64-bit bootloader for use with future 32-bit builds +define ROOTFS_ISO9660_BACKUP_RESTORE_X64_EFI + $(INSTALL) -D -m 0644 $(ROOTFS_ISO9660_EFI_PARTITION_CONTENT)/$(ROOTFS_ISO9660_GRUB2_EFI_PREFIX)/bootx64.efi \ + $(TOPDIR)/board/shredos/bootx64.efi +endef +else +# We are building for 32-bit, but also add the 64-bit bootloader +define ROOTFS_ISO9660_BACKUP_RESTORE_X64_EFI + $(INSTALL) -D -m 0644 $(TOPDIR)/board/shredos/bootx64.efi \ + $(ROOTFS_ISO9660_EFI_PARTITION_CONTENT)/$(ROOTFS_ISO9660_GRUB2_EFI_PREFIX)/bootx64.efi + $(INSTALL) -D -m 0644 $(ROOTFS_ISO9660_EFI_PARTITION_CONTENT)/$(ROOTFS_ISO9660_GRUB2_EFI_PREFIX)/bootx64.efi \ + $(ROOTFS_ISO9660_TMP_TARGET_DIR)/$(ROOTFS_ISO9660_GRUB2_EFI_PREFIX)/bootx64.efi +endef +endif + 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 + # Install memtest binaries to ISO9660 filesystem + $(ROOTFS_ISO9660_COPY_MEMTEST_BINARIES) + # Either backup or restore the 64-bit bootloader + $(ROOTFS_ISO9660_BACKUP_RESTORE_X64_EFI) # 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 - # Copy memtest.efi and memtest.bin to ISO9660 filesystem - $(ROOTFS_ISO9660_COPY_MEMTEST_BINARIES) # Create EFI FAT partition $(RM) -rf $(ROOTFS_ISO9660_EFI_PARTITION_PATH) mkdir -p $(dir $(ROOTFS_ISO9660_EFI_PARTITION_PATH)) @@ -264,28 +273,33 @@ define ROOTFS_ISO9660_INSTALL_ISOLINUX_CONFIG $(ROOTFS_ISO9660_ISOLINUX_CONFIG_PATH) endef +ifeq ($(BR2_ARCH_IS_64),y) +# Backup 64-bit bootloader for use with future 32-bit builds +define ROOTFS_ISO9660_BACKUP_RESTORE_X64_EFI + $(INSTALL) -D -m 0644 $(ROOTFS_ISO9660_EFI_PARTITION_CONTENT)/$(ROOTFS_ISO9660_GRUB2_EFI_PREFIX)/bootx64.efi \ + $(TOPDIR)/board/shredos/bootx64.efi +endef +else +# We are building for 32-bit, but also add the 64-bit bootloader +define ROOTFS_ISO9660_BACKUP_RESTORE_X64_EFI + $(INSTALL) -D -m 0644 $(TOPDIR)/board/shredos/bootx64.efi \ + $(ROOTFS_ISO9660_EFI_PARTITION_CONTENT)/$(ROOTFS_ISO9660_GRUB2_EFI_PREFIX)/bootx64.efi + $(INSTALL) -D -m 0644 $(ROOTFS_ISO9660_EFI_PARTITION_CONTENT)/$(ROOTFS_ISO9660_GRUB2_EFI_PREFIX)/bootx64.efi \ + $(ROOTFS_ISO9660_TMP_TARGET_DIR)/$(ROOTFS_ISO9660_GRUB2_EFI_PREFIX)/bootx64.efi +endef +endif + 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 + # Install memtest binaries to ISO9660 filesystem + $(ROOTFS_ISO9660_COPY_MEMTEST_BINARIES) + # Either backup or restore the 64-bit bootloader + $(ROOTFS_ISO9660_BACKUP_RESTORE_X64_EFI) # 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 - # Copy memtest.efi and memtest.bin to ISO9660 filesystem - $(ROOTFS_ISO9660_COPY_MEMTEST_BINARIES) # Create EFI FAT partition $(RM) -rf $(ROOTFS_ISO9660_EFI_PARTITION_PATH) mkdir -p $(dir $(ROOTFS_ISO9660_EFI_PARTITION_PATH))