summaryrefslogtreecommitdiff
path: root/svc/termrc.work
diff options
context:
space:
mode:
Diffstat (limited to 'svc/termrc.work')
-rwxr-xr-xsvc/termrc.work10
1 files changed, 10 insertions, 0 deletions
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 >/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 >/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