| ################################################################################ |
| # |
| # cpio to archive target filesystem |
| # |
| ################################################################################ |
| |
| ifeq ($(BR2_ROOTFS_DEVICE_CREATION_STATIC),y) |
| |
| define ROOTFS_CPIO_ADD_INIT |
| if [ ! -e $(TARGET_DIR)/init ]; then \ |
| ln -sf sbin/init $(TARGET_DIR)/init; \ |
| fi |
| endef |
| |
| else |
| # devtmpfs does not get automounted when initramfs is used. |
| # Add a pre-init script to mount it before running init |
| # We must have /dev/console very early, even before /init runs, |
| # for stdin/stdout/stderr |
| define ROOTFS_CPIO_ADD_INIT |
| if [ ! -e $(TARGET_DIR)/init ]; then \ |
| $(INSTALL) -m 0755 fs/cpio/init $(TARGET_DIR)/init; \ |
| fi |
| mkdir -p $(TARGET_DIR)/dev |
| mknod -m 0622 $(TARGET_DIR)/dev/console c 5 1 |
| endef |
| |
| endif # BR2_ROOTFS_DEVICE_CREATION_STATIC |
| |
| ROOTFS_CPIO_PRE_GEN_HOOKS += ROOTFS_CPIO_ADD_INIT |
| |
| # --reproducible option was introduced in cpio v2.12, which may not be |
| # available in some old distributions, so we build host-cpio |
| ifeq ($(BR2_REPRODUCIBLE),y) |
| ROOTFS_CPIO_DEPENDENCIES += host-cpio |
| ROOTFS_CPIO_OPTS += --reproducible |
| endif |
| |
| ifeq ($(BR2_TARGET_ROOTFS_CPIO_FULL),y) |
| |
| define ROOTFS_CPIO_CMD |
| cd $(TARGET_DIR) && \ |
| find . \ |
| | LC_ALL=C sort \ |
| | cpio $(ROOTFS_CPIO_OPTS) --quiet -o -H newc \ |
| > $@ |
| endef |
| |
| else ifeq ($(BR2_TARGET_ROOTFS_CPIO_DRACUT),y) |
| |
| ROOTFS_CPIO_DEPENDENCIES += host-dracut |
| |
| ROOTFS_CPIO_DRACUT_MODULES = $(call qstrip,$(BR2_TARGET_ROOTFS_CPIO_DRACUT_MODULES)) |
| ifeq ($(BR_BUILDING),y) |
| ifneq ($(words $(ROOTFS_CPIO_DRACUT_MODULES)),$(words $(sort $(notdir $(ROOTFS_CPIO_DRACUT_MODULES))))) |
| $(error No two dracut modules can have the same basename, check your BR2_TARGET_ROOTFS_CPIO_DRACUT_MODULES setting) |
| endif |
| endif |
| |
| ROOTFS_CPIO_DRACUT_CONF_FILES = $(call qstrip,$(BR2_TARGET_ROOTFS_CPIO_DRACUT_CONF_FILES)) |
| ifeq ($(BR_BUILDING),y) |
| ifeq ($(ROOTFS_CPIO_DRACUT_CONF_FILES),) |
| $(error No dracut config file name specified, check your BR2_TARGET_ROOTFS_CPIO_DRACUT_CONF_FILES setting) |
| endif |
| ifneq ($(words $(ROOTFS_CPIO_DRACUT_CONF_FILES)),$(words $(sort $(notdir $(ROOTFS_CPIO_DRACUT_CONF_FILES))))) |
| $(error No two dracut config files can have the same basename, check your BR2_TARGET_ROOTFS_CPIO_DRACUT_CONF_FILES setting) |
| endif |
| endif |
| |
| ifeq ($(BR2_LINUX_KERNEL),y) |
| ROOTFS_CPIO_DEPENDENCIES += linux |
| ROOTFS_CPIO_OPTS += --kver $(LINUX_VERSION_PROBED) |
| else |
| ROOTFS_CPIO_OPTS += --no-kernel |
| endif |
| |
| define ROOTFS_CPIO_CMD |
| mkdir -p $(ROOTFS_CPIO_DIR)/tmp $(ROOTFS_CPIO_DIR)/confdir $(HOST_DIR)/lib/dracut/modules.d |
| touch $(ROOTFS_CPIO_DIR)/empty-config |
| $(foreach cfg,$(ROOTFS_CPIO_DRACUT_CONF_FILES), \ |
| cp $(cfg) $(ROOTFS_CPIO_DIR)/confdir/$(notdir $(cfg)) |
| ) |
| $(foreach m,$(ROOTFS_CPIO_DRACUT_MODULES), \ |
| cp -a $(m)/* $(HOST_DIR)/lib/dracut/modules.d/ |
| ) |
| $(HOST_DIR)/bin/dracut \ |
| $(ROOTFS_CPIO_OPTS) \ |
| -c $(ROOTFS_CPIO_DIR)/empty-config \ |
| --confdir $(ROOTFS_CPIO_DIR)/confdir \ |
| --sysroot $(TARGET_DIR) \ |
| --tmpdir $(ROOTFS_CPIO_DIR)/tmp \ |
| -M \ |
| --force \ |
| --no-compress \ |
| $@ |
| endef |
| |
| endif #BR2_TARGET_ROOTFS_CPIO_DRACUT |
| |
| ifeq ($(BR2_TARGET_ROOTFS_CPIO_UIMAGE),y) |
| ROOTFS_CPIO_DEPENDENCIES += host-uboot-tools |
| define ROOTFS_CPIO_UBOOT_MKIMAGE |
| $(MKIMAGE) -A $(MKIMAGE_ARCH) -T ramdisk \ |
| -C none -d $@$(ROOTFS_CPIO_COMPRESS_EXT) $@.uboot |
| endef |
| ROOTFS_CPIO_POST_GEN_HOOKS += ROOTFS_CPIO_UBOOT_MKIMAGE |
| endif |
| |
| $(eval $(rootfs)) |