bootstrap file/directory population:
mtree
would be ideal for this, and the /etc/mtree/
convention already exists, were it not for the fact that Linux ports of mtree
lack modern BSD features.
FreeBSD/TrueOS rc.d
conversion:
In nosh version 1.9 I announced my on-going effort to provide workalikes or replacements for the 157 things that one can find in /etc/rc.d/
on FreeBSD.
Some TrueOS items from /usr/local/etc/rc.d/
have since been added to that conversion plan.
Enough have already been done that it has been possible for quite some time to run an entirely nosh-managed FreeBSD or TrueOS system, and indeed I have been.
Remaining on the to-do list are:
Doubted FreeBSD items: adjkerntz (adjusts the timezone far too late at startup, long after the system has modified many timestamps), bluetooth (superseded by NetBSD work and possibly redundant with the bluetooth service bundles already made for Debian Linux), growfs (needs a helper script written, but doesn't actually work on all-ZFS PC-BSD 10 anyway), jail (now twice superseded on TrueOS with newer jail configuration subsystems),
Partly addressed FreeBSD items with more work to complete: routing, netif
Partly addressed TrueOS items with more work to complete: hald, pcbsdinit
Unaddressed FreeBSD items: devfs
Unaddressed TrueOS items: (These are possibly redundant with already provided service bundles for such services done for Debian Linux:) pc-activedirectory, pc-directory, pc-kerberos, pc-kinit, pc-ldap, pc-nssldap, pc-pam, pc-samba
more nosh Guide chapters:
We could do with a chapter giving information to packagers, explaining the .p files system; and a chapter giving information to BSD ports maintainers, explaining how to build on top of convert-systemd-units
in a port.
Improve terminal-emulator
speed:
It could be made faster by memory mapping the display buffer file.
Thomas Caravia, of Archnosh fame, is looking at replacing generic daemontools-encore support in Ansible with native nosh service management support in Ansible. Xe is also looking at SaltStack.
Additions to BSD Ports collections:
It would be good for those ports that have systemd service units to have the build process convert them to service bundles using the convert-systemd-units
command.
Better TrueOS GUI login:
As explained on StackExchange using the nosh toolset we can make significant improvements in the TrueOS GUI login subsystem, replacing the pcdm-session
program entirely, for starters.
/usr/lib
to /lib
:
Please get the BSDs to put clang's C++ runtime library, libc++
, in the right place.
Currently it lives in /usr/lib
, which isn't guaranteed available at system initialization time.
To make lives a lot easier, it should live in /lib
, where the C runtime library already does.
Then the binaries that are statically linked no longer have to be.
copy and paste mechanisms in the userspace virtual terminals: Currently, there's no support for such.
console-fb-realizer divided up: The devil is in the details, and there are some good reasons to keep console-fb-realizer monolithic; but it would also be good to be able to split off (say) input device handlers so that they can be run as services in their own rights.
Please feel free to write further service bundles. The idea is to have as complete a service bundle set as we can. If you can provide and run a repository for service bundles for the world to use and to add to, I encourage you to do so. If you can persuade software vendors to ship service bundles in their packages, I encourage that too.
input methods in the userspace virtual terminals: I don't want to have to roll my own input method protocol; I would rather implement an existing protocol for existing input method tools. But I don't want to require X11 libraries and toolsets, and direct device drawing access, for user-space virtual terminals, either; and the protocols that I have found all do.
Allow both "emergency" and "rescue" mode bootstraps on FreeBSD:
Add kernel support for passing a -b
option to PID 1, and support for a boot_bare
variable in the loader.
Then -s
can revert back to its previous meaning of "rescue" mode.
Progress display for fsck
on FreeBSD:
Add support to FreeBSD's fsck
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
does provide machine-readable output.
Tie in configuration import triggers: Identify when the configuration import system needs to be triggered, such as when bsdconfig alters configuration files, and create the necessary hooks to import external configuration changes into nosh.
To put the future into perspective, some of the things that are already done that were once in the future:
linux
/wsvt25
terminal emulator
with a whole load of extra DEC VT 52x features
BSD binary packages to feature match the Debian ones: This is now done, as of version 1.16.
Debian binary packages to run the system-manager
as process #1:
One can do this with version 1.18.
FreeBSD/TrueOS binary packages to run the system-manager
as process #1:
One can do this with version 1.20.
finish the rcctl
shim:
This now has, as of version 1.17, full get
and set
subcommands.
more Debian sysinit service bundles: As of version 1.18, one can now bootstrap Debian Linux as a purely nosh-managed system.
better rc.conf
/fstab
/ttys
conversion:
As of version 1.17, there is now a /etc/system-control/convert/
directory that contains a bunch of redo
scripts that will import settings from external configuration files into service bundles.
It will re-import settings if the files change.
mouse events in Linux userspace virtual terminals: This is now done, as of version 1.21.
mouse events in FreeBSD/TrueOS userspace virtual terminals: As of version 1.23, the fb realizer can handle HID events from USB HID devices.
Warden integration: As of version 1.21, PC-BSD Warden jails and FreeBSD 9 jails are foreign configuration formats that are converted into service bundles.
FreeBSD/TrueOS rc.d
conversion:
FreeBSD items with workalikes or replacements:
accounting, amd, apm, apmd, archdep, auditd, auditdistd, automount, automountd, autounmountd, bgfsck, blacklistd, bootparams, bridge, bsnmpd, bthidd, ccd, chkprintcap, cleanvar, cleartmp, cron, ctld, ddb, defaultroute, devd, dhclient, dmesg, dumpon, ftp-proxy, ftpd, gbde, geli2, geli, gptboot, gssd, hastd, hcsecd, hostapd, hostid, hostid_save, initrandom, ip6addrctl, ipfilter, ipfs, ipfw, ipmon, ipnat, ipsec, ipxrouted, iscsictl, iscsid, kadmind, kdc, keyserv, kfd, kpasswdd, ldconfig, local, local_unbound, lockd, lpd, mdconfig2, mdconfig, mixer, motd, mountd, moused, mroute6d, mrouted, msgs, named, natd, netoptions, netwait, newsyslog, nfscbd, nfsclient, nfsuserd, nisdomain, nscd, nsswitch ntpd, ntpdate, othermta, pf, pflog, pfsync, postrandom, powerd, ppp, pppoed, pwcheck, quota, random, rarpd, rctl, resolv, rfcomm_pppd_server, root, route6d, routed, rpcbind, rpclockd, rpcstatd, rtadvd, rtsold, rwho, savecore, sdpd, securelevel, serial, sppp, sshd, statd, static_arp, static_ndp, stf, sysctl, syslogd, timed, tmp, ubthidhci, ugidfw, utx, var, virecover, watchdogd, wpa_supplicant, ypbind, ypldap, yppasswdd, ypserv, ypset, ypupdated, ypxfrd, zfs, zvol,
TrueOS items with workalikes or replacements:
anacron, appcafe, ataidle, avahi-daemon, avahi-dnsconfd, bsdstats, cupsd, cups-browsed, dbus, fail2ban, ffserver, fusefs, gdm, git_daemon, hostname, iocage, ipropd_master, ipropd_slave, kdc, kdm4, netatalk, nfsd, mdnsd, mdnsresponderposix, mysql-server, ossec-hids, pbid, pc-nsswitch, pc-sounddetect, pc-sysconfig, pcdm, pefs, php-fpm, rsyncd, samba a.k.a. samba_server, saned, slpd, smartd, stunnel, svnserve, syscache, tcsd, tor, uhidd, vboxguest, vboxservice, wardenrc, webcamd
The following FreeBSD items have been superseded with different mechanisms that use a service management paradigm, or are things which even the BSD world is saying goodbye to, or are not really rc
scripts that start services at all and don't belong in /etc/rc.d/
as part of its start/stop model in the first place:
abi, addswap, atm1, atm2, atm3 (eliminated in 2008 and its successor system then eliminated in 2011), dmidecode (a misplaced daily cron job), encswap, faith, fsck, inetd, kerberos, kld, kldxref (a misplaced post-reconfiguration update tool), local, localpkg, mountcritlocal, mountcritremote, mountlate, power_profile (a misplaced profile switching tool), sendmail (now gone entirely from OpenBSD and from DragonFly BSD), socat, swaplate, swap, syscons
The following TrueOS items have been superseded, eliminated from TrueOS, or don't belong in the first place:
pc-hwdetect (removed completely from TrueOS in response to my raising TrueOS bug #13563 asking for some doco)