On 9/04/2021 4:29 am, Crest wrote: > 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.
Thank-you for the reminder, I'd forgotten about kern.init_path. Though in both cases its really a matter of changing a variable after the loader has completed its chores (For non-FreeBSDers, there are two points where a boot can be interrupted prior to the kernel starting) I use both init_script to establish all the prerequisite stuff, check boot device, enable MAC(biba), enable firewall, start network, start ssh, create logging environment; then handoff to s6-svscan, via init_exec. Yes it could be done in one script which init_path points to, and I agree that would be cleaner. But the prerequisite stuff really needs a sh, and I like execlineb doing its redirection prep and handing off to s6-svscan :)