From: Maxime Ripard <maxime.ripard@free-electrons.com>
To: buildroot@busybox.net
Subject: [Buildroot] [PATCH] Rework of shutdown policy in inittab
Date: Wed, 07 Dec 2011 14:08:04 +0100 [thread overview]
Message-ID: <4EDF6534.4090409@free-electrons.com> (raw)
In-Reply-To: <CAAXf6LU1QuFL=pOD09e0dzA1ntsauaFSD2qUr-OPEbmXB74fyw@mail.gmail.com>
On 07/12/2011 07:52, Thomas De Schampheleire wrote:
> Hi,
>
> On Fri, Sep 2, 2011 at 2:25 PM, Maxime Ripard
> <maxime.ripard@free-electrons.com> wrote:
>> This commit follows commit ad501b66. Start up of the busybox logging
>> daemons were moved to an init script but the shutdown were still
>> performed in inittab. This commit moves the shutdown policy to an
>> rcK script that calls the stop function of all the init scripts in
>> a reversed order.
>>
>> Signed-off-by: Maxime Ripard <maxime.ripard@free-electrons.com>
>> ---
>> fs/skeleton/etc/init.d/rcK | 27 +++++++++++++++++++++++++++
>> fs/skeleton/etc/inittab | 3 +--
>> 2 files changed, 28 insertions(+), 2 deletions(-)
>> create mode 100755 fs/skeleton/etc/init.d/rcK
>>
>> diff --git a/fs/skeleton/etc/init.d/rcK b/fs/skeleton/etc/init.d/rcK
>> new file mode 100755
>> index 0000000..59e9c54
>> --- /dev/null
>> +++ b/fs/skeleton/etc/init.d/rcK
>> @@ -0,0 +1,27 @@
>> +#!/bin/sh
>> +
>> +
>> +# Stop all init scripts in /etc/init.d
>> +# executing them in reversed numerical order.
>> +#
>> +for i in $(ls -r /etc/init.d/S??*) ;do
>> +
>> + # Ignore dangling symlinks (if any).
>> + [ ! -f "$i" ] && continue
>> +
>> + case "$i" in
>> + *.sh)
>> + # Source shell script for speed.
>> + (
>> + trap - INT QUIT TSTP
>> + set stop
>> + . $i
>> + )
>> + ;;
>> + *)
>> + # No sh extension, so fork subprocess.
>> + $i stop
>> + ;;
>> + esac
>> +done
>> +
>> diff --git a/fs/skeleton/etc/inittab b/fs/skeleton/etc/inittab
>> index ac410d6..85881f4 100644
>> --- a/fs/skeleton/etc/inittab
>> +++ b/fs/skeleton/etc/inittab
>> @@ -30,8 +30,7 @@ null::sysinit:/bin/hostname -F /etc/hostname
>> ::ctrlaltdel:/sbin/reboot
>>
>> # Stuff to do before rebooting
>> -null::shutdown:/usr/bin/killall klogd
>> -null::shutdown:/usr/bin/killall syslogd
>> +null::shutdown:/etc/init.d/rcK
>> null::shutdown:/bin/umount -a -r
>> null::shutdown:/sbin/swapoff -a
>
> This is a different behavior now. Before only the logging daemons were
> killed, now all init scripts are run.
>
> For this to work properly, all init scripts that users have in
> /etc/init.d should actually have a stop() function. Since this
> behavior was not required previously, I expect several users not to
> have this.
> For such users, a reboot would suddenly trigger several
> initializations that are unexpected.
I have to admit, I didn't think about in-the-wild users in such a case.
> I think there are at least two solutions:
> 1. Keep the new behavior created with this patch, but make sure that
> the release notes clearly state this behavior change and update the
> documentation.
I hardly see how this is a new behaviour, every single init scripts we
have already implements it, and we require it to.
> 2. Adapt the new behavior: currently you are following
> /etc/init.d/Sxxxx files/links, while I think that the default policy
> on many distributions is to use /etc/init.d/Kxxxx for shutdown (and
> Sxxxx only for startup).
The only one doing that I can think of is OpenWRT, it is barely many.
> In this scenario, users who have custom Sxxx
> init scripts will not be impacted. Only if they choose to, can they
> create appropriate Kxxxx links and provide stop functions.
> For scripts present in the buildroot distribution, we can provide
> appropriate S and K links immediately.
You're right.
I'm glad we can finally have that sort of discussion, I was starting to
think every one had a dev/null rule for my patches.
However, this touches the same area than my systemd patches, so I'd
prefer not to touch the same area in every packages in such a small time
frame. So maybe the easier way would be to merge such as mechanism with
the init mechanism introduced with these patches.
Maxime
--
Maxime Ripard, Free Electrons
Kernel, drivers, real-time and embedded Linux
development, consulting, training and support.
http://free-electrons.com
next prev parent reply other threads:[~2011-12-07 13:08 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-09-02 12:25 [Buildroot] [PATCH] Rework of shutdown policy in inittab Maxime Ripard
2011-11-24 8:32 ` Maxime Ripard
2011-12-07 4:31 ` Kelvin Cheung
2011-12-07 6:52 ` Thomas De Schampheleire
2011-12-07 7:26 ` Kelvin Cheung
2011-12-07 9:50 ` Gustavo Zacarias
2011-12-07 13:08 ` Maxime Ripard [this message]
2011-12-08 9:33 ` Thomas De Schampheleire
2011-12-14 16:46 ` Thomas Petazzoni
2011-12-15 8:44 ` Thomas De Schampheleire
2012-01-03 10:22 ` Maxime Ripard
2012-01-03 10:48 ` Thomas De Schampheleire
-- strict thread matches above, loose matches on Subject: below --
2011-12-15 13:21 Sagaert Johan
2011-12-15 15:08 ` Thomas De Schampheleire
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=4EDF6534.4090409@free-electrons.com \
--to=maxime.ripard@free-electrons.com \
--cc=buildroot@busybox.net \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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.