diff --git a/fs/cpio/cpio.mk b/fs/cpio/cpio.mk index ab7d54618..aa20b4107 100644 --- a/fs/cpio/cpio.mk +++ b/fs/cpio/cpio.mk @@ -4,15 +4,29 @@ # ############################################################# -define ROOTFS_CPIO_INIT_SYMLINK - rm -f $(TARGET_DIR)/init - ln -s sbin/init $(TARGET_DIR)/init +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 -ROOTFS_CPIO_PRE_GEN_HOOKS += ROOTFS_CPIO_INIT_SYMLINK +else +# devtmpfs does not get automounted when initramfs is used. +# Add a pre-init script to mount it before running init +define ROOTFS_CPIO_ADD_INIT + if [ ! -e $(TARGET_DIR)/init ]; then \ + $(INSTALL) -m 0755 fs/cpio/init $(TARGET_DIR)/init; \ + fi +endef + +endif # BR2_ROOTFS_DEVICE_CREATION_STATIC + +ROOTFS_CPIO_PRE_GEN_HOOKS += ROOTFS_CPIO_ADD_INIT define ROOTFS_CPIO_CMD cd $(TARGET_DIR) && find . | cpio --quiet -o -H newc > $$@ endef -$(eval $(call ROOTFS_TARGET,cpio)) \ No newline at end of file +$(eval $(call ROOTFS_TARGET,cpio)) diff --git a/fs/cpio/init b/fs/cpio/init new file mode 100755 index 000000000..a27548217 --- /dev/null +++ b/fs/cpio/init @@ -0,0 +1,7 @@ +#!/bin/sh +# devtmpfs does not get automounted for initramfs +/bin/mount -t devtmpfs devtmpfs /dev +exec 0/dev/console +exec 2>/dev/console +exec /sbin/init $*