Hi, new s6 user here.
I started using s6 to do FreeBSD jail services management. It seems this helped me to get rid of some socket timeout errors (?) in my jails setups. In my deployment I am using "jail as vm" approach. This works pretty well in my testing vm and on testing server. Being very happy with the preliminary system I decided I want to replace init on freebsd similar way runit does it. However runit is fullblown init in stage 1 + and zombie reaper in stage 2, while s6 uses execline script for stage 1. After some smashing things together, I took original init.c from base FreeBSD src tree and removed parts until it's just rudimentary initialization function that execves into execlineb boot script. My environment is ZFS only so, I just did really dirty hacks to have ZFS fses, and some other late fses mounted and some other things. This seems to work reliably both in vm and on real hw. One problem I am having though, is "uncaught" logger dance, as unlike on linux, stage 1 dies with "broken pipe" signal when it tries to write to logger fifo (as it has no reader yet). For now I got around that by redirecting stderr to logger only right before supervisor boots up, however that means initial messages appear only on console. Is there some way to buffer those from fifo until last resort logger starts (using tools in s6 packages)? Or can I somehow spawn logger before supervisor spins up and have it "descent" later into supervision tree? Second problem is when I compile s6 and portable utils package with: ./configure --enable-static-libc all s6 tools are correctly identified by 'file' command as fully static ELFs, however s6-svstat for example fails to work correctly. It always reports given service as down. Without static libc it all works as intended. Is this a bug? eto
