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