thanx ingo, correct - it did not occur to me to mount /usr since my single-user skills are minimal, at best... "halt" should have been my correct response (rather than power-button 4-sec) and i will need to go spend a bit more time to be able to try your untested-patch... (ie - i need to do the compile)
i WILL test it in a day or two and report back... thank you for the help and explanations... apologies for being unclear at-the-start... sincerely, harold felton. On Sat, Jul 6, 2019 at 2:44 PM Ingo Schwarze <schwa...@usta.de> wrote: > Hi Harold, > > harold felton wrote on Fri, Jul 05, 2019 at 11:16:01PM +0000: > > On Fri, Jul 05, 2019 at 10:39:55PM +0000, harold felton wrote: > > >> boot -s > > Did you mount(8) /usr between the above and the below? > > >> # shutdown now > > > shutdown: unveil: No such file or directory > > If the answer to the above question is "no", then i suspect from > code inspection that the following patch may help (untested). > > The point of the patch is tolerating unveil(2) failure if /usr/bin/ > does not exist. Later, trying to execle(3) _PATH_WALL will of > course fail, too, but that's harmless because it merely results in > the child dying with a syslog message. > > All that said, in single user mode, it may be more reliable to > use halt(8) directly rather than trying to fire up a bloated > monster application suite like shutdown(8). > > > ps - i would rather reinstall than try to debug > > If the patch below helps, reinstalling is most likely not needed. > > Does it help? > Ingo > > P.S. > If some crazy person deletes /etc or /sbin or runs shutdown(8) > from a directory that was deleted after changing into it, > similar failures look likely - but while that might want fixing, > too, and while printing the unveil argument in case of failure > might also make sense, the case of _PATH_WALL is probably the > most important one because not having /usr mounted wouldn't > seem all that unusual. > > > Index: shutdown.c > =================================================================== > RCS file: /cvs/src/sbin/shutdown/shutdown.c,v > retrieving revision 1.52 > diff -u -p -r1.52 shutdown.c > --- shutdown.c 3 Aug 2018 17:09:22 -0000 1.52 > +++ shutdown.c 6 Jul 2019 14:32:10 -0000 > @@ -169,7 +169,7 @@ main(int argc, char *argv[]) > err(1, "unveil"); > if (unveil(_PATH_RC, "r") == -1) > err(1, "unveil"); > - if (unveil(_PATH_WALL, "x") == -1) > + if (unveil(_PATH_WALL, "x") == -1 && errno != ENOENT) > err(1, "unveil"); > if (unveil(_PATH_FASTBOOT, "wc") == -1) > err(1, "unveil"); > -- harold at hfelton.com