New reboot flag: -c for 'power cycle'
Warner Losh
imp at bsdimp.com
Sat Oct 28 15:30:08 UTC 2017
On Sat, Oct 28, 2017 at 8:51 AM, Jonathan de Boyne Pollard via freebsd-arch
<freebsd-arch at freebsd.org> wrote:
>
> Warner Losh:
>
> > Since init has no controlling terminal, SIGWINCH is useless to it anyway.
>
> This is untrue for two reasons. First, for some years now the nosh
> toolset's system manager has been recognizing SIGWINCH on FreeBSD/TrueOS
> for Linux compatibility; as on Linux it is sent to process #1 in response
> to a kernel virtual terminal attention key sequence. Second, that argument
> is fallacious because it would also apply to controlling-terminal-generated
> signals such as SIGINT and clearly does not given that SIGINT is useful to
> process #1.
>
It's useless for its intended purpose, which is why it can be appropriated.
I was completely unaware of SIGWINCH being used like this on Linux. It
didn't pop up in the quick research I did before implementing this.
But it would have been nice to know this sooner, but I'm OK with later
since it isn't much later..
> So what I am doing in the nosh toolset for the forthcoming version 1.36 is
> this:
>
Might want to hold off on this a smidge... See below...
> * The compatibility shutdown command now sports a new -c/--powercycle
> option.
>
> * The compatibility reboot, halt, and poweroff commands now sport a new
> -c/--powercycle option, for the benefits of cruel system administrators.
>
> * There is a new compatibility fastpowercycle/powercycle command, with all
> of the same options for cruel system administrators.
>
Hmmm, I like this. I'll have to add it to FreeBSD. I should have thought of
it in the first place.
> * system-manager now treats SIGWINCH differently on non-Linux operating
> systems, treading it as a request to invoke a new powercycle service.
>
> SIGRTMIN+6, unused in the systemd system, is the Linux equivalent.
>
> * system-manager now treats SIGRTMIN+16 as the underlying actual
> powercycle request, which it translates to either RB_POWERCYCLE if it is
> present in the C library headers, or RB_AUTOBOOT if it is not.
>
> * There is now a new system-control powercycle subcommand, which defaults
> to sending SIGWINCH/SIGRTMIN+6 or SIGRTMIN+16.
>
It looks like all the SIGRT* signals are user defined, and can be used for
any purpose by the application. It could easily be SIGRTMIN+6 as it is
SIGWINCH and we could ditch SIGWINCH on FreeBSD in init as well (since it's
only been in -current for a few days). Would that suffice to address the
compatibility concerns? There's no reason to be gratuitously different here.
> * The system-control init subcommand now sports a new c/C argument, by
> analogy to h/H.
>
> This is of course thus reflected automatically in the compatibility
> telinit command and the initctl-read server.
>
Warner
More information about the freebsd-hackers
mailing list