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:
parent
525e031d22
commit
8933cce619
Notes:
svn2git
2020-12-08 03:00:23 +00:00
svn path=/head/; revision=47619
1 changed files with 121 additions and 0 deletions
|
@ -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
|
||||
"subreaper", 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; 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 "emergency" (where even no shell dotfiles are
|
||||
loaded) and "rescue" 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>
|
||||
|
|
Loading…
Reference in a new issue