[OE-core] [PATCH] eudev: create static nodes from modules
Zhou, Li
li.zhou at windriver.com
Mon Jun 4 02:23:39 UTC 2018
Ping
On 04/19/2018 02:35 PM, Li Zhou wrote:
> Revert commit <src/udev/udevd.c: remove create static nodes from modules>
> because /dev/net/tun is usually needed to already been there when system
> boots up. With this commit, /dev/net/tun is missing when sysvinit is
> used.
>
> Signed-off-by: Li Zhou <li.zhou at windriver.com>
> ---
> ...01-eudev-create-static-nodes-from-modules.patch | 106 +++++++++++++++++++++
> meta/recipes-core/udev/eudev_3.2.5.bb | 1 +
> 2 files changed, 107 insertions(+)
> create mode 100644 meta/recipes-core/udev/eudev/0001-eudev-create-static-nodes-from-modules.patch
>
> diff --git a/meta/recipes-core/udev/eudev/0001-eudev-create-static-nodes-from-modules.patch b/meta/recipes-core/udev/eudev/0001-eudev-create-static-nodes-from-modules.patch
> new file mode 100644
> index 0000000..583873e
> --- /dev/null
> +++ b/meta/recipes-core/udev/eudev/0001-eudev-create-static-nodes-from-modules.patch
> @@ -0,0 +1,106 @@
> +From 73df4fe0bd6fd2f2600f0d82b3f121c604baf1be Mon Sep 17 00:00:00 2001
> +From: Li Zhou <li.zhou at windriver.com>
> +Date: Thu, 12 Apr 2018 05:14:27 -0400
> +Subject: [PATCH] eudev: create static nodes from modules
> +
> +Revert commit <src/udev/udevd.c: remove create static nodes from modules>
> +
> +Upstream-Status: Inappropriate [Just for user's convinence]
> +
> +Signed-off-by: Li Zhou <li.zhou at windriver.com>
> +---
> + src/udev/udevd.c | 71 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
> + 1 file changed, 71 insertions(+)
> +
> +diff --git a/src/udev/udevd.c b/src/udev/udevd.c
> +index 9c33eba..95774a1 100644
> +--- a/src/udev/udevd.c
> ++++ b/src/udev/udevd.c
> +@@ -979,6 +979,76 @@ static void handle_signal(struct udev *udev, int signo) {
> + }
> + }
> +
> ++static void static_dev_create_from_modules(struct udev *udev) {
> ++ struct utsname kernel;
> ++ char modules[UTIL_PATH_SIZE];
> ++ char buf[4096];
> ++ FILE *f;
> ++
> ++ if (uname(&kernel) < 0) {
> ++ log_error("uname failed: %m");
> ++ return;
> ++ }
> ++
> ++ strscpyl(modules, sizeof(modules), ROOTPREFIX "/lib/modules/", kernel.release, "/modules.devname", NULL);
> ++ f = fopen(modules, "re");
> ++ if (f == NULL)
> ++ return;
> ++
> ++ while (fgets(buf, sizeof(buf), f) != NULL) {
> ++ char *s;
> ++ const char *modname;
> ++ const char *devname;
> ++ const char *devno;
> ++ int maj, min;
> ++ char type;
> ++ mode_t mode;
> ++ char filename[UTIL_PATH_SIZE];
> ++
> ++ if (buf[0] == '#')
> ++ continue;
> ++
> ++ modname = buf;
> ++ s = strchr(modname, ' ');
> ++ if (s == NULL)
> ++ continue;
> ++ s[0] = '\0';
> ++
> ++ devname = &s[1];
> ++ s = strchr(devname, ' ');
> ++ if (s == NULL)
> ++ continue;
> ++ s[0] = '\0';
> ++
> ++ devno = &s[1];
> ++ s = strchr(devno, ' ');
> ++ if (s == NULL)
> ++ s = strchr(devno, '\n');
> ++ if (s != NULL)
> ++ s[0] = '\0';
> ++ if (sscanf(devno, "%c%u:%u", &type, &maj, &min) != 3)
> ++ continue;
> ++
> ++ mode = 0600;
> ++ if (type == 'c')
> ++ mode |= S_IFCHR;
> ++ else if (type == 'b')
> ++ mode |= S_IFBLK;
> ++ else
> ++ continue;
> ++
> ++ strscpyl(filename, sizeof(filename), "/dev/", devname, NULL);
> ++ mkdir_parents_label(filename, 0755);
> ++ mac_selinux_create_file_prepare(filename, mode);
> ++ log_debug("mknod '%s' %c%u:%u", filename, type, maj, min);
> ++ if (mknod(filename, mode, makedev(maj, min)) < 0 && errno == EEXIST)
> ++ utimensat(AT_FDCWD, filename, NULL, 0);
> ++ mac_selinux_create_file_clear();
> ++ }
> ++
> ++ fclose(f);
> ++}
> ++
> + /*
> + * read the kernel command line, in case we need to get into debug mode
> + * udev.log-priority=<level> syslog priority
> +@@ -1183,6 +1253,7 @@ int main(int argc, char *argv[]) {
> + }
> +
> + dev_setup(NULL, UID_INVALID, GID_INVALID);
> ++ static_dev_create_from_modules(udev);
> +
> + /* before opening new files, make sure std{in,out,err} fds are in a sane state */
> + if (arg_daemonize) {
> +--
> +2.7.4
> +
> diff --git a/meta/recipes-core/udev/eudev_3.2.5.bb b/meta/recipes-core/udev/eudev_3.2.5.bb
> index 88ad8f1..9237944 100644
> --- a/meta/recipes-core/udev/eudev_3.2.5.bb
> +++ b/meta/recipes-core/udev/eudev_3.2.5.bb
> @@ -18,6 +18,7 @@ SRC_URI = "http://dev.gentoo.org/~blueness/${BPN}/${BP}.tar.gz \
> file://permissions.rules \
> file://run.rules \
> file://udev.rules \
> + file://0001-eudev-create-static-nodes-from-modules.patch \
> "
>
> SRC_URI[md5sum] = "6ca08c0e14380f87df8e8aceac123671"
--
Best Regards!
Zhou Li
Phone number: 86-10-84778511
More information about the Openembedded-core
mailing list