mirror of
https://github.com/troglobit/finit.git
synced 2026-10-25 12:04:36 +00:00
Fix #96: Start udevd as a proper service
Signed-off-by: Joachim Nilsson <troglobit@gmail.com>
This commit is contained in:
1 parent
3092d55ec5
commit
2ec132c75a
1 file changed
+15
-22
+15
-22
@@ -377,15 +377,19 @@ int main(int argc, char* argv[])
|
|||||||
/* Desktop and server distros usually have a variant of udev */
|
/* Desktop and server distros usually have a variant of udev */
|
||||||
udev = 1;
|
udev = 1;
|
||||||
|
|
||||||
/* Register udevd as a monitored service, started much later */
|
/* Register udevd as a monitored service */
|
||||||
snprintf(cmd, sizeof(cmd), "[12345] %s -- Device event manager daemon", path);
|
snprintf(cmd, sizeof(cmd), "[S12345789] %s -- Device event manager daemon", path);
|
||||||
|
free(path);
|
||||||
if (service_register(SVC_TYPE_SERVICE, cmd, global_rlimit, NULL)) {
|
if (service_register(SVC_TYPE_SERVICE, cmd, global_rlimit, NULL)) {
|
||||||
_pe("Failed registering %s", path);
|
_pe("Failed registering %s", path);
|
||||||
udev = 0;
|
udev = 0;
|
||||||
}
|
} else {
|
||||||
|
snprintf(cmd, sizeof(cmd), "[S] udevadm trigger --action=add --type=subsystems -- ");
|
||||||
|
service_register(SVC_TYPE_RUN, cmd, global_rlimit, NULL);
|
||||||
|
|
||||||
/* Start a temporary udevd instance to populate /dev */
|
snprintf(cmd, sizeof(cmd), "[S] udevadm trigger --action=add --type=devices -- ");
|
||||||
snprintf(cmd, sizeof(cmd), "%s --daemon", path);
|
service_register(SVC_TYPE_RUN, cmd, global_rlimit, NULL);
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
path = which("mdev");
|
path = which("mdev");
|
||||||
if (path) {
|
if (path) {
|
||||||
@@ -394,20 +398,9 @@ int main(int argc, char* argv[])
|
|||||||
touch("/dev/mdev.log");
|
touch("/dev/mdev.log");
|
||||||
|
|
||||||
snprintf(cmd, sizeof(cmd), "%s -s", path);
|
snprintf(cmd, sizeof(cmd), "%s -s", path);
|
||||||
}
|
free(path);
|
||||||
}
|
|
||||||
|
|
||||||
if (path) {
|
run_interactive(cmd, "Populating device tree");
|
||||||
free(path);
|
|
||||||
|
|
||||||
run_interactive(cmd, "Populating device tree");
|
|
||||||
if (udev && whichp("udevadm")) {
|
|
||||||
run("udevadm trigger --action=add --type=subsystems");
|
|
||||||
run("udevadm trigger --action=add --type=devices");
|
|
||||||
run("udevadm settle --timeout=120");
|
|
||||||
|
|
||||||
/* Tell temporary udevd to exit, we'll start a monitored instance later */
|
|
||||||
run("udevadm control --exit");
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -428,10 +421,6 @@ int main(int argc, char* argv[])
|
|||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Debian has this little script to copy generated rules while the system was read-only */
|
|
||||||
if (fexist("/lib/udev/udev-finish"))
|
|
||||||
run_interactive("/lib/udev/udev-finish", "Finalizing udev");
|
|
||||||
|
|
||||||
/* Bootstrap conditions, needed for hooks */
|
/* Bootstrap conditions, needed for hooks */
|
||||||
cond_init();
|
cond_init();
|
||||||
|
|
||||||
@@ -471,6 +460,10 @@ int main(int argc, char* argv[])
|
|||||||
sm_init(&sm);
|
sm_init(&sm);
|
||||||
sm_step(&sm);
|
sm_step(&sm);
|
||||||
|
|
||||||
|
/* Debian has this little script to copy generated rules while the system was read-only */
|
||||||
|
if (udev && fexist("/lib/udev/udev-finish"))
|
||||||
|
run_interactive("/lib/udev/udev-finish", "Finalizing udev");
|
||||||
|
|
||||||
/* Start new initctl API responder */
|
/* Start new initctl API responder */
|
||||||
api_init(&loop);
|
api_init(&loop);
|
||||||
umask(022);
|
umask(022);
|
||||||
|
|||||||
Reference in new issue
Block a user