freebsd-nq/sbin/init
Ed Schouten 4c2c7b2c94 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.
- 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.

Also it is now possible to use use init(8) on `headless' devices that
don't even have a serial boot console.
2012-03-14 16:22:09 +00:00
..
init.8 Make init(8) slightly more robust when /dev/console is missing. 2012-03-14 16:22:09 +00:00
init.c Make init(8) slightly more robust when /dev/console is missing. 2012-03-14 16:22:09 +00:00
Makefile Migrate init(8) towards utmpx. 2010-01-13 17:58:49 +00:00
NOTES
pathnames.h Make init(8) slightly more robust when /dev/console is missing. 2012-03-14 16:22:09 +00:00