svn commit: r232977 - in head: etc sbin/init
Chris Rees
utisoft at gmail.com
Sun Mar 18 23:16:23 UTC 2012
On 15 Mar 2012 22:57, "Ian Lepore" <freebsd at damnhippie.dyndns.org> wrote:
>
> On Wed, 2012-03-14 at 16:22 +0000, Ed Schouten wrote:
> > Author: ed
> > Date: Wed Mar 14 16:22:09 2012
> > New Revision: 232977
> > URL: http://svn.freebsd.org/changeset/base/232977
> >
> > Log:
> > Make init(8) slightly more robust when /dev/console is missing.
> >
> > If the environment doesn't offer a working /dev/console, the existing
> > version of init(8) will simply refuse running rc(8) scripts. This
means
> > you'll only have a system running init(8) and nothing else.
> >
> > Change the code to do the following:
> >
> > - Open /dev/console like we used to do, but make it more robust to use
> > O_NONBLOCK to prevent blocking on a carrier.
> > - If this fails, use /dev/null as stdin and /var/log/init.log as
stdout
> > and stderr.
>
> Given that the /var filesystem is mounted (and with readonly root,
> actually created) by an rc script run by init, does this make sense?
> Maybe it makes sense only within a jail, but not when running as pid 1?
>
> > - If even this fails, use /dev/null as stdin, stdout and stderr.
> >
> > So why us this useful? Well, if you remove the `getpid() == 1' check
in
> > main(), you can now use init(8) inside jails to properly execute
rc(8).
> > It still requires some polishing, as existing tools assume init(8) has
> > PID 1.
>
> Not just existing tools, but 3rd party software is likely to contain
> this assumption (I know some of ours does). The manpage for init
> contains examples of using a hard-coded 1. Would it be practical for
> any reference to pid 1 to get somehow magically redirected inside a jail
> to the pid of an init process running within that jail? That's just a
> pure blue-sky idea that popped into my head; I know almost nothing about
> jails (their implementation or how to use them).
>
Not really. Processes are given a 'jailed' property, but apart from that
are just regular processes. Also, faking PIDs like that will also hide the
host (real) init.... though whether that is a problem or not is an exercise
for the reader.
Chris
More information about the svn-src-head
mailing list