Date: Sun, 18 Mar 2012 23:16:21 +0000 From: Chris Rees <utisoft@gmail.com> To: Ian Lepore <freebsd@damnhippie.dyndns.org> Cc: svn-src-head@freebsd.org, svn-src-all@freebsd.org, Ed Schouten <ed@freebsd.org> Subject: Re: svn commit: r232977 - in head: etc sbin/init Message-ID: <CADLo838KgHUydM7LFma54S0FSKywzQcXyGXk_kG6XVGQ5n%2B0Pg@mail.gmail.com> In-Reply-To: <1331852174.8403.12.camel@revolution.hippie.lan> References: <201203141622.q2EGM9HR021407@svn.freebsd.org> <1331852174.8403.12.camel@revolution.hippie.lan>
next in thread | previous in thread | raw e-mail | index | archive | help
On 15 Mar 2012 22:57, "Ian Lepore" <freebsd@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
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CADLo838KgHUydM7LFma54S0FSKywzQcXyGXk_kG6XVGQ5n%2B0Pg>