iso9660.mk 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161
  1. ################################################################################
  2. #
  3. # Build the iso96600 root filesystem image
  4. #
  5. ################################################################################
  6. #
  7. # We need to handle three cases:
  8. #
  9. # 1. The ISO9660 filesystem will really be the real root filesystem
  10. # itself. This is when BR2_TARGET_ROOTFS_ISO9660_INITRD is
  11. # disabled.
  12. #
  13. # 2. The ISO9660 filesystem will be a filesystem with just a kernel
  14. # image, initrd and grub. This is when
  15. # BR2_TARGET_ROOTFS_ISO9660_INITRD is enabled, but
  16. # BR2_TARGET_ROOTFS_INITRAMFS is disabled.
  17. #
  18. # 3. The ISO9660 filesystem will be a filesystem with just a kernel
  19. # image and grub. This is like (2), except that the initrd is
  20. # built into the kernel image. This is when
  21. # BR2_TARGET_ROOTFS_INITRAMFS is enabled (regardless of the value
  22. # of BR2_TARGET_ROOTFS_ISO9660_INITRD).
  23. ROOTFS_ISO9660_BOOT_MENU = $(call qstrip,$(BR2_TARGET_ROOTFS_ISO9660_BOOT_MENU))
  24. ROOTFS_ISO9660_DEPENDENCIES = host-cdrkit linux
  25. ifeq ($(BR2_TARGET_ROOTFS_INITRAMFS),y)
  26. ROOTFS_ISO9660_USE_INITRD = YES
  27. endif
  28. ifeq ($(BR2_TARGET_ROOTFS_ISO9660_INITRD),y)
  29. ROOTFS_ISO9660_USE_INITRD = YES
  30. endif
  31. ifeq ($(ROOTFS_ISO9660_USE_INITRD),YES)
  32. ROOTFS_ISO9660_TARGET_DIR = $(BUILD_DIR)/rootfs.iso9660.tmp
  33. define ROOTFS_ISO9660_CREATE_TEMPDIR
  34. $(RM) -rf $(ROOTFS_ISO9660_TARGET_DIR)
  35. mkdir -p $(ROOTFS_ISO9660_TARGET_DIR)
  36. endef
  37. ROOTFS_ISO9660_PRE_GEN_HOOKS += ROOTFS_ISO9660_CREATE_TEMPDIR
  38. else
  39. ROOTFS_ISO9660_TARGET_DIR = $(TARGET_DIR)
  40. endif
  41. ifeq ($(BR2_TARGET_ROOTFS_ISO9660_GRUB),y)
  42. ROOTFS_ISO9660_DEPENDENCIES += grub
  43. ROOTFS_ISO9660_BOOTLOADER_CONFIG_PATH = \
  44. $(ROOTFS_ISO9660_TARGET_DIR)/boot/grub/menu.lst
  45. ROOTFS_ISO9660_BOOT_IMAGE = boot/grub/stage2_eltorito
  46. define ROOTFS_ISO9660_INSTALL_BOOTLOADER
  47. $(INSTALL) -D -m 0644 $(GRUB_DIR)/stage2/stage2_eltorito \
  48. $(ROOTFS_ISO9660_TARGET_DIR)/boot/grub/stage2_eltorito
  49. endef
  50. else ifeq ($(BR2_TARGET_ROOTFS_ISO9660_GRUB2),y)
  51. ROOTFS_ISO9660_DEPENDENCIES += grub2
  52. ROOTFS_ISO9660_BOOTLOADER_CONFIG_PATH = \
  53. $(ROOTFS_ISO9660_TARGET_DIR)/boot/grub/grub.cfg
  54. ROOTFS_ISO9660_BOOT_IMAGE = boot/grub/grub-eltorito.img
  55. define ROOTFS_ISO9660_INSTALL_BOOTLOADER
  56. $(INSTALL) -D -m 0644 $(BINARIES_DIR)/grub-eltorito.img \
  57. $(ROOTFS_ISO9660_TARGET_DIR)/boot/grub/grub-eltorito.img
  58. endef
  59. else ifeq ($(BR2_TARGET_ROOTFS_ISO9660_ISOLINUX),y)
  60. ROOTFS_ISO9660_DEPENDENCIES += syslinux
  61. ROOTFS_ISO9660_BOOTLOADER_CONFIG_PATH = \
  62. $(ROOTFS_ISO9660_TARGET_DIR)/isolinux/isolinux.cfg
  63. ROOTFS_ISO9660_BOOT_IMAGE = isolinux/isolinux.bin
  64. define ROOTFS_ISO9660_INSTALL_BOOTLOADER
  65. $(INSTALL) -D -m 0644 $(BINARIES_DIR)/syslinux/* \
  66. $(ROOTFS_ISO9660_TARGET_DIR)/isolinux/
  67. $(INSTALL) -D -m 0644 $(HOST_DIR)/usr/share/syslinux/ldlinux.c32 \
  68. $(ROOTFS_ISO9660_TARGET_DIR)/isolinux/ldlinux.c32
  69. endef
  70. endif
  71. define ROOTFS_ISO9660_PREPARATION
  72. $(INSTALL) -D -m 0644 $(ROOTFS_ISO9660_BOOT_MENU) \
  73. $(ROOTFS_ISO9660_BOOTLOADER_CONFIG_PATH)
  74. $(SED) "s%__KERNEL_PATH__%/boot/$(LINUX_IMAGE_NAME)%" \
  75. $(ROOTFS_ISO9660_BOOTLOADER_CONFIG_PATH)
  76. $(ROOTFS_ISO9660_INSTALL_BOOTLOADER)
  77. endef
  78. ROOTFS_ISO9660_PRE_GEN_HOOKS += ROOTFS_ISO9660_PREPARATION
  79. # Grub splash screen disabling
  80. ifeq ($(BR2_TARGET_ROOTFS_ISO9660_GRUB),y)
  81. ifeq ($(BR2_TARGET_GRUB_SPLASH),)
  82. define ROOTFS_ISO9660_DISABLE_SPLASHSCREEN
  83. $(SED) '/^splashimage/d' $(ROOTFS_ISO9660_BOOTLOADER_CONFIG_PATH)
  84. endef
  85. ROOTFS_ISO9660_PRE_GEN_HOOKS += ROOTFS_ISO9660_DISABLE_SPLASHSCREEN
  86. endif
  87. endif
  88. define ROOTFS_ISO9660_DISABLE_EXTERNAL_INITRD
  89. $(SED) '/__INITRD_PATH__/d' $(ROOTFS_ISO9660_BOOTLOADER_CONFIG_PATH)
  90. endef
  91. ifeq ($(ROOTFS_ISO9660_USE_INITRD),YES)
  92. # Copy Grub splashscreen to temporary filesystem
  93. ifeq ($(BR2_TARGET_ROOTFS_ISO9660_GRUB),y)
  94. ifeq ($(BR2_TARGET_GRUB_SPLASH),y)
  95. define ROOTFS_ISO9660_INSTALL_SPLASHSCREEN
  96. $(INSTALL) -D -m 0644 $(TARGET_DIR)/boot/grub/splash.xpm.gz \
  97. $(ROOTFS_ISO9660_TARGET_DIR)/boot/grub/splash.xpm.gz
  98. endef
  99. ROOTFS_ISO9660_PRE_GEN_HOOKS += ROOTFS_ISO9660_INSTALL_SPLASHSCREEN
  100. endif
  101. endif
  102. # Copy the kernel to temporary filesystem
  103. define ROOTFS_ISO9660_COPY_KERNEL
  104. $(INSTALL) -D -m 0644 $(LINUX_IMAGE_PATH) \
  105. $(ROOTFS_ISO9660_TARGET_DIR)/boot/$(LINUX_IMAGE_NAME)
  106. endef
  107. ROOTFS_ISO9660_PRE_GEN_HOOKS += ROOTFS_ISO9660_COPY_KERNEL
  108. # If initramfs is used, disable loading the initrd as the rootfs is
  109. # already inside the kernel image. Otherwise, make sure a cpio is
  110. # generated and use it as the initrd.
  111. ifeq ($(BR2_TARGET_ROOTFS_INITRAMFS),y)
  112. ROOTFS_ISO9660_PRE_GEN_HOOKS += ROOTFS_ISO9660_DISABLE_EXTERNAL_INITRD
  113. else
  114. ROOTFS_ISO9660_DEPENDENCIES += rootfs-cpio
  115. define ROOTFS_ISO9660_COPY_INITRD
  116. $(INSTALL) -D -m 0644 $(BINARIES_DIR)/rootfs.cpio$(ROOTFS_CPIO_COMPRESS_EXT) \
  117. $(ROOTFS_ISO9660_TARGET_DIR)/boot/initrd
  118. $(SED) "s%__INITRD_PATH__%/boot/initrd%" \
  119. $(ROOTFS_ISO9660_BOOTLOADER_CONFIG_PATH)
  120. endef
  121. ROOTFS_ISO9660_PRE_GEN_HOOKS += ROOTFS_ISO9660_COPY_INITRD
  122. endif
  123. else # ROOTFS_ISO9660_USE_INITRD
  124. ROOTFS_ISO9660_PRE_GEN_HOOKS += ROOTFS_ISO9660_DISABLE_EXTERNAL_INITRD
  125. endif # ROOTFS_ISO9660_USE_INITRD
  126. define ROOTFS_ISO9660_CMD
  127. $(HOST_DIR)/usr/bin/genisoimage -J -R -b $(ROOTFS_ISO9660_BOOT_IMAGE) \
  128. -no-emul-boot -boot-load-size 4 -boot-info-table \
  129. -o $@ $(ROOTFS_ISO9660_TARGET_DIR)
  130. endef
  131. ifeq ($(BR2_TARGET_ROOTFS_ISO9660_HYBRID),y)
  132. define ROOTFS_ISO9660_GEN_HYBRID
  133. $(HOST_DIR)/usr/bin/isohybrid -t 0x96 $@
  134. endef
  135. ROOTFS_ISO9660_POST_GEN_HOOKS += ROOTFS_ISO9660_GEN_HYBRID
  136. endif
  137. $(eval $(call ROOTFS_TARGET,iso9660))