123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197 |
- ################################################################################
- #
- # Build the iso96600 root filesystem image
- #
- ################################################################################
- #
- # We need to handle three cases:
- #
- # 1. The ISO9660 filesystem will really be the real root filesystem
- # itself. This is when BR2_TARGET_ROOTFS_ISO9660_INITRD is
- # disabled.
- #
- # 2. The ISO9660 filesystem will be a filesystem with just a kernel
- # image, initrd and grub. This is when
- # BR2_TARGET_ROOTFS_ISO9660_INITRD is enabled, but
- # BR2_TARGET_ROOTFS_INITRAMFS is disabled.
- #
- # 3. The ISO9660 filesystem will be a filesystem with just a kernel
- # image and grub. This is like (2), except that the initrd is
- # built into the kernel image. This is when
- # BR2_TARGET_ROOTFS_INITRAMFS is enabled (regardless of the value
- # of BR2_TARGET_ROOTFS_ISO9660_INITRD).
- ROOTFS_ISO9660_BOOT_MENU = $(call qstrip,$(BR2_TARGET_ROOTFS_ISO9660_BOOT_MENU))
- ROOTFS_ISO9660_DEPENDENCIES = host-xorriso linux
- ifeq ($(BR2_TARGET_ROOTFS_INITRAMFS),y)
- ROOTFS_ISO9660_USE_INITRD = YES
- endif
- ifeq ($(BR2_TARGET_ROOTFS_ISO9660_INITRD),y)
- ROOTFS_ISO9660_USE_INITRD = YES
- endif
- ifeq ($(ROOTFS_ISO9660_USE_INITRD),YES)
- ROOTFS_ISO9660_TMP_TARGET_DIR = $(FS_DIR)/rootfs.iso9660.tmp
- define ROOTFS_ISO9660_CREATE_TEMPDIR
- $(RM) -rf $(ROOTFS_ISO9660_TMP_TARGET_DIR)
- mkdir -p $(ROOTFS_ISO9660_TMP_TARGET_DIR)
- endef
- ROOTFS_ISO9660_PRE_GEN_HOOKS += ROOTFS_ISO9660_CREATE_TEMPDIR
- else ifeq ($(BR2_TARGET_ROOTFS_ISO9660_TRANSPARENT_COMPRESSION),y)
- ROOTFS_ISO9660_DEPENDENCIES += host-zisofs-tools
- ROOTFS_ISO9660_TMP_TARGET_DIR = $(FS_DIR)/rootfs.iso9660.tmp
- # This must be early, before we copy the bootloader files.
- define ROOTFS_ISO9660_MKZFTREE
- $(RM) -rf $(ROOTFS_ISO9660_TMP_TARGET_DIR)
- $(HOST_DIR)/bin/mkzftree -X -z 9 -p $(PARALLEL_JOBS) \
- $(TARGET_DIR) \
- $(ROOTFS_ISO9660_TMP_TARGET_DIR)
- endef
- ROOTFS_ISO9660_PRE_GEN_HOOKS += ROOTFS_ISO9660_MKZFTREE
- ROOTFS_ISO9660_OPTS += -z
- else
- ROOTFS_ISO9660_TMP_TARGET_DIR = $(TARGET_DIR)
- endif
- ifeq ($(BR2_REPRODUCIBLE),y)
- ROOTFS_ISO9660_VFAT_OPTS = --invariant
- ROOTFS_ISO9660_FIX_TIME = touch -d @$(SOURCE_DATE_EPOCH)
- else
- ROOTFS_ISO9660_FIX_TIME = :
- endif
- ifeq ($(BR2_TARGET_ROOTFS_ISO9660_GRUB2)$(BR2_TARGET_ROOTFS_ISO9660_BIOS_BOOTLOADER),yy)
- ROOTFS_ISO9660_DEPENDENCIES += grub2
- ROOTFS_ISO9660_BOOTLOADER_CONFIG_PATH = \
- $(ROOTFS_ISO9660_TMP_TARGET_DIR)/boot/grub/grub.cfg
- ROOTFS_ISO9660_BOOT_IMAGE = boot/grub/grub-eltorito.img
- define ROOTFS_ISO9660_INSTALL_BOOTLOADER_BIOS
- $(INSTALL) -D -m 0644 $(BINARIES_DIR)/grub-eltorito.img \
- $(ROOTFS_ISO9660_TMP_TARGET_DIR)/boot/grub/grub-eltorito.img
- endef
- endif
- ifeq ($(BR2_TARGET_ROOTFS_ISO9660_GRUB2)$(BR2_TARGET_ROOTFS_ISO9660_EFI_BOOTLOADER),yy)
- ROOTFS_ISO9660_DEPENDENCIES += grub2 host-dosfstools host-mtools
- ROOTFS_ISO9660_EFI_PARTITION = boot/fat.efi
- ROOTFS_ISO9660_EFI_PARTITION_PATH = $(ROOTFS_ISO9660_TMP_TARGET_DIR)/$(ROOTFS_ISO9660_EFI_PARTITION)
- ROOTFS_ISO9660_EFI_PARTITION_CONTENT = $(BINARIES_DIR)/efi-part
- ROOTFS_ISO9660_BOOTLOADER_CONFIG_PATH = \
- $(ROOTFS_ISO9660_TMP_TARGET_DIR)/boot/grub/grub.cfg
- define ROOTFS_ISO9660_INSTALL_BOOTLOADER_EFI
- rm -rf $(ROOTFS_ISO9660_EFI_PARTITION_PATH)
- mkdir -p $(dir $(ROOTFS_ISO9660_EFI_PARTITION_PATH))
- dd if=/dev/zero of=$(ROOTFS_ISO9660_EFI_PARTITION_PATH) bs=1M count=1
- $(HOST_DIR)/sbin/mkfs.vfat $(ROOTFS_ISO9660_VFAT_OPTS) $(ROOTFS_ISO9660_EFI_PARTITION_PATH)
- $(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)/* ::/
- $(ROOTFS_ISO9660_FIX_TIME) $(ROOTFS_ISO9660_EFI_PARTITION_PATH)
- endef
- endif
- ifeq ($(BR2_TARGET_ROOTFS_ISO9660_ISOLINUX),y)
- ROOTFS_ISO9660_DEPENDENCIES += syslinux
- ROOTFS_ISO9660_BOOTLOADER_CONFIG_PATH = \
- $(ROOTFS_ISO9660_TMP_TARGET_DIR)/isolinux/isolinux.cfg
- ROOTFS_ISO9660_BOOT_IMAGE = isolinux/isolinux.bin
- define ROOTFS_ISO9660_INSTALL_BOOTLOADER_BIOS
- $(INSTALL) -D -m 0644 $(BINARIES_DIR)/syslinux/* \
- $(ROOTFS_ISO9660_TMP_TARGET_DIR)/isolinux/
- $(INSTALL) -D -m 0644 $(HOST_DIR)/share/syslinux/ldlinux.c32 \
- $(ROOTFS_ISO9660_TMP_TARGET_DIR)/isolinux/ldlinux.c32
- endef
- endif
- define ROOTFS_ISO9660_PREPARATION
- $(INSTALL) -D -m 0644 $(ROOTFS_ISO9660_BOOT_MENU) \
- $(ROOTFS_ISO9660_BOOTLOADER_CONFIG_PATH)
- $(SED) "s%__KERNEL_PATH__%/boot/$(LINUX_IMAGE_NAME)%" \
- $(ROOTFS_ISO9660_BOOTLOADER_CONFIG_PATH)
- $(ROOTFS_ISO9660_INSTALL_BOOTLOADER_BIOS)
- $(ROOTFS_ISO9660_INSTALL_BOOTLOADER_EFI)
- endef
- ROOTFS_ISO9660_PRE_GEN_HOOKS += ROOTFS_ISO9660_PREPARATION
- define ROOTFS_ISO9660_DISABLE_EXTERNAL_INITRD
- $(SED) '/__INITRD_PATH__/d' $(ROOTFS_ISO9660_BOOTLOADER_CONFIG_PATH)
- endef
- # Copy the kernel to temporary filesystem
- define ROOTFS_ISO9660_COPY_KERNEL
- $(INSTALL) -D -m 0644 $(LINUX_IMAGE_PATH) \
- $(ROOTFS_ISO9660_TMP_TARGET_DIR)/boot/$(LINUX_IMAGE_NAME)
- endef
- ifeq ($(ROOTFS_ISO9660_USE_INITRD),YES)
- ROOTFS_ISO9660_PRE_GEN_HOOKS += ROOTFS_ISO9660_COPY_KERNEL
- # If initramfs is used, disable loading the initrd as the rootfs is
- # already inside the kernel image. Otherwise, make sure a cpio is
- # generated and use it as the initrd.
- ifeq ($(BR2_TARGET_ROOTFS_INITRAMFS),y)
- ROOTFS_ISO9660_PRE_GEN_HOOKS += ROOTFS_ISO9660_DISABLE_EXTERNAL_INITRD
- else
- ROOTFS_ISO9660_DEPENDENCIES += rootfs-cpio
- define ROOTFS_ISO9660_COPY_INITRD
- $(INSTALL) -D -m 0644 $(BINARIES_DIR)/rootfs.cpio$(ROOTFS_CPIO_COMPRESS_EXT) \
- $(ROOTFS_ISO9660_TMP_TARGET_DIR)/boot/initrd
- $(SED) "s%__INITRD_PATH__%/boot/initrd%" \
- $(ROOTFS_ISO9660_BOOTLOADER_CONFIG_PATH)
- endef
- ROOTFS_ISO9660_PRE_GEN_HOOKS += ROOTFS_ISO9660_COPY_INITRD
- endif
- else # ROOTFS_ISO9660_USE_INITRD
- ifeq ($(BR2_TARGET_ROOTFS_ISO9660_TRANSPARENT_COMPRESSION),y)
- # We must use the uncompressed kernel image
- ROOTFS_ISO9660_PRE_GEN_HOOKS += ROOTFS_ISO9660_COPY_KERNEL
- endif
- ROOTFS_ISO9660_PRE_GEN_HOOKS += ROOTFS_ISO9660_DISABLE_EXTERNAL_INITRD
- endif # ROOTFS_ISO9660_USE_INITRD
- ROOTFS_ISO9660_OPTS += -J -R
- ROOTFS_ISO9660_OPTS_BIOS = \
- -b $(ROOTFS_ISO9660_BOOT_IMAGE) \
- -no-emul-boot \
- -boot-load-size 4 \
- -boot-info-table
- ROOTFS_ISO9660_OPTS_EFI = \
- --efi-boot $(ROOTFS_ISO9660_EFI_PARTITION) \
- -no-emul-boot
- ifeq ($(BR2_TARGET_ROOTFS_ISO9660_BIOS_BOOTLOADER)$(BR2_TARGET_ROOTFS_ISO9660_EFI_BOOTLOADER),yy)
- ROOTFS_ISO9660_OPTS += \
- $(ROOTFS_ISO9660_OPTS_BIOS) \
- -eltorito-alt-boot \
- $(ROOTFS_ISO9660_OPTS_EFI)
- else ifeq ($(BR2_TARGET_ROOTFS_ISO9660_BIOS_BOOTLOADER),y)
- ROOTFS_ISO9660_OPTS += $(ROOTFS_ISO9660_OPTS_BIOS)
- else ifeq ($(BR2_TARGET_ROOTFS_ISO9660_EFI_BOOTLOADER),y)
- ROOTFS_ISO9660_OPTS += $(ROOTFS_ISO9660_OPTS_EFI)
- endif
- define ROOTFS_ISO9660_CMD
- $(HOST_DIR)/bin/xorriso -as mkisofs \
- $(ROOTFS_ISO9660_OPTS) \
- -o $@ $(ROOTFS_ISO9660_TMP_TARGET_DIR)
- endef
- ifeq ($(BR2_TARGET_ROOTFS_ISO9660_HYBRID),y)
- define ROOTFS_ISO9660_GEN_HYBRID
- $(HOST_DIR)/bin/isohybrid -t 0x96 $@
- endef
- ROOTFS_ISO9660_POST_GEN_HOOKS += ROOTFS_ISO9660_GEN_HYBRID
- endif
- $(eval $(rootfs))
|