Commit 726b15f6 authored by Yegor Yefremov's avatar Yegor Yefremov Committed by Peter Korsgaard
Browse files

Create menu entry to select device creation method



Four methods for the creation of device files in /dev are now
proposed:

 - static method uses device table as before
 - devtmpfs method enables this feature in kernel
 - mdev method adds mdev starting script to the file system
    and selects mdev itself for installation
 - udev method selects udev for installation

All dynamic methods are based on devtmpfs, so one doesn't need to care
about /dev folder.

Signed-off-by: default avatarYegor Yefremov <yegorslists@googlemail.com>
Signed-off-by: default avatarThomas Petazzoni <thomas.petazzoni@free-electrons.com>
Signed-off-by: default avatarPeter Korsgaard <jacmet@sunsite.dk>
parent c59d0247
Loading
Loading
Loading
Loading
+27 −6
Original line number Diff line number Diff line
@@ -15,8 +15,29 @@ config BR2_ROOTFS_POST_BUILD_SCRIPT
	  only argument. Make sure the exit code of that script is 0,
	  otherwise make will stop after calling it.

choice
	prompt "/dev management"
	default BR2_ROOTFS_DEVICE_CREATION_STATIC

config BR2_ROOTFS_DEVICE_CREATION_STATIC
	bool "Static using device table"

config BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_DEVTMPFS
	bool "Dynamic using devtmpfs only"

config BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_MDEV
	bool "Dynamic using mdev"
	select BR2_PACKAGE_BUSYBOX

config BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_UDEV
	bool "Dynamic using udev"
	select BR2_PACKAGE_UDEV

endchoice

config BR2_ROOTFS_DEVICE_TABLE
	string "Path to the device table"
	depends on BR2_ROOTFS_DEVICE_CREATION_STATIC
	default "target/generic/device_table.txt"
	help
	  Specify the location of a device table, that will be passed
+7 −0
Original line number Diff line number Diff line
@@ -133,6 +133,13 @@ ifeq ($(BR2_TARGET_ROOTFS_INITRAMFS),y)
	$(call KCONFIG_SET_OPT,CONFIG_INITRAMFS_ROOT_GID,0,$(@D)/.config)
	$(call KCONFIG_DISABLE_OPT,CONFIG_INITRAMFS_COMPRESSION_NONE,$(@D)/.config)
	$(call KCONFIG_ENABLE_OPT,CONFIG_INITRAMFS_COMPRESSION_GZIP,$(@D)/.config)
endif
ifneq ($(BR2_ROOTFS_DEVICE_CREATION_STATIC),y)
	$(call KCONFIG_ENABLE_OPT,CONFIG_DEVTMPFS,$(@D)/.config)
	$(call KCONFIG_ENABLE_OPT,CONFIG_DEVTMPFS_MOUNT,$(@D)/.config)
endif
ifeq ($(BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_MDEV),y)
	$(call KCONFIG_SET_OPT,CONFIG_UEVENT_HELPER_PATH,\"/sbin/mdev\",$(@D)/.config)
endif
	$(TARGET_MAKE_ENV) $(MAKE) $(LINUX26_MAKE_FLAGS) -C $(@D) oldconfig
	$(Q)touch $@
+20 −0
Original line number Diff line number Diff line
#!/bin/sh
#
# Start mdev....
#

case "$1" in
  start)
	echo "Starting mdev..."
	/sbin/mdev -s
	;;
  stop)
	;;
  restart|reload)
	;;
  *)
	echo $"Usage: $0 {start|stop|restart}"
	exit 1
esac

exit $?
+15 −0
Original line number Diff line number Diff line
@@ -28,6 +28,19 @@ ifndef BUSYBOX_CONFIG_FILE
	BUSYBOX_CONFIG_FILE = $(call qstrip,$(BR2_PACKAGE_BUSYBOX_CONFIG))
endif

# If mdev will be used for device creation enable it and copy S10mdev to /etc/init.d
ifeq ($(BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_MDEV),y)
define BUSYBOX_INSTALL_MDEV_SCRIPT
	install -m 0755 package/busybox/S10mdev $(TARGET_DIR)/etc/init.d
endef
define BUSYBOX_SET_MDEV
	$(call KCONFIG_ENABLE_OPT,CONFIG_MDEV,$(BUSYBOX_BUILD_CONFIG))
	$(call KCONFIG_ENABLE_OPT,CONFIG_FEATURE_MDEV_CONF,$(BUSYBOX_BUILD_CONFIG))
	$(call KCONFIG_ENABLE_OPT,CONFIG_FEATURE_MDEV_EXEC,$(BUSYBOX_BUILD_CONFIG))
	$(call KCONFIG_ENABLE_OPT,CONFIG_FEATURE_MDEV_LOAD_FIRMWARE,$(BUSYBOX_BUILD_CONFIG))
endef
endif

# If we have external syslogd, force busybox to use it
ifeq ($(BR2_PACKAGE_SYSKLOGD),y)
define BUSYBOX_SET_SYSKLOGD
@@ -122,6 +135,7 @@ define BUSYBOX_CONFIGURE_CMDS
	$(BUSYBOX_SET_IPV6)
	$(BUSYBOX_SET_RPC)
	$(BUSYBOX_PREFER_STATIC)
	$(BUSYBOX_SET_MDEV)
	$(BUSYBOX_NETKITBASE)
	$(BUSYBOX_NETKITTELNET)
	@yes "" | $(MAKE) ARCH=$(KERNEL_ARCH) CROSS_COMPILE="$(TARGET_CROSS)" \
@@ -138,6 +152,7 @@ define BUSYBOX_INSTALL_TARGET_CMDS
		$(INSTALL) -m 0755 -D package/busybox/udhcpc.script \
			$(TARGET_DIR)/usr/share/udhcpc/default.script; \
	fi
	$(BUSYBOX_INSTALL_MDEV_SCRIPT)
endef

define BUSYBOX_UNINSTALL_TARGET_CMDS