[Lxc-users] How to make a container init DIE after finishing runlevel 0
daniel.lezcano at free.fr
Mon Jan 25 23:55:39 UTC 2010
Michael H. Warfield wrote:
> On Mon, 2010-01-25 at 23:39 +0100, Daniel Lezcano wrote:
>> Michael H. Warfield wrote:
>>> On Mon, 2010-01-25 at 21:50 +0100, Daniel Lezcano wrote:
>>>>> apologies for the length, but how is everyone else handling this?
>>>>> this is the last thing i need to solve before i actually start running
>>>>> all my services on this setup.
>>>> I was wondering if the kernel shouldn't send a signal to the init's
>>>> parent when sys_reboot is called.
>>> Which still leaves open the question of telling the difference between a
>>> halt and a reboot.
>> Well, with the correct information in siginfo, that should do the trick:
>> si_num = SIGINFO ? SIGHUP ?
>> si_code = SI_KERNEL
>> si_int = the "cmd" passed to the reboot (2) function.
> I concur that sounds like a good option. But that's a kernel mod and
> will require a kernel patch and getting that through the process. Once
> that's agreed on that's the route to go, we've got to get the containers
> guys involved and get that pushed through. And is this going to work
> without any modifications to init itself (per the discussion over on the
> -devel list wrt modifications to init and the difficulty and pain of
> pulling teeth). What's the next step?
Send a patch with this hack even if it is not the right approach, let's
receive some flaming and discuss with containers@/lkml@ about this problem.
As I have, one foot in userspace with lxc and another foot in the
container kernel development, if we reach a consensus, that should not
be a big deal to push upstream a patch, especially if this is a blocker
for the container technology.
The objective is to have a kernel patch making possible to support the
"shutdown / halt / reboot / etc ... " without modifying the init command
and compatible with sysv init and upstart. The patch I propose is to
send a signal to the parent process of the pid namespace, in our case
it's lxc-start. Handling this signal is quite easy as we have just "kill
-9" the init process and, in case of a reboot, return to the starting
code without exiting lxc-start.
More information about the lxc-users