From 1dd2bb31754781ad179d3aff7d354cc271c629b9 Mon Sep 17 00:00:00 2001 From: Calvin Date: Sun, 16 Aug 2026 21:43:08 -0400 Subject: termrc: add unsupervised rescue shell on /dev/eia1 eia0 cannot be interrupted -- a plain uart turns DEL into a byte, not a note -- so a command blocked on eia0 can only be killed from an independent shell. Both serial shells are deliberately not services: they are the channel you need when the supervisor is what is broken, so they start above svcinit and do not depend on it. --- svc/termrc.work | 10 ++++++++++ 1 file changed, 10 insertions(+) (limited to 'svc') diff --git a/svc/termrc.work b/svc/termrc.work index 9c12bf0..627c8b4 100755 --- a/svc/termrc.work +++ b/svc/termrc.work @@ -15,6 +15,16 @@ mount -qb /srv/cons /dev # serial shell for host-side control while(){ rc -i /dev/eia0 >[2=1]; sleep 1 }& +# rescue shell on the second uart. eia0 cannot be interrupted: it is a plain +# uart, not the console, so DEL over it is only a byte and the kernel never +# turns it into a note. A command blocked on eia0 can therefore be killed +# only from an independent shell, which is this one. +# +# Both of these are deliberately NOT services. They are the channel you need +# when the supervisor is the thing that is broken, so they must not depend on +# it -- note they start here, above svcinit. +while(){ rc -i /dev/eia1 >[2=1]; sleep 1 }& + # mount points (if not done by bootrc already) >[2]/dev/null { mntgen -s slashn /n && chmod 666 /srv/slashn -- cgit v1.2.3