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: Yegor Yefremov <yegorslists@googlemail.com>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Signed-off-by: Peter Korsgaard <jacmet@sunsite.dk>
This commit is contained in:
Yegor Yefremov 2010-09-30 14:57:53 +02:00 committed by Peter Korsgaard
parent c59d024754
commit 726b15f64a
4 changed files with 69 additions and 6 deletions

View File

@ -15,13 +15,34 @@ config BR2_ROOTFS_POST_BUILD_SCRIPT
only argument. Make sure the exit code of that script is 0, only argument. Make sure the exit code of that script is 0,
otherwise make will stop after calling it. 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 config BR2_ROOTFS_DEVICE_TABLE
string "Path to the device table" string "Path to the device table"
default "target/generic/device_table.txt" depends on BR2_ROOTFS_DEVICE_CREATION_STATIC
help default "target/generic/device_table.txt"
Specify the location of a device table, that will be passed help
to the makedevs utility to create all the special device Specify the location of a device table, that will be passed
files in the target filesystem. to the makedevs utility to create all the special device
files in the target filesystem.
choice choice
prompt "Root FS skeleton" prompt "Root FS skeleton"

View File

@ -133,6 +133,13 @@ ifeq ($(BR2_TARGET_ROOTFS_INITRAMFS),y)
$(call KCONFIG_SET_OPT,CONFIG_INITRAMFS_ROOT_GID,0,$(@D)/.config) $(call KCONFIG_SET_OPT,CONFIG_INITRAMFS_ROOT_GID,0,$(@D)/.config)
$(call KCONFIG_DISABLE_OPT,CONFIG_INITRAMFS_COMPRESSION_NONE,$(@D)/.config) $(call KCONFIG_DISABLE_OPT,CONFIG_INITRAMFS_COMPRESSION_NONE,$(@D)/.config)
$(call KCONFIG_ENABLE_OPT,CONFIG_INITRAMFS_COMPRESSION_GZIP,$(@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 endif
$(TARGET_MAKE_ENV) $(MAKE) $(LINUX26_MAKE_FLAGS) -C $(@D) oldconfig $(TARGET_MAKE_ENV) $(MAKE) $(LINUX26_MAKE_FLAGS) -C $(@D) oldconfig
$(Q)touch $@ $(Q)touch $@

20
package/busybox/S10mdev Normal file
View File

@ -0,0 +1,20 @@
#!/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 $?

View File

@ -28,6 +28,19 @@ ifndef BUSYBOX_CONFIG_FILE
BUSYBOX_CONFIG_FILE = $(call qstrip,$(BR2_PACKAGE_BUSYBOX_CONFIG)) BUSYBOX_CONFIG_FILE = $(call qstrip,$(BR2_PACKAGE_BUSYBOX_CONFIG))
endif 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 # If we have external syslogd, force busybox to use it
ifeq ($(BR2_PACKAGE_SYSKLOGD),y) ifeq ($(BR2_PACKAGE_SYSKLOGD),y)
define BUSYBOX_SET_SYSKLOGD define BUSYBOX_SET_SYSKLOGD
@ -122,6 +135,7 @@ define BUSYBOX_CONFIGURE_CMDS
$(BUSYBOX_SET_IPV6) $(BUSYBOX_SET_IPV6)
$(BUSYBOX_SET_RPC) $(BUSYBOX_SET_RPC)
$(BUSYBOX_PREFER_STATIC) $(BUSYBOX_PREFER_STATIC)
$(BUSYBOX_SET_MDEV)
$(BUSYBOX_NETKITBASE) $(BUSYBOX_NETKITBASE)
$(BUSYBOX_NETKITTELNET) $(BUSYBOX_NETKITTELNET)
@yes "" | $(MAKE) ARCH=$(KERNEL_ARCH) CROSS_COMPILE="$(TARGET_CROSS)" \ @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 \ $(INSTALL) -m 0755 -D package/busybox/udhcpc.script \
$(TARGET_DIR)/usr/share/udhcpc/default.script; \ $(TARGET_DIR)/usr/share/udhcpc/default.script; \
fi fi
$(BUSYBOX_INSTALL_MDEV_SCRIPT)
endef endef
define BUSYBOX_UNINSTALL_TARGET_CMDS define BUSYBOX_UNINSTALL_TARGET_CMDS