2019-06-17 05:26:28 +02:00
|
|
|
--- ./src/shutdown.c.orig 2019-06-15 12:02:34.000000000 -0500
|
|
|
|
+++ ./src/shutdown.c 2019-06-16 22:04:35.734002893 -0500
|
2019-03-02 00:44:12 +01:00
|
|
|
@@ -192,7 +192,7 @@
|
2018-06-22 00:58:42 +02:00
|
|
|
|
2019-03-02 00:44:12 +01:00
|
|
|
/*
|
|
|
|
* Open the fifo and write the command.
|
|
|
|
- * Make sure we don't hang on opening /run/initctl
|
|
|
|
+ * Make sure we don't hang on opening /dev/initctl
|
|
|
|
*/
|
|
|
|
memset(&sa, 0, sizeof(sa));
|
|
|
|
sa.sa_handler = alrm_handler;
|
2019-06-17 05:26:28 +02:00
|
|
|
--- ./src/Makefile.orig 2019-06-15 12:02:34.000000000 -0500
|
|
|
|
+++ ./src/Makefile 2019-06-16 22:04:35.736002893 -0500
|
2019-03-02 00:44:12 +01:00
|
|
|
@@ -231,8 +231,8 @@
|
|
|
|
#
|
|
|
|
# This part is skipped on Debian systems, the
|
|
|
|
# debian.preinst script takes care of it.
|
|
|
|
- @if [ ! -p /run/initctl ]; then \
|
|
|
|
- echo "Creating /run/initctl"; \
|
|
|
|
- rm -f /run/initctl; \
|
|
|
|
- mknod -m 600 /run/initctl p; fi
|
|
|
|
+ @if [ ! -p /dev/initctl ]; then \
|
|
|
|
+ echo "Creating /dev/initctl"; \
|
|
|
|
+ rm -f /dev/initctl; \
|
|
|
|
+ mknod -m 600 /dev/initctl p; fi
|
|
|
|
endif
|
2019-06-17 05:26:28 +02:00
|
|
|
--- ./src/initreq.h.orig 2019-06-15 12:02:34.000000000 -0500
|
|
|
|
+++ ./src/initreq.h 2019-06-16 22:04:35.737002893 -0500
|
2019-03-02 00:44:12 +01:00
|
|
|
@@ -1,5 +1,5 @@
|
|
|
|
/*
|
|
|
|
- * initreq.h Interface to talk to init through /run/initctl.
|
|
|
|
+ * initreq.h Interface to talk to init through /dev/initctl.
|
|
|
|
*
|
|
|
|
* Copyright (C) 1995-2004 Miquel van Smoorenburg
|
|
|
|
*
|
|
|
|
@@ -26,7 +26,7 @@
|
|
|
|
#include <sys/param.h>
|
|
|
|
|
|
|
|
#ifndef INIT_FIFO
|
|
|
|
-#define INIT_FIFO "/run/initctl"
|
|
|
|
+#define INIT_FIFO "/dev/initctl"
|
|
|
|
#endif
|
|
|
|
|
|
|
|
#define INIT_MAGIC 0x03091969
|
2019-06-17 05:26:28 +02:00
|
|
|
--- ./src/init.c.orig 2019-06-15 12:02:35.000000000 -0500
|
|
|
|
+++ ./src/init.c 2019-06-16 22:04:35.742002893 -0500
|
2019-03-02 00:44:12 +01:00
|
|
|
@@ -146,7 +146,7 @@
|
|
|
|
int maxproclen; /* Maximal length of argv[0] with \0 */
|
|
|
|
struct utmp utproto; /* Only used for sizeof(utproto.ut_id) */
|
|
|
|
char *console_dev; /* Console device. */
|
|
|
|
-int pipe_fd = -1; /* /run/initctl */
|
|
|
|
+int pipe_fd = -1; /* /dev/initctl */
|
|
|
|
int did_boot = 0; /* Did we already do BOOT* stuff? */
|
|
|
|
int main(int, char **);
|
|
|
|
|
2019-06-17 05:26:28 +02:00
|
|
|
@@ -2386,13 +2386,13 @@
|
2019-03-02 00:44:12 +01:00
|
|
|
int quit = 0;
|
|
|
|
|
|
|
|
/*
|
|
|
|
- * First, try to create /run/initctl if not present.
|
|
|
|
+ * First, try to create /dev/initctl if not present.
|
|
|
|
*/
|
|
|
|
if (stat(INIT_FIFO, &st2) < 0 && errno == ENOENT)
|
|
|
|
(void)mkfifo(INIT_FIFO, 0600);
|
|
|
|
|
|
|
|
/*
|
|
|
|
- * If /run/initctl is open, stat the file to see if it
|
|
|
|
+ * If /dev/initctl is open, stat the file to see if it
|
|
|
|
* is still the _same_ inode.
|
|
|
|
*/
|
|
|
|
if (pipe_fd >= 0) {
|
2019-06-17 05:26:28 +02:00
|
|
|
@@ -2406,7 +2406,7 @@
|
2019-03-02 00:44:12 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
/*
|
|
|
|
- * Now finally try to open /run/initctl if pipe_fd is -1
|
|
|
|
+ * Now finally try to open /dev/initctl if pipe_fd is -1
|
|
|
|
* if it is -2, then we leave it closed
|
|
|
|
*/
|
|
|
|
if (pipe_fd == -1) {
|
2019-06-17 05:26:28 +02:00
|
|
|
@@ -2715,7 +2715,7 @@
|
2019-03-02 00:44:12 +01:00
|
|
|
}
|
|
|
|
if (ISMEMBER(got_signals, SIGUSR1)) {
|
|
|
|
/*
|
|
|
|
- * SIGUSR1 means close and reopen /run/initctl
|
|
|
|
+ * SIGUSR1 means close and reopen /dev/initctl
|
|
|
|
*/
|
|
|
|
INITDBG(L_VB, "got SIGUSR1");
|
|
|
|
if (pipe_fd)
|
2019-06-17 05:26:28 +02:00
|
|
|
@@ -2963,7 +2963,7 @@
|
2019-03-02 00:44:12 +01:00
|
|
|
strerror(errno));
|
|
|
|
|
|
|
|
/* Open the fifo and write a command. */
|
|
|
|
- /* Make sure we don't hang on opening /run/initctl */
|
|
|
|
+ /* Make sure we don't hang on opening /dev/initctl */
|
|
|
|
SETSIG(sa, SIGALRM, signal_handler, 0);
|
|
|
|
alarm(3);
|
|
|
|
if ((fd = open(INIT_FIFO, O_WRONLY)) >= 0) {
|
2019-06-17 05:26:28 +02:00
|
|
|
--- ./doc/initctl.orig 2019-06-15 12:02:34.000000000 -0500
|
|
|
|
+++ ./doc/initctl 2019-06-16 22:04:35.743002893 -0500
|
2018-06-22 00:58:42 +02:00
|
|
|
@@ -1,5 +1,5 @@
|
|
|
|
This document describes the communiction pipe set up by SysV init
|
|
|
|
-at /run/initctl. This named pipe allows programs with the proper
|
|
|
|
+at /dev/initctl. This named pipe allows programs with the proper
|
|
|
|
permissions (typically programs run by root have read+write access to
|
|
|
|
the pipe) to send signals to the init program (PID 1).
|
|
|
|
|
|
|
|
@@ -58,13 +58,13 @@
|
|
|
|
might need to process our request. For example, when setting environment
|
|
|
|
variables.
|
|
|
|
|
|
|
|
-When setting an environment variable through init's /run/initctl pipe,
|
|
|
|
+When setting an environment variable through init's /dev/initctl pipe,
|
|
|
|
the data variable should have the format VARIABLE=VALUE. The string
|
|
|
|
should be terminated with a NULL '\0' character.
|
|
|
|
|
|
|
|
|
|
|
|
The following C code example shows how to send a set environment variable
|
|
|
|
-request to the init process using the /run/initctl pipe. This example
|
|
|
|
+request to the init process using the /dev/initctl pipe. This example
|
|
|
|
is simplified and skips the error checking. A more comlpete example can be
|
|
|
|
found in the shutdown.c program's init_setnv() function.
|
|
|
|
|
|
|
|
@@ -86,7 +86,7 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
-Usually the /run/initctl pipe would only be used by low-level programs to
|
|
|
|
+Usually the /dev/initctl pipe would only be used by low-level programs to
|
|
|
|
request a power-related shutdown or change the runlevel, like telinit
|
|
|
|
would do. Most of the time there is no need to talk to init directly, but
|
|
|
|
this gives us an extenable approach so init can be taught how to learn
|
2019-06-17 05:26:28 +02:00
|
|
|
--- ./doc/Install.orig 2019-06-15 12:02:34.000000000 -0500
|
|
|
|
+++ ./doc/Install 2019-06-16 22:04:35.743002893 -0500
|
2019-03-02 00:44:12 +01:00
|
|
|
@@ -66,7 +66,7 @@
|
|
|
|
manual page on shutdown to find out more about this.
|
|
|
|
|
|
|
|
Running from a read-only file system (CDROM?):
|
|
|
|
-* All communication to init goes through the FIFO /run/initctl.
|
|
|
|
+* All communication to init goes through the FIFO /dev/initctl.
|
|
|
|
There should be no problem using a read-only root file system
|
|
|
|
If you use a Linux kernel > 1.3.66. Older kernels don't allow
|
|
|
|
writing to a FIFO on a read-only file system.
|
2019-06-17 05:26:28 +02:00
|
|
|
--- ./man/init.8.orig 2019-06-15 12:02:34.000000000 -0500
|
|
|
|
+++ ./man/init.8 2019-06-16 22:04:35.744002893 -0500
|
2019-03-02 00:44:12 +01:00
|
|
|
@@ -147,7 +147,7 @@
|
2018-06-22 00:58:42 +02:00
|
|
|
the letter \fBF\fP.
|
|
|
|
.PP
|
|
|
|
Usage of \fBSIGPWR\fP and \fB/etc/powerstatus\fP is discouraged. Someone
|
|
|
|
-wanting to interact with \fBinit\fP should use the \fB/run/initctl\fP
|
|
|
|
+wanting to interact with \fBinit\fP should use the \fB/dev/initctl\fP
|
|
|
|
control channel - see the initctl manual page for more documentation
|
|
|
|
about this.
|
|
|
|
.PP
|
2019-03-02 00:44:12 +01:00
|
|
|
@@ -258,7 +258,7 @@
|
|
|
|
immediately exits with a return code of zero.
|
2018-06-22 00:58:42 +02:00
|
|
|
.PP
|
|
|
|
.SH INTERFACE
|
|
|
|
-Init listens on a \fIfifo\fP in /dev, \fI/run/initctl\fP, for messages.
|
|
|
|
+Init listens on a \fIfifo\fP in /dev, \fI/dev/initctl\fP, for messages.
|
|
|
|
\fBTelinit\fP uses this to communicate with init. The interface is not
|
|
|
|
very well documented or finished. Those interested should study the
|
|
|
|
\fIinitreq.h\fP file in the \fIsrc/\fP subdirectory of the \fBinit\fP
|
2019-03-02 00:44:12 +01:00
|
|
|
@@ -272,11 +272,11 @@
|
2018-06-22 00:58:42 +02:00
|
|
|
.TP 0.5i
|
|
|
|
.B SIGUSR1
|
|
|
|
On receipt of this signals, init closes and re-opens its control fifo,
|
|
|
|
-\fB/run/initctl\fP. Useful for bootscripts when /dev is remounted.
|
|
|
|
+\fB/dev/initctl\fP. Useful for bootscripts when /dev is remounted.
|
|
|
|
.TP 0.5i
|
|
|
|
.B SIGUSR2
|
|
|
|
When init receives SIGUSR2, init closes and leaves the control fifo,
|
2019-03-02 00:44:12 +01:00
|
|
|
-\fB/run/initctl\fP, closed. This may be used to make sure init is not
|
|
|
|
+\fB/dev/initctl\fP, closed. This may be used to make sure init is not
|
2018-06-22 00:58:42 +02:00
|
|
|
holding open any files. However, it also prevents init from switching
|
|
|
|
runlevels. Which means commands like shutdown no longer work.
|
|
|
|
The fifo can be re-opened by sending init the SIGUSR1 signal.
|
2019-03-02 00:44:12 +01:00
|
|
|
@@ -304,7 +304,7 @@
|
2018-06-22 00:58:42 +02:00
|
|
|
/dev/console
|
|
|
|
/var/run/utmp
|
|
|
|
/var/log/wtmp
|
|
|
|
-/run/initctl
|
|
|
|
+/dev/initctl
|
|
|
|
.fi
|
|
|
|
.\"}}}
|
|
|
|
.\"{{{ Warnings
|
2019-06-17 05:26:28 +02:00
|
|
|
--- ./man/initctl.5.orig 2019-06-15 12:02:34.000000000 -0500
|
|
|
|
+++ ./man/initctl.5 2019-06-16 22:05:29.658002895 -0500
|
2018-06-22 00:58:42 +02:00
|
|
|
@@ -16,13 +16,13 @@
|
|
|
|
.\"
|
|
|
|
.TH INITCTL 5 "April 13, 2018" "" "Linux System Administrator's Manual"
|
|
|
|
.SH NAME
|
|
|
|
-initctl \- /run/initctl is a named pipe which passes commands to SysV init.
|
|
|
|
+initctl \- /dev/initctl is a named pipe which passes commands to SysV init.
|
|
|
|
.SH SYNOPSIS
|
|
|
|
-/run/initctl
|
|
|
|
+/dev/initctl
|
|
|
|
.SH DESCRIPTION
|
|
|
|
|
|
|
|
This document describes the communiction pipe set up by SysV init
|
|
|
|
-at /run/initctl. This named pipe allows programs with the proper
|
|
|
|
+at /dev/initctl. This named pipe allows programs with the proper
|
|
|
|
permissions (typically programs run by root have read+write access to
|
|
|
|
the pipe) to send signals to the init program (PID 1).
|
|
|
|
|
|
|
|
@@ -86,14 +86,14 @@
|
|
|
|
might need to process our request. For example, when setting environment
|
|
|
|
variables.
|
|
|
|
|
|
|
|
-When setting an environment variable through init's /run/initctl pipe,
|
|
|
|
+When setting an environment variable through init's /dev/initctl pipe,
|
|
|
|
the data variable should have the format VARIABLE=VALUE. The string
|
|
|
|
should be terminated with a NULL character.
|
|
|
|
|
|
|
|
.SH EXAMPLES
|
|
|
|
|
|
|
|
The following C code example shows how to send a set environment variable
|
|
|
|
-request to the init process using the /run/initctl pipe. This example
|
|
|
|
+request to the init process using the /dev/initctl pipe. This example
|
|
|
|
is simplified and skips the error checking. A more comlpete example can be
|
|
|
|
found in the shutdown.c program's init_setnv() function.
|
|
|
|
|
2019-06-17 05:26:28 +02:00
|
|
|
@@ -117,18 +117,18 @@
|
|
|
|
|
2018-06-22 00:58:42 +02:00
|
|
|
.sp
|
|
|
|
.SH NOTES
|
|
|
|
-Usually the /run/initctl pipe would only be used by low-level programs to
|
|
|
|
+Usually the /dev/initctl pipe would only be used by low-level programs to
|
|
|
|
request a power-related shutdown or change the runlevel, like telinit
|
|
|
|
would do. Most of the time there is no need to talk to init directly, but
|
|
|
|
this gives us an extenable approach so init can be taught how to learn
|
|
|
|
more commands.
|
|
|
|
.PP
|
|
|
|
-The commands passed through the /run/initctl pipe must be sent in a specific
|
|
|
|
+The commands passed through the /dev/initctl pipe must be sent in a specific
|
|
|
|
binary format and be of a specific length. Larger data structures or ones
|
|
|
|
not using the proper format will be ignored. Typically, only root has the
|
|
|
|
ability to write to the initctl pipe for security reasons.
|
|
|
|
.PP
|
|
|
|
-The /run/initctl pipe can be closed by sending init (PID 1) the SIGUSR2
|
|
|
|
+The /dev/initctl pipe can be closed by sending init (PID 1) the SIGUSR2
|
|
|
|
signal. This closes the pipe and leaves it closed. This may be useful
|
|
|
|
for making sure init is not keeping any files open. However, when the
|
|
|
|
pipe is closed, init no longer receives signals, such as those sent by
|
2019-06-17 05:26:28 +02:00
|
|
|
@@ -136,11 +136,11 @@
|
2018-06-22 00:58:42 +02:00
|
|
|
change its runlevel directly. The pipe may be re-opened by sending init (PID 1)
|
|
|
|
the SIGUSR1 signal.
|
|
|
|
.PP
|
|
|
|
-If the /run/initctl pipe is closed then it may still be possible to bring
|
|
|
|
+If the /dev/initctl pipe is closed then it may still be possible to bring
|
|
|
|
down the system using the shutdown command's -n flag, but this is not
|
|
|
|
always clean and not recommended.
|
|
|
|
.SH FILES
|
|
|
|
-/run/initctl
|
|
|
|
+/dev/initctl
|
|
|
|
/sbin/init
|
|
|
|
.SH AUTHOR
|
|
|
|
Jesse Smith <jsmith@resonatingmedia.com>
|