From owner-svn-src-all@FreeBSD.ORG Thu Mar 15 22:56:18 2012 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 1E4A4106578A for ; Thu, 15 Mar 2012 22:56:18 +0000 (UTC) (envelope-from freebsd@damnhippie.dyndns.org) Received: from qmta12.emeryville.ca.mail.comcast.net (qmta12.emeryville.ca.mail.comcast.net [76.96.27.227]) by mx1.freebsd.org (Postfix) with ESMTP id 0370F8FC12 for ; Thu, 15 Mar 2012 22:56:17 +0000 (UTC) Received: from omta10.emeryville.ca.mail.comcast.net ([76.96.30.28]) by qmta12.emeryville.ca.mail.comcast.net with comcast id lyqM1i0060cQ2SLACywH0S; Thu, 15 Mar 2012 22:56:17 +0000 Received: from damnhippie.dyndns.org ([24.8.232.202]) by omta10.emeryville.ca.mail.comcast.net with comcast id lywG1i00Q4NgCEG8WywGus; Thu, 15 Mar 2012 22:56:17 +0000 Received: from [172.22.42.240] (revolution.hippie.lan [172.22.42.240]) by damnhippie.dyndns.org (8.14.3/8.14.3) with ESMTP id q2FMuExR025035; Thu, 15 Mar 2012 16:56:14 -0600 (MDT) (envelope-from freebsd@damnhippie.dyndns.org) From: Ian Lepore To: Ed Schouten In-Reply-To: <201203141622.q2EGM9HR021407@svn.freebsd.org> References: <201203141622.q2EGM9HR021407@svn.freebsd.org> Content-Type: text/plain; charset="us-ascii" Date: Thu, 15 Mar 2012 16:56:14 -0600 Message-ID: <1331852174.8403.12.camel@revolution.hippie.lan> Mime-Version: 1.0 X-Mailer: Evolution 2.32.1 FreeBSD GNOME Team Port Content-Transfer-Encoding: 7bit Cc: svn-src-head@freebsd.org, svn-src-all@freebsd.org Subject: Re: svn commit: r232977 - in head: etc sbin/init X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 15 Mar 2012 22:56:18 -0000 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). > > Also it is now possible to use use init(8) on `headless' devices that > don't even have a serial boot console. -- Ian