All of lore.kernel.org
 help / color / mirror / Atom feed
* [Buildroot] [PATCH 0/2] Add a sysctl init script
@ 2018-12-18  5:02 Carlos Santos
  2018-12-18  5:02 ` [Buildroot] [PATCH 1/2] package/procps-ng: add init script for sysctl Carlos Santos
  2018-12-18  5:02 ` [Buildroot] [PATCH 2/2] package/busybox: " Carlos Santos
  0 siblings, 2 replies; 10+ messages in thread
From: Carlos Santos @ 2018-12-18  5:02 UTC (permalink / raw)
  To: buildroot

Add a simple init script that invokes sysctl early in the initialization
process to configure kernel parameters. This is already performed by
systemd (systemd-sysctl) but there is no sysvinit/busybox counterpart.

Files are read from directories in the following list in the given order
from top to bottom:

    /run/sysctl.d/*.conf
    /etc/sysctl.d/*.conf
    /usr/local/lib/sysctl.d/*.conf
    /usr/lib/sysctl.d/*.conf
    /lib/sysctl.d/*.conf
    /etc/sysctl.conf

Carlos Santos (2):
  package/procps-ng: add init script for sysctl
  package/busybox: add init script for sysctl

 package/busybox/S01sysctl      | 63 ++++++++++++++++++++++++++++++++++
 package/busybox/busybox.mk     | 12 +++++++
 package/procps-ng/S01sysctl    | 41 ++++++++++++++++++++++
 package/procps-ng/procps-ng.mk |  5 +++
 4 files changed, 121 insertions(+)
 create mode 100644 package/busybox/S01sysctl
 create mode 100644 package/procps-ng/S01sysctl

-- 
2.19.2

^ permalink raw reply	[flat|nested] 10+ messages in thread

* [Buildroot] [PATCH 1/2] package/procps-ng: add init script for sysctl
  2018-12-18  5:02 [Buildroot] [PATCH 0/2] Add a sysctl init script Carlos Santos
@ 2018-12-18  5:02 ` Carlos Santos
  2018-12-18 16:16   ` Arnout Vandecappelle
  2018-12-18  5:02 ` [Buildroot] [PATCH 2/2] package/busybox: " Carlos Santos
  1 sibling, 1 reply; 10+ messages in thread
From: Carlos Santos @ 2018-12-18  5:02 UTC (permalink / raw)
  To: buildroot

Add a simple init script that invokes sysctl early in the initialization
process to configure kernel parameters. This is already performed by
systemd (systemd-sysctl) but there is no sysvinit/busybox counterpart.

Files are read from directories in the following list in the given order
from top to bottom:

    /run/sysctl.d/*.conf
    /etc/sysctl.d/*.conf
    /usr/local/lib/sysctl.d/*.conf
    /usr/lib/sysctl.d/*.conf
    /lib/sysctl.d/*.conf
    /etc/sysctl.conf

Signed-off-by: Carlos Santos <casantos@datacom.com.br>
---
 package/procps-ng/S01sysctl    | 41 ++++++++++++++++++++++++++++++++++
 package/procps-ng/procps-ng.mk |  5 +++++
 2 files changed, 46 insertions(+)
 create mode 100644 package/procps-ng/S01sysctl

diff --git a/package/procps-ng/S01sysctl b/package/procps-ng/S01sysctl
new file mode 100644
index 0000000000..e93bdb9e17
--- /dev/null
+++ b/package/procps-ng/S01sysctl
@@ -0,0 +1,41 @@
+#!/bin/sh
+
+PROGRAM="sysctl"
+
+SYSCTL_ARGS=""
+
+# shellcheck source=/dev/null
+[ -r "/etc/default/$PROGRAM" ] && . "/etc/default/$PROGRAM"
+
+start() {
+	printf 'Starting %s: ' "$PROGRAM"
+	# shellcheck disable=SC2086 # we need the word splitting
+	/sbin/sysctl --quiet --system $SYSCTL_ARGS
+	status=$?
+	if [ "$status" -eq 0 ]; then
+		echo "OK"
+	else
+		echo "FAIL"
+	fi
+	return "$status"
+}
+
+stop() {
+	printf 'Stopping %s: OK\n' "$PROGRAM"
+}
+
+restart() {
+	stop
+	sleep 1
+	start
+}
+
+case "$1" in
+        start|stop)
+		"$1";;
+	restart|reload)
+		restart;;
+        *)
+                echo "Usage: $0 {start|stop|restart|reload}"
+                exit 1
+esac
diff --git a/package/procps-ng/procps-ng.mk b/package/procps-ng/procps-ng.mk
index 03b74784d2..e40aeb5a2a 100644
--- a/package/procps-ng/procps-ng.mk
+++ b/package/procps-ng/procps-ng.mk
@@ -44,4 +44,9 @@ ifeq ($(BR2_STATIC_LIBS),y)
 PROCPS_NG_CONF_OPTS += --disable-numa
 endif
 
+define PROCPS_NG_INSTALL_INIT_SYSV
+	$(INSTALL) -D -m 755 package/procps-ng/S01sysctl \
+		$(TARGET_DIR)/etc/init.d/S01sysctl
+endef
+
 $(eval $(autotools-package))
-- 
2.19.2

^ permalink raw reply related	[flat|nested] 10+ messages in thread

* [Buildroot] [PATCH 2/2] package/busybox: add init script for sysctl
  2018-12-18  5:02 [Buildroot] [PATCH 0/2] Add a sysctl init script Carlos Santos
  2018-12-18  5:02 ` [Buildroot] [PATCH 1/2] package/procps-ng: add init script for sysctl Carlos Santos
@ 2018-12-18  5:02 ` Carlos Santos
  2018-12-18 13:49   ` Matthew Weber
  2018-12-18 16:32   ` Nicolas Cavallari
  1 sibling, 2 replies; 10+ messages in thread
From: Carlos Santos @ 2018-12-18  5:02 UTC (permalink / raw)
  To: buildroot

Add a simple init script that invokes sysctl early in the initialization
process to configure kernel parameters. This is already performed by
systemd (systemd-sysctl) but there is no sysvinit/busybox counterpart.

Files are read from directories in the following list in the given order
from top to bottom:

    /run/sysctl.d/*.conf
    /etc/sysctl.d/*.conf
    /usr/local/lib/sysctl.d/*.conf
    /usr/lib/sysctl.d/*.conf
    /lib/sysctl.d/*.conf
    /etc/sysctl.conf

A file may be used more than once, since there can be multiple symlinks
to it. No attempt is made to prevent this.

Busybox's sysctl does not support "--quiet --system" arguments like the
sysctl provided by procps-ng, so we resort to some scripting to mimic
its behavior.

Signed-off-by: Carlos Santos <casantos@datacom.com.br>
---
 package/busybox/S01sysctl  | 63 ++++++++++++++++++++++++++++++++++++++
 package/busybox/busybox.mk | 12 ++++++++
 2 files changed, 75 insertions(+)
 create mode 100644 package/busybox/S01sysctl

diff --git a/package/busybox/S01sysctl b/package/busybox/S01sysctl
new file mode 100644
index 0000000000..35e0cef291
--- /dev/null
+++ b/package/busybox/S01sysctl
@@ -0,0 +1,63 @@
+#!/bin/sh
+
+PROGRAM="sysctl"
+
+SYSCTL_ARGS=""
+
+# shellcheck source=/dev/null
+[ -r "/etc/default/$PROGRAM" ] && . "/etc/default/$PROGRAM"
+
+# Files are read from directories in the SYSCTL_SOURCES list, in given order.
+SYSCTL_SOURCES="/etc/sysctl.d/ /usr/local/lib/sysctl.d/ /usr/lib/sysctl.d/ /lib/sysctl.d/ /etc/sysctl.conf"
+
+# A file may be used more than once, since there can be multiple symlinks to
+# it. No attempt is made to prevent this.
+#
+# Busybox's sysctl does not support "--quiet --system" arguments like the
+# sysctl provided by procps-ng, so we resort to some scripting to mimic its
+# behavior.
+#
+# The "return 1" below is fruitless, at the moment, since sysctl ends with
+# status zero even if errors happen. Hopefully this will be fixed in a future
+# version of Busybox.
+apply_configs() {
+	# shellcheck disable=SC2086 # we need the word splitting
+	find $SYSCTL_SOURCES -maxdepth 1 -name '*.conf' -print0 2> /dev/null | \
+	xargs -0 -r readlink -f | \
+	{
+		read -r file
+		[ -z "$file" ] || /sbin/sysctl -q -p "$file" $SYSCTL_ARGS || return 1
+	}
+}
+
+start() {
+	printf 'Starting %s: ' "$PROGRAM"
+	apply_configs
+	status=$?
+	if [ "$status" -eq 0 ]; then
+		echo "OK"
+	else
+		echo "FAIL"
+	fi
+	return "$status"
+}
+
+stop() {
+	printf 'Stopping %s: OK\n' "$PROGRAM"
+}
+
+restart() {
+	stop
+	sleep 1
+	start
+}
+
+case "$1" in
+        start|stop)
+		"$1";;
+	restart|reload)
+		restart;;
+        *)
+                echo "Usage: $0 {start|stop|restart|reload}"
+                exit 1
+esac
diff --git a/package/busybox/busybox.mk b/package/busybox/busybox.mk
index bfcca6ed3e..bf101d7d46 100644
--- a/package/busybox/busybox.mk
+++ b/package/busybox/busybox.mk
@@ -259,6 +259,17 @@ define BUSYBOX_INSTALL_LOGGING_SCRIPT
 endef
 endif
 
+# Only install our sysctl scripts if no other package does it.
+ifeq ($(BR2_PACKAGE_PROCPS_NG),)
+define BUSYBOX_INSTALL_SYSCTL_SCRIPT
+	if grep -q CONFIG_BB_SYSCTL=y $(@D)/.config; \
+	then \
+		$(INSTALL) -m 0755 -D package/busybox/S01sysctl \
+			$(TARGET_DIR)/etc/init.d/S01sysctl ; \
+	fi
+endef
+endif
+
 ifeq ($(BR2_INIT_BUSYBOX),y)
 define BUSYBOX_INSTALL_INITTAB
 	$(INSTALL) -D -m 0644 package/busybox/inittab $(TARGET_DIR)/etc/inittab
@@ -344,6 +355,7 @@ define BUSYBOX_INSTALL_INIT_SYSV
 	$(BUSYBOX_INSTALL_MDEV_SCRIPT)
 	$(BUSYBOX_INSTALL_LOGGING_SCRIPT)
 	$(BUSYBOX_INSTALL_WATCHDOG_SCRIPT)
+	$(BUSYBOX_INSTALL_SYSCTL_SCRIPT)
 	$(BUSYBOX_INSTALL_TELNET_SCRIPT)
 	$(BUSYBOX_INSTALL_INDIVIDUAL_BINARIES)
 endef
-- 
2.19.2

^ permalink raw reply related	[flat|nested] 10+ messages in thread

* [Buildroot] [PATCH 2/2] package/busybox: add init script for sysctl
  2018-12-18  5:02 ` [Buildroot] [PATCH 2/2] package/busybox: " Carlos Santos
@ 2018-12-18 13:49   ` Matthew Weber
  2018-12-18 14:37     ` Carlos Santos
  2018-12-18 16:32   ` Nicolas Cavallari
  1 sibling, 1 reply; 10+ messages in thread
From: Matthew Weber @ 2018-12-18 13:49 UTC (permalink / raw)
  To: buildroot

Carlos,



On Mon, Dec 17, 2018 at 11:03 PM Carlos Santos <casantos@datacom.com.br> wrote:
>
> Add a simple init script that invokes sysctl early in the initialization
> process to configure kernel parameters. This is already performed by
> systemd (systemd-sysctl) but there is no sysvinit/busybox counterpart.
>
> Files are read from directories in the following list in the given order
> from top to bottom:
>
>     /run/sysctl.d/*.conf
>     /etc/sysctl.d/*.conf
>     /usr/local/lib/sysctl.d/*.conf
>     /usr/lib/sysctl.d/*.conf
>     /lib/sysctl.d/*.conf
>     /etc/sysctl.conf
>
> A file may be used more than once, since there can be multiple symlinks
> to it. No attempt is made to prevent this.
>
> Busybox's sysctl does not support "--quiet --system" arguments like the
> sysctl provided by procps-ng, so we resort to some scripting to mimic
> its behavior.
>
> Signed-off-by: Carlos Santos <casantos@datacom.com.br>

Thanks for sending this one in.  We usually have some version of a
script that does similar in each product rootfs overlay.

I've reviewed the general function of the script is correct, I did not
verify the SYSCTL_SOURCES are all the right plans to include.  We
primarily just use the /etc/sysctl.conf default config and
/etc/sysctl.d/.

Reviewed-by: Matthew Weber <matthew.weber@rockwellcollins.com>

> ---
>  package/busybox/S01sysctl  | 63 ++++++++++++++++++++++++++++++++++++++
>  package/busybox/busybox.mk | 12 ++++++++
>  2 files changed, 75 insertions(+)
>  create mode 100644 package/busybox/S01sysctl
>
> diff --git a/package/busybox/S01sysctl b/package/busybox/S01sysctl
> new file mode 100644
> index 0000000000..35e0cef291
> --- /dev/null
> +++ b/package/busybox/S01sysctl
> @@ -0,0 +1,63 @@
> +#!/bin/sh
> +
> +PROGRAM="sysctl"
> +
> +SYSCTL_ARGS=""
> +
> +# shellcheck source=/dev/null
> +[ -r "/etc/default/$PROGRAM" ] && . "/etc/default/$PROGRAM"
> +
> +# Files are read from directories in the SYSCTL_SOURCES list, in given order.
> +SYSCTL_SOURCES="/etc/sysctl.d/ /usr/local/lib/sysctl.d/ /usr/lib/sysctl.d/ /lib/sysctl.d/ /etc/sysctl.conf"
> +
> +# A file may be used more than once, since there can be multiple symlinks to
> +# it. No attempt is made to prevent this.
> +#
> +# Busybox's sysctl does not support "--quiet --system" arguments like the
> +# sysctl provided by procps-ng, so we resort to some scripting to mimic its
> +# behavior.
> +#
> +# The "return 1" below is fruitless, at the moment, since sysctl ends with
> +# status zero even if errors happen. Hopefully this will be fixed in a future
> +# version of Busybox.
> +apply_configs() {
> +       # shellcheck disable=SC2086 # we need the word splitting
> +       find $SYSCTL_SOURCES -maxdepth 1 -name '*.conf' -print0 2> /dev/null | \

Why restrict to .conf?

> +       xargs -0 -r readlink -f | \
> +       {
> +               read -r file
> +               [ -z "$file" ] || /sbin/sysctl -q -p "$file" $SYSCTL_ARGS || return 1
> +       }
> +}
> +
> +start() {
> +       printf 'Starting %s: ' "$PROGRAM"
> +       apply_configs
> +       status=$?
> +       if [ "$status" -eq 0 ]; then
> +               echo "OK"
> +       else
> +               echo "FAIL"
> +       fi
> +       return "$status"
> +}
> +
> +stop() {
> +       printf 'Stopping %s: OK\n' "$PROGRAM"
> +}
> +
> +restart() {
> +       stop
> +       sleep 1
> +       start
> +}
> +
> +case "$1" in
> +        start|stop)
> +               "$1";;
> +       restart|reload)
> +               restart;;
> +        *)
> +                echo "Usage: $0 {start|stop|restart|reload}"
> +                exit 1
> +esac
> diff --git a/package/busybox/busybox.mk b/package/busybox/busybox.mk
> index bfcca6ed3e..bf101d7d46 100644
> --- a/package/busybox/busybox.mk
> +++ b/package/busybox/busybox.mk
> @@ -259,6 +259,17 @@ define BUSYBOX_INSTALL_LOGGING_SCRIPT
>  endef
>  endif
>
> +# Only install our sysctl scripts if no other package does it.
> +ifeq ($(BR2_PACKAGE_PROCPS_NG),)
> +define BUSYBOX_INSTALL_SYSCTL_SCRIPT
> +       if grep -q CONFIG_BB_SYSCTL=y $(@D)/.config; \
> +       then \
> +               $(INSTALL) -m 0755 -D package/busybox/S01sysctl \
> +                       $(TARGET_DIR)/etc/init.d/S01sysctl ; \
> +       fi
> +endef
> +endif
> +
>  ifeq ($(BR2_INIT_BUSYBOX),y)
>  define BUSYBOX_INSTALL_INITTAB
>         $(INSTALL) -D -m 0644 package/busybox/inittab $(TARGET_DIR)/etc/inittab
> @@ -344,6 +355,7 @@ define BUSYBOX_INSTALL_INIT_SYSV
>         $(BUSYBOX_INSTALL_MDEV_SCRIPT)
>         $(BUSYBOX_INSTALL_LOGGING_SCRIPT)
>         $(BUSYBOX_INSTALL_WATCHDOG_SCRIPT)
> +       $(BUSYBOX_INSTALL_SYSCTL_SCRIPT)
>         $(BUSYBOX_INSTALL_TELNET_SCRIPT)
>         $(BUSYBOX_INSTALL_INDIVIDUAL_BINARIES)
>  endef
> --
> 2.19.2
>
> _______________________________________________
> buildroot mailing list
> buildroot at busybox.net
> http://lists.busybox.net/mailman/listinfo/buildroot



-- 

Matthew Weber | Pr. Software Engineer | Commercial Avionics

COLLINS AEROSPACE

400 Collins Road NE, Cedar Rapids, Iowa 52498, USA

Tel: +1 319 295 7349 | FAX: +1 319 263 6099

matthew.weber at collins.com | collinsaerospace.com



CONFIDENTIALITY WARNING: This message may contain proprietary and/or
privileged information of Collins Aerospace and its affiliated
companies. If you are not the intended recipient, please 1) Do not
disclose, copy, distribute or use this message or its contents. 2)
Advise the sender by return email. 3) Delete all copies (including all
attachments) from your computer. Your cooperation is greatly
appreciated.

^ permalink raw reply	[flat|nested] 10+ messages in thread

* [Buildroot] [PATCH 2/2] package/busybox: add init script for sysctl
  2018-12-18 13:49   ` Matthew Weber
@ 2018-12-18 14:37     ` Carlos Santos
  0 siblings, 0 replies; 10+ messages in thread
From: Carlos Santos @ 2018-12-18 14:37 UTC (permalink / raw)
  To: buildroot

> From: "Matthew Weber" <Matthew.Weber@collins.com>
> To: "Carlos Santos" <casantos@datacom.com.br>
> Cc: "buildroot" <buildroot@buildroot.org>, "ratbert90" <aduskett@gmail.com>, "DATACOM" <rodrigo.rebello@datacom.com.br>
> Sent: Ter?a-feira, 18 de dezembro de 2018 11:49:11
> Subject: Re: [Buildroot] [PATCH 2/2] package/busybox: add init script for sysctl

> Carlos,
> 
> 
> 
> On Mon, Dec 17, 2018 at 11:03 PM Carlos Santos <casantos@datacom.com.br> wrote:
>>
>> Add a simple init script that invokes sysctl early in the initialization
>> process to configure kernel parameters. This is already performed by
>> systemd (systemd-sysctl) but there is no sysvinit/busybox counterpart.
>>
>> Files are read from directories in the following list in the given order
>> from top to bottom:
>>
>>     /run/sysctl.d/*.conf
>>     /etc/sysctl.d/*.conf
>>     /usr/local/lib/sysctl.d/*.conf
>>     /usr/lib/sysctl.d/*.conf
>>     /lib/sysctl.d/*.conf
>>     /etc/sysctl.conf
>>
>> A file may be used more than once, since there can be multiple symlinks
>> to it. No attempt is made to prevent this.
>>
>> Busybox's sysctl does not support "--quiet --system" arguments like the
>> sysctl provided by procps-ng, so we resort to some scripting to mimic
>> its behavior.
>>
>> Signed-off-by: Carlos Santos <casantos@datacom.com.br>
> 
> Thanks for sending this one in.  We usually have some version of a
> script that does similar in each product rootfs overlay.

Same case here.

> I've reviewed the general function of the script is correct, I did not
> verify the SYSCTL_SOURCES are all the right plans to include.  We
> primarily just use the /etc/sysctl.conf default config and
> /etc/sysctl.d/.
> 
> Reviewed-by: Matthew Weber <matthew.weber@rockwellcollins.com>
> 
>> ---
>>  package/busybox/S01sysctl  | 63 ++++++++++++++++++++++++++++++++++++++
>>  package/busybox/busybox.mk | 12 ++++++++
>>  2 files changed, 75 insertions(+)
>>  create mode 100644 package/busybox/S01sysctl
>>
>> diff --git a/package/busybox/S01sysctl b/package/busybox/S01sysctl
>> new file mode 100644
>> index 0000000000..35e0cef291
>> --- /dev/null
>> +++ b/package/busybox/S01sysctl
>> @@ -0,0 +1,63 @@
>> +#!/bin/sh
>> +
>> +PROGRAM="sysctl"
>> +
>> +SYSCTL_ARGS=""
>> +
>> +# shellcheck source=/dev/null
>> +[ -r "/etc/default/$PROGRAM" ] && . "/etc/default/$PROGRAM"
>> +
>> +# Files are read from directories in the SYSCTL_SOURCES list, in given order.
>> +SYSCTL_SOURCES="/etc/sysctl.d/ /usr/local/lib/sysctl.d/ /usr/lib/sysctl.d/
>> /lib/sysctl.d/ /etc/sysctl.conf"
>> +
>> +# A file may be used more than once, since there can be multiple symlinks to
>> +# it. No attempt is made to prevent this.
>> +#
>> +# Busybox's sysctl does not support "--quiet --system" arguments like the
>> +# sysctl provided by procps-ng, so we resort to some scripting to mimic its
>> +# behavior.
>> +#
>> +# The "return 1" below is fruitless, at the moment, since sysctl ends with
>> +# status zero even if errors happen. Hopefully this will be fixed in a future
>> +# version of Busybox.
>> +apply_configs() {
>> +       # shellcheck disable=SC2086 # we need the word splitting
>> +       find $SYSCTL_SOURCES -maxdepth 1 -name '*.conf' -print0 2> /dev/null | \
> 
> Why restrict to .conf?

That's what procps-ng's sysctl does and I wanted to mimic it as
faithfully as possible. It also prevents attempting to use some README
file.

[...]

-- 
Carlos Santos (Casantos) - DATACOM, P&D

^ permalink raw reply	[flat|nested] 10+ messages in thread

* [Buildroot] [PATCH 1/2] package/procps-ng: add init script for sysctl
  2018-12-18  5:02 ` [Buildroot] [PATCH 1/2] package/procps-ng: add init script for sysctl Carlos Santos
@ 2018-12-18 16:16   ` Arnout Vandecappelle
  2018-12-18 17:41     ` Carlos Santos
  0 siblings, 1 reply; 10+ messages in thread
From: Arnout Vandecappelle @ 2018-12-18 16:16 UTC (permalink / raw)
  To: buildroot

 Hi Carlos,

 Since you're the init script master :-) let's do some bikeshedding!

On 18/12/2018 06:02, Carlos Santos wrote:
> Add a simple init script that invokes sysctl early in the initialization
> process to configure kernel parameters. This is already performed by
> systemd (systemd-sysctl) but there is no sysvinit/busybox counterpart.
> 
> Files are read from directories in the following list in the given order
> from top to bottom:
> 
>     /run/sysctl.d/*.conf
>     /etc/sysctl.d/*.conf
>     /usr/local/lib/sysctl.d/*.conf
>     /usr/lib/sysctl.d/*.conf
>     /lib/sysctl.d/*.conf
>     /etc/sysctl.conf
> 
> Signed-off-by: Carlos Santos <casantos@datacom.com.br>
> ---
>  package/procps-ng/S01sysctl    | 41 ++++++++++++++++++++++++++++++++++
>  package/procps-ng/procps-ng.mk |  5 +++++
>  2 files changed, 46 insertions(+)
>  create mode 100644 package/procps-ng/S01sysctl
> 
> diff --git a/package/procps-ng/S01sysctl b/package/procps-ng/S01sysctl
> new file mode 100644
> index 0000000000..e93bdb9e17
> --- /dev/null
> +++ b/package/procps-ng/S01sysctl

 Is 01 the most appropriate place? I would tend to think that we want to log any
errors from sysctl, so it should be 02 or 03.

> @@ -0,0 +1,41 @@
> +#!/bin/sh
> +
> +PROGRAM="sysctl"

 In other init scripts you used DAEMON. Of course, in this case, it's not a
daemon, but maybe for consistency it's better to keep the same?

> +
> +SYSCTL_ARGS=""
> +
> +# shellcheck source=/dev/null
> +[ -r "/etc/default/$PROGRAM" ] && . "/etc/default/$PROGRAM"
> +
> +start() {
> +	printf 'Starting %s: ' "$PROGRAM"
> +	# shellcheck disable=SC2086 # we need the word splitting
> +	/sbin/sysctl --quiet --system $SYSCTL_ARGS

 I'm not so sure about the --quiet here. Even more, I would redirect the output
into logger.

> +	status=$?
> +	if [ "$status" -eq 0 ]; then
> +		echo "OK"
> +	else
> +		echo "FAIL"
> +	fi
> +	return "$status"
> +}
> +
> +stop() {
> +	printf 'Stopping %s: OK\n' "$PROGRAM"

 Since nothing is actually done, I think it's better to not print anything.

> +}
> +
> +restart() {
> +	stop
> +	sleep 1

 And here I'd also skip the stop and more importantly the sleep.

> +	start
> +}
> +
> +case "$1" in
> +        start|stop)

 You put spaces here.

> +		"$1";;
> +	restart|reload)
> +		restart;;

 So here, I'd directly go for 'start' instead of restart. So maybe

case "$1" in
	start|restart|reload)
		start;;
	stop)
		:;;

 I'm not sure, what do you think? Is it better to keep the pattern for the case
statement always the same (except for the restart|reload part)?

 If the pattern should stay the same, in the other scripts you actually put:

        start|stop|restart)
                "$1";;
        reload)
                # Restart, since there is no true "reload" feature.
                restart;;


 Regards,
 Arnout

> +        *)
> +                echo "Usage: $0 {start|stop|restart|reload}"
> +                exit 1
> +esac
> diff --git a/package/procps-ng/procps-ng.mk b/package/procps-ng/procps-ng.mk
> index 03b74784d2..e40aeb5a2a 100644
> --- a/package/procps-ng/procps-ng.mk
> +++ b/package/procps-ng/procps-ng.mk
> @@ -44,4 +44,9 @@ ifeq ($(BR2_STATIC_LIBS),y)
>  PROCPS_NG_CONF_OPTS += --disable-numa
>  endif
>  
> +define PROCPS_NG_INSTALL_INIT_SYSV
> +	$(INSTALL) -D -m 755 package/procps-ng/S01sysctl \
> +		$(TARGET_DIR)/etc/init.d/S01sysctl
> +endef
> +
>  $(eval $(autotools-package))
> 

^ permalink raw reply	[flat|nested] 10+ messages in thread

* [Buildroot] [PATCH 2/2] package/busybox: add init script for sysctl
  2018-12-18  5:02 ` [Buildroot] [PATCH 2/2] package/busybox: " Carlos Santos
  2018-12-18 13:49   ` Matthew Weber
@ 2018-12-18 16:32   ` Nicolas Cavallari
  2018-12-18 17:19     ` Carlos Santos
  1 sibling, 1 reply; 10+ messages in thread
From: Nicolas Cavallari @ 2018-12-18 16:32 UTC (permalink / raw)
  To: buildroot

On 18/12/2018 06:02, Carlos Santos wrote:
> +	find $SYSCTL_SOURCES -maxdepth 1 -name '*.conf' -print0 2> /dev/null | \
> +	xargs -0 -r readlink -f | \
> +	{
> +		read -r file
> +		[ -z "$file" ] || /sbin/sysctl -q -p "$file" $SYSCTL_ARGS || return 1
> +	}

So it will only read the first file it finds ?

^ permalink raw reply	[flat|nested] 10+ messages in thread

* [Buildroot] [PATCH 2/2] package/busybox: add init script for sysctl
  2018-12-18 16:32   ` Nicolas Cavallari
@ 2018-12-18 17:19     ` Carlos Santos
  2018-12-19  9:58       ` Carlos Santos
  0 siblings, 1 reply; 10+ messages in thread
From: Carlos Santos @ 2018-12-18 17:19 UTC (permalink / raw)
  To: buildroot

> From: "Nicolas Cavallari" <Nicolas.Cavallari@green-communications.fr>
> To: "Carlos Santos" <casantos@datacom.com.br>, "buildroot" <buildroot@buildroot.org>
> Cc: "ratbert90" <aduskett@gmail.com>, "DATACOM" <rodrigo.rebello@datacom.com.br>
> Sent: Ter?a-feira, 18 de dezembro de 2018 14:32:18
> Subject: Re: [Buildroot] [PATCH 2/2] package/busybox: add init script for sysctl

> On 18/12/2018 06:02, Carlos Santos wrote:
>> +	find $SYSCTL_SOURCES -maxdepth 1 -name '*.conf' -print0 2> /dev/null | \
>> +	xargs -0 -r readlink -f | \
>> +	{
>> +		read -r file
>> +		[ -z "$file" ] || /sbin/sysctl -q -p "$file" $SYSCTL_ARGS || return 1
>> +	}
> 
> So it will only read the first file it finds ?

The "||" operator means "do the RHS if the LHS is false", so if "$file"
is empty it doesn't run sysctl; otherwise if syscl fails (which currently
never happens due to a bug in Busybox) it returns from the function.

-- 
Carlos Santos (Casantos) - DATACOM, P&D
?Marched towards the enemy, spear upright, armed with the certainty
that only the ignorant can have.? ? Epitaph of a volunteer

^ permalink raw reply	[flat|nested] 10+ messages in thread

* [Buildroot] [PATCH 1/2] package/procps-ng: add init script for sysctl
  2018-12-18 16:16   ` Arnout Vandecappelle
@ 2018-12-18 17:41     ` Carlos Santos
  0 siblings, 0 replies; 10+ messages in thread
From: Carlos Santos @ 2018-12-18 17:41 UTC (permalink / raw)
  To: buildroot

> From: "Arnout Vandecappelle" <arnout@mind.be>
> To: "Carlos Santos" <casantos@datacom.com.br>, "buildroot" <buildroot@buildroot.org>
> Cc: "ratbert90" <aduskett@gmail.com>, "DATACOM" <rodrigo.rebello@datacom.com.br>
> Sent: Ter?a-feira, 18 de dezembro de 2018 14:16:23
> Subject: Re: [Buildroot] [PATCH 1/2] package/procps-ng: add init script for sysctl

> Hi Carlos,
> 
> Since you're the init script master :-) let's do some bikeshedding!
> 
> On 18/12/2018 06:02, Carlos Santos wrote:
>> Add a simple init script that invokes sysctl early in the initialization
>> process to configure kernel parameters. This is already performed by
>> systemd (systemd-sysctl) but there is no sysvinit/busybox counterpart.
>> 
>> Files are read from directories in the following list in the given order
>> from top to bottom:
>> 
>>     /run/sysctl.d/*.conf
>>     /etc/sysctl.d/*.conf
>>     /usr/local/lib/sysctl.d/*.conf
>>     /usr/lib/sysctl.d/*.conf
>>     /lib/sysctl.d/*.conf
>>     /etc/sysctl.conf
>> 
>> Signed-off-by: Carlos Santos <casantos@datacom.com.br>
>> ---
>>  package/procps-ng/S01sysctl    | 41 ++++++++++++++++++++++++++++++++++
>>  package/procps-ng/procps-ng.mk |  5 +++++
>>  2 files changed, 46 insertions(+)
>>  create mode 100644 package/procps-ng/S01sysctl
>> 
>> diff --git a/package/procps-ng/S01sysctl b/package/procps-ng/S01sysctl
>> new file mode 100644
>> index 0000000000..e93bdb9e17
>> --- /dev/null
>> +++ b/package/procps-ng/S01sysctl
> 
> Is 01 the most appropriate place? I would tend to think that we want to log any
> errors from sysctl, so it should be 02 or 03.

Unfortunately sysctl does not use syslog. We could redirect its
std{out|err} to logger but no other init script does this and I
chose to keep it simple in this first version. I can make it a
bit more fancy, however.

>> @@ -0,0 +1,41 @@
>> +#!/bin/sh
>> +
>> +PROGRAM="sysctl"
> 
> In other init scripts you used DAEMON. Of course, in this case, it's not a
> daemon, but maybe for consistency it's better to keep the same?

I chose PROGRAM exactly because it is not a daemon. DAEMONs must be
started with start-stop-daemon and must have PID files.

>> +
>> +SYSCTL_ARGS=""
>> +
>> +# shellcheck source=/dev/null
>> +[ -r "/etc/default/$PROGRAM" ] && . "/etc/default/$PROGRAM"
>> +
>> +start() {
>> +	printf 'Starting %s: ' "$PROGRAM"
>> +	# shellcheck disable=SC2086 # we need the word splitting
>> +	/sbin/sysctl --quiet --system $SYSCTL_ARGS
> 
> I'm not so sure about the --quiet here. Even more, I would redirect the output
> into logger.

See above.

>> +	status=$?
>> +	if [ "$status" -eq 0 ]; then
>> +		echo "OK"
>> +	else
>> +		echo "FAIL"
>> +	fi
>> +	return "$status"
>> +}
>> +
>> +stop() {
>> +	printf 'Stopping %s: OK\n' "$PROGRAM"
> 
> Since nothing is actually done, I think it's better to not print anything.

A silent "stop" may lead the user to believe that something went
wrong. That's debatable, of course. I'm still torn between the two
options but for the moment I'd prefer to keep the message. It also
helps us to implement some automated test in the future.

>> +}
>> +
>> +restart() {
>> +	stop
>> +	sleep 1
> 
> And here I'd also skip the stop and more importantly the sleep.

Yeah, the sleep is useless.

>> +	start
>> +}
>> +
>> +case "$1" in
>> +        start|stop)
> 
> You put spaces here.
> 
>> +		"$1";;
>> +	restart|reload)
>> +		restart;;
> 
> So here, I'd directly go for 'start' instead of restart. So maybe
> 
> case "$1" in
>	start|restart|reload)
>		start;;
>	stop)
>		:;;
> 
> I'm not sure, what do you think? Is it better to keep the pattern for the case
> statement always the same (except for the restart|reload part)?
> 
> If the pattern should stay the same, in the other scripts you actually put:
> 
>        start|stop|restart)
>                "$1";;
>        reload)
>                # Restart, since there is no true "reload" feature.
>                restart;;

In this particular case I'd choose the first option.

> 
> 
> Regards,
> Arnout
> 
>> +        *)
>> +                echo "Usage: $0 {start|stop|restart|reload}"
>> +                exit 1
>> +esac
>> diff --git a/package/procps-ng/procps-ng.mk b/package/procps-ng/procps-ng.mk
>> index 03b74784d2..e40aeb5a2a 100644
>> --- a/package/procps-ng/procps-ng.mk
>> +++ b/package/procps-ng/procps-ng.mk
>> @@ -44,4 +44,9 @@ ifeq ($(BR2_STATIC_LIBS),y)
>>  PROCPS_NG_CONF_OPTS += --disable-numa
>>  endif
>>  
>> +define PROCPS_NG_INSTALL_INIT_SYSV
>> +	$(INSTALL) -D -m 755 package/procps-ng/S01sysctl \
>> +		$(TARGET_DIR)/etc/init.d/S01sysctl
>> +endef
>> +
>>  $(eval $(autotools-package))

-- 
Carlos Santos (Casantos) - DATACOM, P&D

^ permalink raw reply	[flat|nested] 10+ messages in thread

* [Buildroot] [PATCH 2/2] package/busybox: add init script for sysctl
  2018-12-18 17:19     ` Carlos Santos
@ 2018-12-19  9:58       ` Carlos Santos
  0 siblings, 0 replies; 10+ messages in thread
From: Carlos Santos @ 2018-12-19  9:58 UTC (permalink / raw)
  To: buildroot

> From: "Carlos Santos" <casantos@datacom.com.br>
> To: "Nicolas Cavallari" <Nicolas.Cavallari@green-communications.fr>
> Cc: "DATACOM" <rodrigo.rebello@datacom.com.br>, "ratbert90" <aduskett@gmail.com>, "buildroot" <buildroot@buildroot.org>
> Sent: Ter?a-feira, 18 de dezembro de 2018 15:19:49
> Subject: Re: [Buildroot] [PATCH 2/2] package/busybox: add init script for sysctl

>> From: "Nicolas Cavallari" <Nicolas.Cavallari@green-communications.fr>
>> To: "Carlos Santos" <casantos@datacom.com.br>, "buildroot"
>> <buildroot@buildroot.org>
>> Cc: "ratbert90" <aduskett@gmail.com>, "DATACOM" <rodrigo.rebello@datacom.com.br>
>> Sent: Ter?a-feira, 18 de dezembro de 2018 14:32:18
>> Subject: Re: [Buildroot] [PATCH 2/2] package/busybox: add init script for sysctl
> 
>> On 18/12/2018 06:02, Carlos Santos wrote:
>>> +	find $SYSCTL_SOURCES -maxdepth 1 -name '*.conf' -print0 2> /dev/null | \
>>> +	xargs -0 -r readlink -f | \
>>> +	{
>>> +		read -r file
>>> +		[ -z "$file" ] || /sbin/sysctl -q -p "$file" $SYSCTL_ARGS || return 1
>>> +	}
>> 
>> So it will only read the first file it finds ?
> 
> The "||" operator means "do the RHS if the LHS is false", so if "$file"
> is empty it doesn't run sysctl; otherwise if syscl fails (which currently
> never happens due to a bug in Busybox) it returns from the function.

Dooh, you were right. There should be a while there, so it is reading
only the first file name. I will fix this and send a new patch.

Thanks

-- 
Carlos Santos (Casantos) - DATACOM, P&D

^ permalink raw reply	[flat|nested] 10+ messages in thread

end of thread, other threads:[~2018-12-19  9:58 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-12-18  5:02 [Buildroot] [PATCH 0/2] Add a sysctl init script Carlos Santos
2018-12-18  5:02 ` [Buildroot] [PATCH 1/2] package/procps-ng: add init script for sysctl Carlos Santos
2018-12-18 16:16   ` Arnout Vandecappelle
2018-12-18 17:41     ` Carlos Santos
2018-12-18  5:02 ` [Buildroot] [PATCH 2/2] package/busybox: " Carlos Santos
2018-12-18 13:49   ` Matthew Weber
2018-12-18 14:37     ` Carlos Santos
2018-12-18 16:32   ` Nicolas Cavallari
2018-12-18 17:19     ` Carlos Santos
2018-12-19  9:58       ` Carlos Santos

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.