From b0ae314df40865fd3a58cc80a73259ca2c85b62d Mon Sep 17 00:00:00 2001 From: Daniel Barlow Date: Fri, 24 Nov 2023 22:33:42 +0000 Subject: [PATCH] stuff --- THOUGHTS.txt | 80 ++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 78 insertions(+), 2 deletions(-) diff --git a/THOUGHTS.txt b/THOUGHTS.txt index 036b080b..39545bbe 100644 --- a/THOUGHTS.txt +++ b/THOUGHTS.txt @@ -3068,6 +3068,82 @@ foreground { ${s6-linux-init}/bin/s6-linux-init-hpr -fr - - https://openwrt.org/docs/techref/sysupgrade + +s6-svscanctl -t /run/service + +Sun Nov 19 10:23:17 GMT 2023 + +# cat `type -p reboot` +#!/nix/store/0v3q2lnh7bwg0ldk24lzmsdnmidmdvm6-execline-mips-unknown-linux-musl-2.9.3.0-bin/bin/execlineb -S0 +/nix/store/j41b85ccx0rmf7lm5g13zqb7fs68l8y2-s6-linux-init-mips-unknown-linux-musl-1.1.1.0-bin/bin/s6-linux-init-hpr -r \$@ + + +s6-linux-init-hpr calls hpr_send("", 0) +then +hpr_shutdown(what, &tain_zero, 0)) +which sends "Shpr"[what] to SCANDIRFULL "/" SHUTDOWND_SERVICEDIR "/" SHUTDOWND_FIFO + +which I assume is s6-linux-init-shutdownd.c + +it calls prepare_shutdown on socket read, which sets deadline, grace_time. +later (when?) it calls + + run_stage3(basedir) ; # we can see this by adding a message to rc.shutdown + # this causes s6-rc services to be downed gently + s6-rc -v2 -bDa change + + prepare_stage4(basedir, what) + + creates a file STAGE4_FILE with the contents: + s6-linux-init-umountall + scripts/rc.shutdown.final + s6-linux-init-hpr -f -r + + unsupervise_tree() ; + + goes through /run/service/*/supervise/control fifos + except shutdownd and logger, sending + "d" to each + + then does + s6_svc_write(SCANDIRFULL "/" S6_SVSCAN_CTLDIR "/control", "an", 2) + (this is a rescan not a terminate) + +#define SCANDIRFULL S6_LINUX_INIT_TMPFS "/" S6_LINUX_INIT_SCANDIR + (works out to be /run/service "/" ".s6-svscan") + +ls + kill(-1, SIGTERM) ; + +s6-rc -v2 -bDa change +cd /run/service +for i in s6-linux-init-runleveld s6rc-oneshot-runner s6rc-fdholder eth* getty ; do s6-svc -d /run/service/$i; done + + +s6-rc -v2 -bDa change +cd /run/service +for i in s6-linux-init-runleveld s6rc-oneshot-runner s6rc-fdholder eth* ; do s6-svc -d /run/service/$i; done +s6-svscanctl -an /run/service + +Wed Nov 22 22:01:02 GMT 2023 + +- define a subset of services that run in maintenance mode. +- write a command that copies the closure of this bundle into + /run/maintenance +- create enough non-store filesystem (proc dev etc) to make it run + +Thu Nov 23 00:09:44 GMT 2023 + +I was as surprised as anybody that this seems to work, at least +insofar as it has started a busybox sh process. there is a serious +deficit of symlinks to busybox, so almost no shell scripts work. and I +think we need an rc.init + +It would be worth tidying up the main s6 run-image quite a lot before +we go further with this + +We'd like to be able to reuse the s6 pseudofile structure (/etc/s6-rc +and /etc/s6-linux-init) but we can't make it a derivation because it's +pseudofiles (with funny permissions) not real files. Maybe we can +invoke the module as a function?