123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109 |
- ################################################################################
- #
- # 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))
|