Add nosh project report from Jonathan de Boyne Pollard

With some editing by me for style consistency with the rest of the report.
This commit is contained in:
Benjamin Kaduk 2015-10-18 21:35:18 +00:00
parent 525e031d22
commit 8933cce619
Notes: svn2git 2020-12-08 03:00:23 +00:00
svn path=/head/; revision=47619

View file

@ -2996,4 +2996,125 @@
</help>
</project>
<project cat="proj">
<title>The nosh Project</title>
<contact>
<person>
<name>
<given>Jonathan</given>
<common>de Boyne Pollard</common>
</name>
<email>J.deBoynePollard-newsgroups@NTLWorld.COM</email>
</person>
</contact>
<links>
<url href="http://homepage.ntlworld.com./jonathan.deboynepollard/Softwares/nosh.html">Introduction
and blurb</url>
<url href="http://homepage.ntlworld.com./jonathan.deboynepollard/Softwares/nosh/freebsd-binary-packages.html">&os;
binary packages</url>
<url href="http://homepage.ntlworld.com./jonathan.deboynepollard/Softwares/nosh/timorous-admin-installation-how-to.html">Installation
How-To</url>
<url href="http://homepage.ntlworld.com./jonathan.deboynepollard/Softwares/nosh/roadmap.html">Roadmap</url>
<url href="http://homepage.ntlworld.com./jonathan.deboynepollard/Softwares/nosh/commands.html">Commands</url>
<url href="http://homepage.ntlworld.com./jonathan.deboynepollard/Softwares/nosh/guide/index.html">A
slightly outdated nosh Guide</url>
</links>
<body>
<p>The nosh project is a suite of system-level utilities for
initializing, running, and shutting down BSD systems, and for
managing daemons, terminals, and logging. It supersedes BSD
<tt>init</tt> and the NetBSD <tt>rc.d</tt> system, drawing
inspiration from Solaris SMF for named milestones,
daemontools-encore for service control/status mechanisms, UCSPI,
and IBM AIX for separated service and system management. It
comprises a range of compatibility mechanisms, including shims for
familiar commands from other systems, and an automatic import
mechanism that takes existing configuration data from
<tt>/etc/fstab</tt>, <tt>/etc/rc.conf{,.local}</tt>,
<tt>/etc/ttys</tt>, and elsewhere, applying them to its native
service definitions and creating additional native services. It
is portable (including to Linux) and composable, it provides a
migration path from the world of systemd Linux, it does not
require new kernel APIs. It provides clean service environments,
orderings and dependencies between services, parallelized startup
and shutdown (including fsck), strictly size-capped and
autorotated logging, the service manager as a
&quot;subreaper&quot;, and uses kevent(2) for event-driven
parallelism.</p>
<p>The past few months have seen a growth in the import
mechanism, with full import of <tt>/etc/fstab</tt> and
<tt>/etc/ttys</tt> available in version 1.18 in July, and importing
PC-BSD Warden and &os;&nbsp;9 jails, and full import of <tt>gbde</tt> and
<tt>geli</tt> mount/unmount mechanisms in version 1.21 in October.
It has also gained the ability to automatically re-generate
<tt>host.conf</tt> and <tt>sysctl.conf</tt> whenever their source
files change.</p>
<p>Other developments in the past few months include fully
independent shutdown support, no longer relying upon an externally
provided shutdown command from another toolset, and a full suite of
binary packages. As of version 1.20, it became possible to
have a fully-nosh-managed system, on both &os; and Linux, using just
precompiled binary packages.</p>
<p>The biggest task remaining is one that was set a while ago:
the creation of enough native service bundles and ancillary
utilities to entirely supplant the <tt>rc.d</tt> system. A
lot of this has been achieved, with the original target list of
157 items now down to just 39 remaining. These are the tricky
ones, of course, where help is most needed.
</p>
</body>
<help>
<task>
<p>There are still a few rc scripts left that should be easy
to convert, such as <tt>/etc/rc.d/gptboot</tt> and
<tt>/etc/rc.d/growfs</tt> as oneshot services,
<tt>/etc/rc.d/routing</tt>, and <tt>/etc/rc.d/kldxref</tt>.</p>
</task>
<task>
<p>&os;'s <tt>/etc/rc.d/bluetooth</tt> is over 360 lines long.
In 2011, Iain Hibbert wrote a "simpler" <tt>bluetooth</tt> for
NetBSD. This can perhaps be used as a simpler basis for a nosh
translation.</p>
</task>
<task>
<p>Add kernel support for passing a <tt>-b</tt> option to
pid 1, and support for a boot_bare variable in the loader, to
allow &quot;emergency&quot; (where even no shell dotfiles are
loaded) and &quot;rescue&quot; mode bootstraps, akin to Linux.
(History: The <tt>-b</tt> mechanism and idea date back to
version 2.57d of Miquel van Smoorenburg's System 5 init clone,
dated 1995-12-03, and was already known as "emergency boot" by
1997.)</p>
</task>
<task>
<p>Add support to &os;'s fsck(8) for outputting
machine-readable progress reports to a designated file descriptor,
so that nosh can provide progress bars for multiple fscks running
in parallel. nosh already provides this functionality on Linux,
where fsck(8) does provide machine-readable output.</p>
</task>
<task>
<p>Identify when the configuration import system needs to be
triggered, such as when <tt>bsdconfig</tt> alters configuration
files, and create the necessary hooks to import external
configuration changes into nosh.</p>
</task>
<task>
<p>Investigate how &os;/PC-BSD could be improved by taking
advantage of some available nosh package mechanisms.</p>
</task>
</help>
</project>
</report>