public inbox for gentoo-dev@lists.gentoo.org
 help / color / mirror / Atom feed
From: Duncan <1i5t5.duncan@cox.net>
To: gentoo-dev@lists.gentoo.org
Subject: [gentoo-dev] Switchup-mode and boottime selector? Was: eselect init
Date: Mon, 27 May 2013 10:36:41 +0000 (UTC)	[thread overview]
Message-ID: <pan$2aa45$493ce161$b9651310$2d048d7b@cox.net> (raw)
In-Reply-To: 51A22310.70202@gentoo.org

Ian Stakenvicius posted on Sun, 26 May 2013 10:58:24 -0400 as excerpted:

> On 26/05/13 07:40 AM, Luca Barbato wrote:
>> On 5/26/13 12:57 PM, Michał Górny wrote:
>>> You are telling me that a wrapper, a thing that gets executed *every*
>>> boot needs to do some random magic to know which init system was in
>>> use and which one is supposed to be in use, and then conditionally
>>> move around configuration files necessary for it to run. This is just
>>> *INSANE*.
>> 
>> I like to think it normal and the wrapper doesn't need to run every
>> time but only when a switch had been requested. And only if you prefer
>> doing the switch at boot time instead than at shutdown.
>> 
>> 
> The way it's being proposed (and please correct me if i'm wrong), the
> wrapper is a direct replacement binary (small C program) for all init
> systems, and would based on some configuration file or whatnot determine
> and exec the init system it's supposed to -- and make any other
> necessary changes too, such as switching /etc/inittab)
> 
> I don't know (outside of a script in the initramfs) how this would
> otherwise be handled to cover all cases.  I am curious though, if you
> see a way to do this otherwise, what the implementation would look like?

Here's an idea I've not seen proposed yet.

Make the wrapper function something like a cross between a simple 
bootloader and traditional single-user-mode.

Normal mode, like the bootloader for many users, would be a default 
choice with (configurable) either a timeout of a couple seconds, or (say 
shift) key-held-down detection, thus no boot delay as if the key isn't 
down at the moment of detection, boot proceeds using the existing config.

In the event of an init switchup, the user either sets an option before 
shutdown (much like the run-once defaults of grub, etc, set pre-
shutdown), or selects switchup mode with the appropriate boot-time 
trigger (using the above mentioned timeout or key-down sensing).

The special switchup mode would then operate much like single-user in 
terms of available functionality and the fact that it's a special mode 
used for system maintenance, but would (normally, with a drop-to-shell 
option as well) be rather more guided, presumably using a menu, again 
much like a bootloader, except that it's PID-1 instead of pre-kernel.

Critical point #1 is that much like single-user mode, switchup mode would 
NOT run normally, but would be specifically selected, with either a 
reboot or simply starting the new init system at switchup mode exit.

That gives switchup mode a lot more flexibility in terms of what's 
allowed, since it's no longer in the time-critical every-boot path, and 
because it's its own mode, it can mount / rw to make changes as 
necessary, with either a reboot to start the selected init-system or 
simply starting it normally, at switchup mode exit.  And if anything goes 
wrong, simply select switchup mode at the next boot once again, and 
either revert to previous, for fix it.

Critical point #2 is that the actual normal-mode wrapper would be very 
small both in terms of boot-time and code, thus both easy to debug, and 
not increasing boot time by much at all, particularly in key-down-
detection mode where there'd be no timeout delay to tick down.  A small 
binary that simply either runs the timout or detects key-down, before 
execing the normal init, is all that would run in a normal bootup.  The 
complex functionality would only be invoked if switchup mode is chosen, 
as entirely separate functionality execed place of the normal init it 
would have otherwise execed.

Meanwhile, switchup mode (again, a separate binary execed only if chosen 
from the tiny one designed to run inline at each boot) would have a menu 
with options to invoke scripts for each of the init-system choices 
offered, and a further fall-back to shell option.

Each init-system package would then depend (perhaps conditionally based 
on an init-switcher USE flag) on the init-switcher package, and would 
ship one gentoo specific file, the switcher script, thus putting each 
switcher script under the control of the gentoo maintainers for that init-
system package, who could set it up to be as simple or as complex as 
necessary for their init system.  Those who needed a rw root to switch 
out various files could arrange for their switcher script to handle that, 
while those who could do without, possibly handling things later with 
their own native init-service, could do without the rw root bit.  
Similarly, switchup mode exit-time behavior, presumably either simply 
triggering a reboot, or starting the selected init-system directly, would 
be entirely under the control of the individual init-system package 
maintainers, via the switch-script they maintain.

As a first bonus, even people who aren't interested in more than one init-
system might find setting the init-switcher USE flag useful, especially 
on EFI systems, since it would give them the advantages of switchup mode, 
namely a drop to shell option as yet another alternative to single user 
mode, AND perhaps even MORE importantly, access to a more or less 
automated init-system restore option, triggered via selection of the same 
switcher script that would otherwise be run to switch between init-
systems.  Again, the contents of that init-system-specific switcher-
script would be entirely under the control of the gentoo maintainers for 
that package, so they could do whatever fancy working-condition checks 
and restores from backup that they wanted.

As a second bonus, switchup mode would be extremely flexible and 
extensible via these scripts, and I'd envision people writing extension 
scripts for all sorts of additional functionality.  Backups while the 
system is quiesced?  Hook for boot-chart and similar modes?  A fast-boot 
special media-player mode?  Something else exotic in mind?  No problem!  
Hack up a special purpose switchup-mode script for it, and "the world's 
your oyster!"
 
-- 
Duncan - List replies preferred.   No HTML msgs.
"Every nonfree program has a lord, a master --
and if you use the program, he is your master."  Richard Stallman



  reply	other threads:[~2013-05-27 10:37 UTC|newest]

Thread overview: 139+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-05-25  9:54 [gentoo-dev] eselect init Luca Barbato
2013-05-25 10:25 ` Peter Stuge
2013-05-25 11:57   ` Tom Wijsman
2013-05-26  1:52     ` Walter Dnes
2013-05-26  8:50       ` Tom Wijsman
2013-05-26  2:02     ` Peter Stuge
2013-05-26  8:56       ` Tom Wijsman
2013-05-25 19:08   ` Matthew Thode
2013-05-26 14:13     ` Ian Stakenvicius
2013-05-26 23:54       ` Luca Barbato
2013-05-25 11:13 ` Pacho Ramos
2013-05-25 12:03   ` Tom Wijsman
2013-05-25 12:25     ` Pacho Ramos
2013-05-25 15:42   ` Luca Barbato
2013-05-25 11:29 ` Sergei Trofimovich
2013-05-25 12:12   ` Tom Wijsman
2013-05-25 13:15   ` Luca Barbato
2013-05-25 17:35     ` Sergei Trofimovich
2013-05-25 19:49   ` Chí-Thanh Christopher Nguyễn
2013-05-25 12:13 ` hasufell
2013-05-25 15:51   ` Luca Barbato
2013-05-25 13:38 ` Tom Wijsman
2013-05-25 19:09   ` J. Roeleveld
2013-05-25 19:55     ` Tom Wijsman
2013-05-25 20:07       ` Alex Xu
2013-05-25 20:59         ` Tom Wijsman
2013-05-26 12:59       ` J. Roeleveld
2013-05-26 13:58         ` Tom Wijsman
2013-05-26 14:54         ` Ian Stakenvicius
2013-05-26 13:15       ` Michał Górny
2013-05-26 14:07         ` Tom Wijsman
2013-05-26 14:44           ` Rich Freeman
2013-05-26  6:43 ` Michał Górny
2013-05-26  8:58   ` Robert David
2013-05-26  9:20     ` Michał Górny
2013-05-26  9:32       ` Robert David
2013-05-26  9:45       ` Tom Wijsman
2013-05-26 10:09         ` Michał Górny
2013-05-26 11:45           ` Tom Wijsman
2013-05-26 12:01             ` Michał Górny
2013-05-26  9:21     ` Tom Wijsman
2013-05-26 10:01       ` Robert David
2013-05-26 10:11         ` Rich Freeman
2013-05-26 10:18           ` Chí-Thanh Christopher Nguyễn
2013-05-26 11:28           ` hasufell
2013-05-26 12:10         ` Tom Wijsman
2013-05-26  9:55   ` Luca Barbato
2013-05-26 10:39     ` Tom Wijsman
2013-05-26 10:57     ` Michał Górny
2013-05-26 11:40       ` Luca Barbato
2013-05-26 12:08         ` Michał Górny
2013-05-26 12:24           ` Luca Barbato
2013-05-26 14:58         ` Ian Stakenvicius
2013-05-27 10:36           ` Duncan [this message]
2013-05-27 20:26             ` [gentoo-dev] Switchup-mode and boottime selector? Was: " Alex Xu
2013-05-27 22:40             ` Walter Dnes
2013-05-28  9:56               ` [gentoo-dev] " Duncan
2013-05-28 11:56                 ` Tom Wijsman
2013-05-29  0:36                   ` Duncan
2013-05-29  8:52                     ` Tom Wijsman
2013-05-29 18:15                       ` Walter Dnes
2013-05-29 19:56                         ` Tom Wijsman
2013-05-29 20:55                           ` William Hubbs
2013-05-30  0:06                             ` Tom Wijsman
2013-05-30  0:22                               ` William Hubbs
2013-05-30  1:36                                 ` Duncan
2013-05-30  6:35                                 ` Tom Wijsman
2013-05-30 20:41                                   ` William Hubbs
2013-05-30  6:46                                 ` Ciaran McCreesh
2013-05-30 13:54                                   ` Ian Stakenvicius
2013-05-31  6:21                                     ` Ciaran McCreesh
2013-05-30  6:30                             ` Luca Barbato
2013-06-22 19:35                             ` Markos Chandras
2013-05-30  2:52                           ` Walter Dnes
2013-05-30  6:19                             ` Tom Wijsman
2013-05-30  6:36                               ` Dale
2013-05-30  6:31                             ` Ciaran McCreesh
2013-05-28  3:55           ` [gentoo-dev] " Luca Barbato
2013-05-28  4:19             ` Michał Górny
2013-05-28  4:43               ` Luca Barbato
2013-05-28 12:15                 ` Ian Stakenvicius
2013-05-28 12:15                 ` Ian Stakenvicius
2013-05-26 11:58       ` Tom Wijsman
2013-05-26 14:52         ` Luca Barbato
2013-05-26 15:39           ` Tom Wijsman
2013-05-26 16:41     ` William Hubbs
2013-05-26 16:48       ` William Hubbs
2013-05-26 16:55         ` Michał Górny
2013-05-26 22:58           ` William Hubbs
2013-05-26 23:47             ` Luca Barbato
2013-05-27 23:45               ` [gentoo-dev] Separate boot/root already [WAS: eselect init] Walter Dnes
2013-05-28 15:07                 ` Luca Barbato
2013-06-01  9:23 ` [gentoo-dev] Re: eselect init Steven J. Long
2013-06-01 11:43   ` Steven J. Long
2013-06-02  9:15   ` Luca Barbato
2013-06-02 18:20     ` [gentoo-dev] " Steven J. Long
2013-06-02 18:48       ` Fabio Erculiani
2013-06-08 13:37         ` [gentoo-dev] " Steven J. Long
2013-06-02 22:35       ` [gentoo-dev] " Luca Barbato
2013-06-03  0:37         ` Walter Dnes
2013-06-03  0:57           ` Rich Freeman
2013-06-03  7:03           ` Tom Wijsman
2013-06-03  9:42           ` Luca Barbato
2013-06-03  6:19         ` [gentoo-dev] " Duncan
2013-06-03  6:26         ` [gentoo-dev] " Pacho Ramos
2013-06-04 18:55         ` William Hubbs
2013-06-04 19:09           ` Rich Freeman
2013-06-08 13:28         ` [gentoo-dev] " Steven J. Long
2013-06-20 10:16 ` [gentoo-dev] " Fabio Erculiani
2013-06-20 17:10   ` [gentoo-dev] " Steven J. Long
2013-06-20 20:48     ` William Hubbs
2013-06-25  4:53       ` [gentoo-dev] " Steven J. Long
2013-06-20 20:56   ` [gentoo-dev] " William Hubbs
2013-06-21  2:39     ` Michał Górny
2013-06-21  4:16       ` William Hubbs
2013-06-21 10:23         ` Michał Górny
2013-06-21 15:16           ` William Hubbs
2013-06-21 15:23             ` Fabio Erculiani
2013-06-21 16:42               ` William Hubbs
2013-06-22 11:23                 ` Jason A. Donenfeld
2013-06-22 11:57                   ` hasufell
2013-06-21 19:34               ` Luca Barbato
2013-06-22  1:27                 ` Ulrich Mueller
2013-06-22  1:48                   ` Michael Weber
2013-06-21 15:29             ` Michał Górny
2013-06-21 16:13               ` Markos Chandras
2013-06-21 16:50                 ` William Hubbs
2013-06-21 19:36                   ` Luca Barbato
2013-06-21 10:30       ` Michael Weber
2013-06-21 11:19         ` Fabio Erculiani
2013-06-21 11:26           ` Pacho Ramos
2013-06-21 11:50             ` Luca Barbato
2013-06-21 14:36               ` William Hubbs
2013-06-21 15:48                 ` Pacho Ramos
2013-06-22  6:59                   ` [gentoo-dev] " Duncan
2013-06-22 10:07                     ` Pacho Ramos
2013-06-22 11:13                       ` Michael Weber
2013-06-22 11:26                         ` Rich Freeman
2013-06-22 17:05                       ` Luca Barbato

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='pan$2aa45$493ce161$b9651310$2d048d7b@cox.net' \
    --to=1i5t5.duncan@cox.net \
    --cc=gentoo-dev@lists.gentoo.org \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox