On 08.04.21 15:15, Dewayne Geraghty wrote:
First we started with the documented approach of appending to /etc/ttys
""     "/usr/local/bin/s6-svscan /run/scan"    "" on

Which worked nicely under FreeBSD's /sbin/init.

Then we added to loader.conf an init_script which is invoked via
/sbin/init.  This also
worked well, but init remained as pid 1.  The init_script variable is
defined in /boot/loader.conf, in my case as:
init_script="/root/bin/init_script.sh
/sbin/init calls "init_script"

This ran nicely, but still under init as pid=1.

Finally I sucked up the courage and defined in /boot/loader.conf
init_exec=/root/bin/init_exec.sh
which contains
#!/usr/local/bin/execlineb -S0
redirfd -wnb 1 /m/fifo/catch_all
redirfd -r - /dev/null
fdmove -c 2 1
exec -c /sbin/s6/svscan -t 0 -s /s/scan

And finally /sbin/s6-svscan runs as pid 1.
There is a cleaner solution. I prefer to set the init_path kernel env var in /boot/loader.conf and prepend the s6 stage1 script to the normal search path. That way the kernel starts my execline script as PID 1 and if I mess it I just have to clear the variable from the loader prompt.

Reply via email to