kumquat-buildroot/fs/iso9660/iso9660.mk

132 lines
4.3 KiB
Makefile
Raw Normal View History

################################################################################
#
# Build the iso96600 root filesystem image
#
################################################################################
fs/iso9660: support building a real iso9660 filesystem Until now, the iso9660 filesystem handling only supported using an initrd/initramfs to store the root filesystem, which is very different from what we do with the other filesystems. This commit changes the iso9660 logic to also allow using directly an iso9660 filesystem to store the root filesystem. A new option, BR2_TARGET_ROOTFS_ISO9660_INITRD, is created to tell the iso9660 that we want to use an initrd and not directly the root filesystem in iso9660 format. This option defaults to 'y' to preserve the existing behavior. After this commit, we therefore have three possibilities: * BR2_TARGET_ROOTFS_ISO9660=y, with BR2_TARGET_ROOTFS_INITRAMFS and BR2_TARGET_ROOTFS_ISO9660_INITRD disabled. In this case, the iso9660 filesystem is directly the contents of the root filesystem (since is possible thanks to the Rockridge extensions that were already enabled using the -R option of genisoimage). Obviously, it means that the root filesystem is read-only. * BR2_TARGET_ROOTFS_ISO9660=y and BR2_TARGET_ROOTFS_INITRAMFS=y (the value of BR2_TARGET_ROOTFS_ISO9660_INITRD doesn't matter). In this case, the root filesystem is already linked into the kernel image itself, as an initramfs. So the iso9660 filesystem doesn't contain the root filesystem as is, but just the bootloader and the kernel image. * BR2_TARGET_ROOTFS_ISO9660=y, BR2_TARGET_ROOTFS_ISO9660_INITRD=y and BR2_TARGET_ROOTFS_INITRAMFS disabled. In this case, a separate initrd is used. The iso9660 filesystem only contains the bootloader, the kernel and the initrd. In order to support the first case out of the box, root=/dev/sr0 is added on the kernel command line in the example Grub configuration file, so that the kernel knows where the root filesystem is located. This argument is ignored when initrd/initramfs are used. Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com> Reviewed-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
2015-06-09 00:21:41 +02:00
#
# 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-cdrkit linux
fs/iso9660: support building a real iso9660 filesystem Until now, the iso9660 filesystem handling only supported using an initrd/initramfs to store the root filesystem, which is very different from what we do with the other filesystems. This commit changes the iso9660 logic to also allow using directly an iso9660 filesystem to store the root filesystem. A new option, BR2_TARGET_ROOTFS_ISO9660_INITRD, is created to tell the iso9660 that we want to use an initrd and not directly the root filesystem in iso9660 format. This option defaults to 'y' to preserve the existing behavior. After this commit, we therefore have three possibilities: * BR2_TARGET_ROOTFS_ISO9660=y, with BR2_TARGET_ROOTFS_INITRAMFS and BR2_TARGET_ROOTFS_ISO9660_INITRD disabled. In this case, the iso9660 filesystem is directly the contents of the root filesystem (since is possible thanks to the Rockridge extensions that were already enabled using the -R option of genisoimage). Obviously, it means that the root filesystem is read-only. * BR2_TARGET_ROOTFS_ISO9660=y and BR2_TARGET_ROOTFS_INITRAMFS=y (the value of BR2_TARGET_ROOTFS_ISO9660_INITRD doesn't matter). In this case, the root filesystem is already linked into the kernel image itself, as an initramfs. So the iso9660 filesystem doesn't contain the root filesystem as is, but just the bootloader and the kernel image. * BR2_TARGET_ROOTFS_ISO9660=y, BR2_TARGET_ROOTFS_ISO9660_INITRD=y and BR2_TARGET_ROOTFS_INITRAMFS disabled. In this case, a separate initrd is used. The iso9660 filesystem only contains the bootloader, the kernel and the initrd. In order to support the first case out of the box, root=/dev/sr0 is added on the kernel command line in the example Grub configuration file, so that the kernel knows where the root filesystem is located. This argument is ignored when initrd/initramfs are used. Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com> Reviewed-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
2015-06-09 00:21:41 +02:00
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_TARGET_DIR = $(FS_DIR)/rootfs.iso9660.tmp
fs/iso9660: support building a real iso9660 filesystem Until now, the iso9660 filesystem handling only supported using an initrd/initramfs to store the root filesystem, which is very different from what we do with the other filesystems. This commit changes the iso9660 logic to also allow using directly an iso9660 filesystem to store the root filesystem. A new option, BR2_TARGET_ROOTFS_ISO9660_INITRD, is created to tell the iso9660 that we want to use an initrd and not directly the root filesystem in iso9660 format. This option defaults to 'y' to preserve the existing behavior. After this commit, we therefore have three possibilities: * BR2_TARGET_ROOTFS_ISO9660=y, with BR2_TARGET_ROOTFS_INITRAMFS and BR2_TARGET_ROOTFS_ISO9660_INITRD disabled. In this case, the iso9660 filesystem is directly the contents of the root filesystem (since is possible thanks to the Rockridge extensions that were already enabled using the -R option of genisoimage). Obviously, it means that the root filesystem is read-only. * BR2_TARGET_ROOTFS_ISO9660=y and BR2_TARGET_ROOTFS_INITRAMFS=y (the value of BR2_TARGET_ROOTFS_ISO9660_INITRD doesn't matter). In this case, the root filesystem is already linked into the kernel image itself, as an initramfs. So the iso9660 filesystem doesn't contain the root filesystem as is, but just the bootloader and the kernel image. * BR2_TARGET_ROOTFS_ISO9660=y, BR2_TARGET_ROOTFS_ISO9660_INITRD=y and BR2_TARGET_ROOTFS_INITRAMFS disabled. In this case, a separate initrd is used. The iso9660 filesystem only contains the bootloader, the kernel and the initrd. In order to support the first case out of the box, root=/dev/sr0 is added on the kernel command line in the example Grub configuration file, so that the kernel knows where the root filesystem is located. This argument is ignored when initrd/initramfs are used. Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com> Reviewed-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
2015-06-09 00:21:41 +02:00
define ROOTFS_ISO9660_CREATE_TEMPDIR
$(RM) -rf $(ROOTFS_ISO9660_TARGET_DIR)
mkdir -p $(ROOTFS_ISO9660_TARGET_DIR)
endef
ROOTFS_ISO9660_PRE_GEN_HOOKS += ROOTFS_ISO9660_CREATE_TEMPDIR
else
fs/iso9660: support building a real iso9660 filesystem Until now, the iso9660 filesystem handling only supported using an initrd/initramfs to store the root filesystem, which is very different from what we do with the other filesystems. This commit changes the iso9660 logic to also allow using directly an iso9660 filesystem to store the root filesystem. A new option, BR2_TARGET_ROOTFS_ISO9660_INITRD, is created to tell the iso9660 that we want to use an initrd and not directly the root filesystem in iso9660 format. This option defaults to 'y' to preserve the existing behavior. After this commit, we therefore have three possibilities: * BR2_TARGET_ROOTFS_ISO9660=y, with BR2_TARGET_ROOTFS_INITRAMFS and BR2_TARGET_ROOTFS_ISO9660_INITRD disabled. In this case, the iso9660 filesystem is directly the contents of the root filesystem (since is possible thanks to the Rockridge extensions that were already enabled using the -R option of genisoimage). Obviously, it means that the root filesystem is read-only. * BR2_TARGET_ROOTFS_ISO9660=y and BR2_TARGET_ROOTFS_INITRAMFS=y (the value of BR2_TARGET_ROOTFS_ISO9660_INITRD doesn't matter). In this case, the root filesystem is already linked into the kernel image itself, as an initramfs. So the iso9660 filesystem doesn't contain the root filesystem as is, but just the bootloader and the kernel image. * BR2_TARGET_ROOTFS_ISO9660=y, BR2_TARGET_ROOTFS_ISO9660_INITRD=y and BR2_TARGET_ROOTFS_INITRAMFS disabled. In this case, a separate initrd is used. The iso9660 filesystem only contains the bootloader, the kernel and the initrd. In order to support the first case out of the box, root=/dev/sr0 is added on the kernel command line in the example Grub configuration file, so that the kernel knows where the root filesystem is located. This argument is ignored when initrd/initramfs are used. Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com> Reviewed-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
2015-06-09 00:21:41 +02:00
ROOTFS_ISO9660_TARGET_DIR = $(TARGET_DIR)
endif
ifeq ($(BR2_TARGET_ROOTFS_ISO9660_GRUB2),y)
ROOTFS_ISO9660_DEPENDENCIES += grub2
ROOTFS_ISO9660_BOOTLOADER_CONFIG_PATH = \
$(ROOTFS_ISO9660_TARGET_DIR)/boot/grub/grub.cfg
ROOTFS_ISO9660_BOOT_IMAGE = boot/grub/grub-eltorito.img
define ROOTFS_ISO9660_INSTALL_BOOTLOADER
$(INSTALL) -D -m 0644 $(BINARIES_DIR)/grub-eltorito.img \
$(ROOTFS_ISO9660_TARGET_DIR)/boot/grub/grub-eltorito.img
endef
else ifeq ($(BR2_TARGET_ROOTFS_ISO9660_ISOLINUX),y)
ROOTFS_ISO9660_DEPENDENCIES += syslinux
ROOTFS_ISO9660_BOOTLOADER_CONFIG_PATH = \
$(ROOTFS_ISO9660_TARGET_DIR)/isolinux/isolinux.cfg
ROOTFS_ISO9660_BOOT_IMAGE = isolinux/isolinux.bin
define ROOTFS_ISO9660_INSTALL_BOOTLOADER
$(INSTALL) -D -m 0644 $(BINARIES_DIR)/syslinux/* \
$(ROOTFS_ISO9660_TARGET_DIR)/isolinux/
$(INSTALL) -D -m 0644 $(HOST_DIR)/share/syslinux/ldlinux.c32 \
$(ROOTFS_ISO9660_TARGET_DIR)/isolinux/ldlinux.c32
endef
endif
define ROOTFS_ISO9660_PREPARATION
fs/iso9660: support building a real iso9660 filesystem Until now, the iso9660 filesystem handling only supported using an initrd/initramfs to store the root filesystem, which is very different from what we do with the other filesystems. This commit changes the iso9660 logic to also allow using directly an iso9660 filesystem to store the root filesystem. A new option, BR2_TARGET_ROOTFS_ISO9660_INITRD, is created to tell the iso9660 that we want to use an initrd and not directly the root filesystem in iso9660 format. This option defaults to 'y' to preserve the existing behavior. After this commit, we therefore have three possibilities: * BR2_TARGET_ROOTFS_ISO9660=y, with BR2_TARGET_ROOTFS_INITRAMFS and BR2_TARGET_ROOTFS_ISO9660_INITRD disabled. In this case, the iso9660 filesystem is directly the contents of the root filesystem (since is possible thanks to the Rockridge extensions that were already enabled using the -R option of genisoimage). Obviously, it means that the root filesystem is read-only. * BR2_TARGET_ROOTFS_ISO9660=y and BR2_TARGET_ROOTFS_INITRAMFS=y (the value of BR2_TARGET_ROOTFS_ISO9660_INITRD doesn't matter). In this case, the root filesystem is already linked into the kernel image itself, as an initramfs. So the iso9660 filesystem doesn't contain the root filesystem as is, but just the bootloader and the kernel image. * BR2_TARGET_ROOTFS_ISO9660=y, BR2_TARGET_ROOTFS_ISO9660_INITRD=y and BR2_TARGET_ROOTFS_INITRAMFS disabled. In this case, a separate initrd is used. The iso9660 filesystem only contains the bootloader, the kernel and the initrd. In order to support the first case out of the box, root=/dev/sr0 is added on the kernel command line in the example Grub configuration file, so that the kernel knows where the root filesystem is located. This argument is ignored when initrd/initramfs are used. Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com> Reviewed-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
2015-06-09 00:21:41 +02:00
$(INSTALL) -D -m 0644 $(ROOTFS_ISO9660_BOOT_MENU) \
$(ROOTFS_ISO9660_BOOTLOADER_CONFIG_PATH)
fs/iso9660: support building a real iso9660 filesystem Until now, the iso9660 filesystem handling only supported using an initrd/initramfs to store the root filesystem, which is very different from what we do with the other filesystems. This commit changes the iso9660 logic to also allow using directly an iso9660 filesystem to store the root filesystem. A new option, BR2_TARGET_ROOTFS_ISO9660_INITRD, is created to tell the iso9660 that we want to use an initrd and not directly the root filesystem in iso9660 format. This option defaults to 'y' to preserve the existing behavior. After this commit, we therefore have three possibilities: * BR2_TARGET_ROOTFS_ISO9660=y, with BR2_TARGET_ROOTFS_INITRAMFS and BR2_TARGET_ROOTFS_ISO9660_INITRD disabled. In this case, the iso9660 filesystem is directly the contents of the root filesystem (since is possible thanks to the Rockridge extensions that were already enabled using the -R option of genisoimage). Obviously, it means that the root filesystem is read-only. * BR2_TARGET_ROOTFS_ISO9660=y and BR2_TARGET_ROOTFS_INITRAMFS=y (the value of BR2_TARGET_ROOTFS_ISO9660_INITRD doesn't matter). In this case, the root filesystem is already linked into the kernel image itself, as an initramfs. So the iso9660 filesystem doesn't contain the root filesystem as is, but just the bootloader and the kernel image. * BR2_TARGET_ROOTFS_ISO9660=y, BR2_TARGET_ROOTFS_ISO9660_INITRD=y and BR2_TARGET_ROOTFS_INITRAMFS disabled. In this case, a separate initrd is used. The iso9660 filesystem only contains the bootloader, the kernel and the initrd. In order to support the first case out of the box, root=/dev/sr0 is added on the kernel command line in the example Grub configuration file, so that the kernel knows where the root filesystem is located. This argument is ignored when initrd/initramfs are used. Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com> Reviewed-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
2015-06-09 00:21:41 +02:00
$(SED) "s%__KERNEL_PATH__%/boot/$(LINUX_IMAGE_NAME)%" \
$(ROOTFS_ISO9660_BOOTLOADER_CONFIG_PATH)
$(ROOTFS_ISO9660_INSTALL_BOOTLOADER)
fs/iso9660: support building a real iso9660 filesystem Until now, the iso9660 filesystem handling only supported using an initrd/initramfs to store the root filesystem, which is very different from what we do with the other filesystems. This commit changes the iso9660 logic to also allow using directly an iso9660 filesystem to store the root filesystem. A new option, BR2_TARGET_ROOTFS_ISO9660_INITRD, is created to tell the iso9660 that we want to use an initrd and not directly the root filesystem in iso9660 format. This option defaults to 'y' to preserve the existing behavior. After this commit, we therefore have three possibilities: * BR2_TARGET_ROOTFS_ISO9660=y, with BR2_TARGET_ROOTFS_INITRAMFS and BR2_TARGET_ROOTFS_ISO9660_INITRD disabled. In this case, the iso9660 filesystem is directly the contents of the root filesystem (since is possible thanks to the Rockridge extensions that were already enabled using the -R option of genisoimage). Obviously, it means that the root filesystem is read-only. * BR2_TARGET_ROOTFS_ISO9660=y and BR2_TARGET_ROOTFS_INITRAMFS=y (the value of BR2_TARGET_ROOTFS_ISO9660_INITRD doesn't matter). In this case, the root filesystem is already linked into the kernel image itself, as an initramfs. So the iso9660 filesystem doesn't contain the root filesystem as is, but just the bootloader and the kernel image. * BR2_TARGET_ROOTFS_ISO9660=y, BR2_TARGET_ROOTFS_ISO9660_INITRD=y and BR2_TARGET_ROOTFS_INITRAMFS disabled. In this case, a separate initrd is used. The iso9660 filesystem only contains the bootloader, the kernel and the initrd. In order to support the first case out of the box, root=/dev/sr0 is added on the kernel command line in the example Grub configuration file, so that the kernel knows where the root filesystem is located. This argument is ignored when initrd/initramfs are used. Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com> Reviewed-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
2015-06-09 00:21:41 +02:00
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
fs/iso9660: support building a real iso9660 filesystem Until now, the iso9660 filesystem handling only supported using an initrd/initramfs to store the root filesystem, which is very different from what we do with the other filesystems. This commit changes the iso9660 logic to also allow using directly an iso9660 filesystem to store the root filesystem. A new option, BR2_TARGET_ROOTFS_ISO9660_INITRD, is created to tell the iso9660 that we want to use an initrd and not directly the root filesystem in iso9660 format. This option defaults to 'y' to preserve the existing behavior. After this commit, we therefore have three possibilities: * BR2_TARGET_ROOTFS_ISO9660=y, with BR2_TARGET_ROOTFS_INITRAMFS and BR2_TARGET_ROOTFS_ISO9660_INITRD disabled. In this case, the iso9660 filesystem is directly the contents of the root filesystem (since is possible thanks to the Rockridge extensions that were already enabled using the -R option of genisoimage). Obviously, it means that the root filesystem is read-only. * BR2_TARGET_ROOTFS_ISO9660=y and BR2_TARGET_ROOTFS_INITRAMFS=y (the value of BR2_TARGET_ROOTFS_ISO9660_INITRD doesn't matter). In this case, the root filesystem is already linked into the kernel image itself, as an initramfs. So the iso9660 filesystem doesn't contain the root filesystem as is, but just the bootloader and the kernel image. * BR2_TARGET_ROOTFS_ISO9660=y, BR2_TARGET_ROOTFS_ISO9660_INITRD=y and BR2_TARGET_ROOTFS_INITRAMFS disabled. In this case, a separate initrd is used. The iso9660 filesystem only contains the bootloader, the kernel and the initrd. In order to support the first case out of the box, root=/dev/sr0 is added on the kernel command line in the example Grub configuration file, so that the kernel knows where the root filesystem is located. This argument is ignored when initrd/initramfs are used. Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com> Reviewed-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
2015-06-09 00:21:41 +02:00
ifeq ($(ROOTFS_ISO9660_USE_INITRD),YES)
# Copy the kernel to temporary filesystem
define ROOTFS_ISO9660_COPY_KERNEL
$(INSTALL) -D -m 0644 $(LINUX_IMAGE_PATH) \
$(ROOTFS_ISO9660_TARGET_DIR)/boot/$(LINUX_IMAGE_NAME)
endef
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
fs/iso9660: support building a real iso9660 filesystem Until now, the iso9660 filesystem handling only supported using an initrd/initramfs to store the root filesystem, which is very different from what we do with the other filesystems. This commit changes the iso9660 logic to also allow using directly an iso9660 filesystem to store the root filesystem. A new option, BR2_TARGET_ROOTFS_ISO9660_INITRD, is created to tell the iso9660 that we want to use an initrd and not directly the root filesystem in iso9660 format. This option defaults to 'y' to preserve the existing behavior. After this commit, we therefore have three possibilities: * BR2_TARGET_ROOTFS_ISO9660=y, with BR2_TARGET_ROOTFS_INITRAMFS and BR2_TARGET_ROOTFS_ISO9660_INITRD disabled. In this case, the iso9660 filesystem is directly the contents of the root filesystem (since is possible thanks to the Rockridge extensions that were already enabled using the -R option of genisoimage). Obviously, it means that the root filesystem is read-only. * BR2_TARGET_ROOTFS_ISO9660=y and BR2_TARGET_ROOTFS_INITRAMFS=y (the value of BR2_TARGET_ROOTFS_ISO9660_INITRD doesn't matter). In this case, the root filesystem is already linked into the kernel image itself, as an initramfs. So the iso9660 filesystem doesn't contain the root filesystem as is, but just the bootloader and the kernel image. * BR2_TARGET_ROOTFS_ISO9660=y, BR2_TARGET_ROOTFS_ISO9660_INITRD=y and BR2_TARGET_ROOTFS_INITRAMFS disabled. In this case, a separate initrd is used. The iso9660 filesystem only contains the bootloader, the kernel and the initrd. In order to support the first case out of the box, root=/dev/sr0 is added on the kernel command line in the example Grub configuration file, so that the kernel knows where the root filesystem is located. This argument is ignored when initrd/initramfs are used. Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com> Reviewed-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
2015-06-09 00:21:41 +02:00
ROOTFS_ISO9660_DEPENDENCIES += rootfs-cpio
define ROOTFS_ISO9660_COPY_INITRD
$(INSTALL) -D -m 0644 $(BINARIES_DIR)/rootfs.cpio$(ROOTFS_CPIO_COMPRESS_EXT) \
$(ROOTFS_ISO9660_TARGET_DIR)/boot/initrd
$(SED) "s%__INITRD_PATH__%/boot/initrd%" \
$(ROOTFS_ISO9660_BOOTLOADER_CONFIG_PATH)
endef
fs/iso9660: support building a real iso9660 filesystem Until now, the iso9660 filesystem handling only supported using an initrd/initramfs to store the root filesystem, which is very different from what we do with the other filesystems. This commit changes the iso9660 logic to also allow using directly an iso9660 filesystem to store the root filesystem. A new option, BR2_TARGET_ROOTFS_ISO9660_INITRD, is created to tell the iso9660 that we want to use an initrd and not directly the root filesystem in iso9660 format. This option defaults to 'y' to preserve the existing behavior. After this commit, we therefore have three possibilities: * BR2_TARGET_ROOTFS_ISO9660=y, with BR2_TARGET_ROOTFS_INITRAMFS and BR2_TARGET_ROOTFS_ISO9660_INITRD disabled. In this case, the iso9660 filesystem is directly the contents of the root filesystem (since is possible thanks to the Rockridge extensions that were already enabled using the -R option of genisoimage). Obviously, it means that the root filesystem is read-only. * BR2_TARGET_ROOTFS_ISO9660=y and BR2_TARGET_ROOTFS_INITRAMFS=y (the value of BR2_TARGET_ROOTFS_ISO9660_INITRD doesn't matter). In this case, the root filesystem is already linked into the kernel image itself, as an initramfs. So the iso9660 filesystem doesn't contain the root filesystem as is, but just the bootloader and the kernel image. * BR2_TARGET_ROOTFS_ISO9660=y, BR2_TARGET_ROOTFS_ISO9660_INITRD=y and BR2_TARGET_ROOTFS_INITRAMFS disabled. In this case, a separate initrd is used. The iso9660 filesystem only contains the bootloader, the kernel and the initrd. In order to support the first case out of the box, root=/dev/sr0 is added on the kernel command line in the example Grub configuration file, so that the kernel knows where the root filesystem is located. This argument is ignored when initrd/initramfs are used. Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com> Reviewed-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
2015-06-09 00:21:41 +02:00
ROOTFS_ISO9660_PRE_GEN_HOOKS += ROOTFS_ISO9660_COPY_INITRD
endif
fs/iso9660: support building a real iso9660 filesystem Until now, the iso9660 filesystem handling only supported using an initrd/initramfs to store the root filesystem, which is very different from what we do with the other filesystems. This commit changes the iso9660 logic to also allow using directly an iso9660 filesystem to store the root filesystem. A new option, BR2_TARGET_ROOTFS_ISO9660_INITRD, is created to tell the iso9660 that we want to use an initrd and not directly the root filesystem in iso9660 format. This option defaults to 'y' to preserve the existing behavior. After this commit, we therefore have three possibilities: * BR2_TARGET_ROOTFS_ISO9660=y, with BR2_TARGET_ROOTFS_INITRAMFS and BR2_TARGET_ROOTFS_ISO9660_INITRD disabled. In this case, the iso9660 filesystem is directly the contents of the root filesystem (since is possible thanks to the Rockridge extensions that were already enabled using the -R option of genisoimage). Obviously, it means that the root filesystem is read-only. * BR2_TARGET_ROOTFS_ISO9660=y and BR2_TARGET_ROOTFS_INITRAMFS=y (the value of BR2_TARGET_ROOTFS_ISO9660_INITRD doesn't matter). In this case, the root filesystem is already linked into the kernel image itself, as an initramfs. So the iso9660 filesystem doesn't contain the root filesystem as is, but just the bootloader and the kernel image. * BR2_TARGET_ROOTFS_ISO9660=y, BR2_TARGET_ROOTFS_ISO9660_INITRD=y and BR2_TARGET_ROOTFS_INITRAMFS disabled. In this case, a separate initrd is used. The iso9660 filesystem only contains the bootloader, the kernel and the initrd. In order to support the first case out of the box, root=/dev/sr0 is added on the kernel command line in the example Grub configuration file, so that the kernel knows where the root filesystem is located. This argument is ignored when initrd/initramfs are used. Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com> Reviewed-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
2015-06-09 00:21:41 +02:00
else # ROOTFS_ISO9660_USE_INITRD
ROOTFS_ISO9660_PRE_GEN_HOOKS += ROOTFS_ISO9660_DISABLE_EXTERNAL_INITRD
endif # ROOTFS_ISO9660_USE_INITRD
define ROOTFS_ISO9660_CMD
$(HOST_DIR)/bin/genisoimage -J -R -b $(ROOTFS_ISO9660_BOOT_IMAGE) \
-no-emul-boot -boot-load-size 4 -boot-info-table \
-o $@ $(ROOTFS_ISO9660_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 $(call ROOTFS_TARGET,iso9660))