nosh version 1.19

Jonathan de Boyne Pollard J.deBoynePollard-newsgroups at NTLWorld.com
Sat Aug 22 18:04:51 UTC 2015


nosh is now up to version 1.19

* http://homepage.ntlworld.com./jonathan.deboynepollard/Softwares/nosh.html

The important news is that the embarrassment with the post-install setup 
script for the Linux nosh-run-kernel-vt package is fixed.  It was a 
missing 1-line escape() shell function.  I apologize.

Other terminal management news is that there's now a console-clear 
command that does pretty much the same thing as the Bourne Again shell's 
clear_console command (also coming with that name as a symbolic link 
alias) but better.

* The bash clear_console tries to open a lot of device files, as can be 
seen in Ubuntu bug #39068.  This tool by comparison doesn't need 
anything more than its standard output, and doesn't attempt to open any 
terminal devices itself at all.
* The bash tool is specific to the Linux kernel terminal emulator. It 
had to be turned off for Debian kFreeBSD in Debian bug #355336, patched 
to make it stop when run as the superuser in xterm in Debian bug 
#355815, and worked around again in Debian bug #793883.  This tool, 
contrastingly, actually works with xterm and PuTTY and clears their own 
scrollback buffers.  It uses a different mechanism that both they and 
(ironically) the Linux kernel terminal emulator since 2011, all support.
* Debian bug #791342 would be fixed by it, because it doesn't use the 
bodge of attempting to switch virtual terminals away and back (using 
either tty1 or tty2 as the "other" terminal) to clear the scrollback buffer.

On the gripping hand, this is something that one doesn't actually need 
if one is using the nosh-run-user-vt package. console-terminal-emulator 
supports the same extension to ECMA-48 Erase Display as xterm and PuTTY 
do, but the raison d'être for clear_console is the likes of Debian bug 
#331504.  clear_console is in fact a ten-year-old bodge, addressing a 
security/privacy concern that's a lot older still.  With user-space 
virtual terminals, one has the freedom to do things right, without the 
need for such bodges.  (-:  As the console-terminal-emulator manual page 
explains, when a login session terminates and the terminal is hung up, 
the terminal emulator erases the whole display buffer.

In more other news: On Linux, fsck at bootstrap time is now monitored.  
What this means from a user standpoint is that if your system reaches 
its "maximum mounts before a forced full fsck" point, it doesn't just 
sit there with nothing visibly happening (if one cannot see the hard 
disc activity light) for ages.  The fsck@* services now invoke 
"monitored-fsck" rather than fsck directly. This is an ordinary 
chain-loading tool that opens a client connection to a local (i.e. 
AF_LOCAL) socket and then chains to fsck adding in its (Linux-specific) 
-Cfd option.   There's a new monitor-fsck-progress service that runs the 
server for that socket, and displays progress information on the 
console.  This latter is intentionally replaceable by alternative 
services, of course.  I'm intending to make its output somewhat 
prettier, rather than just dumping the raw information at you as it does 
in this release.  But if you want to write your own ...

You'll have to delete /etc/system-control/convert/volumes (or modify the 
contents of /etc/fstab) and run "redo all" to get your existing 
auto-created fsck@* service bundles regenerated with the new command.  
Or just edit the run files replacing fsck with monitored-fsck .

The big news is that as promised in the 1.18 announcement the 
nosh-run-busybox-mdev package is now functional.  Also as promised in 
that announcement, here's more on the subject.

The nosh toolset doesn't come with a bunch of rules for your 
plug-and-play manager, be that (BSD) devd, (Linux) udev, or busybox 
mdev.  Your plug-and-play manager does, or should do.  As packaged up 
for Debian Linux, udev comes with a whole bunch of pre-supplied rules in 
/lib/udev/rules/ that gets one the "usual" device file tree in /dev/ .  
And it almost goes without saying that the BSDs come with devd rules in 
the box.  The same is not true for the busybox Debian package.  There's 
no /etc/mdev.conf supplied.

You MUST write one before using busybox mdev.  busybox mdev's default 
behaviour as packaged, in the absence of /etc/mdev.conf , may be logical 
and straightforward; but it does not result in a working Debian system.  
Some things that I've hit myself are /dev/null not being accessible to 
anyone except the superuser, which affects loads of things all over the 
shop, and event device files not being under /dev/input/ where other 
parts of the system expect them to be.

There's plenty to read on this subject in the non-Debian world, starting 
with but not limited to:

* https://wiki.gentoo.org/wiki/Mdev
* http://linuxfromscratch.org/clfs/view/clfs-3.0/mips/bootscripts/mdev.html

You'll have to adapt these for Debian.  There are also the examples in 
/usr/share/doc/busybox/examples/ , of course, the larger of the two 
fixing both of the aforementioned problems.  The positive news is that 
the busybox-mdev service implicitly serializes invocations of mdev, so 
that there's no need for mucking around with mdev's sequence number 
mechanism.

The recovery mode problem mentioned in the 1.18 announcement turns out 
to have a simple local fix, which I'll incorporate into a more 
comprehensive service fix:

# ln -s rescue /etc/service-bundles/targets/single


More information about the freebsd-hackers mailing list