Advice taken. So far, I have rebuilt everything around s6* statically (against musl), with s6-linux-utils-1.0.2 having been the only PITA because of s6-devd, which doesn't compile and have temporarily substituted with a stub (I don't need s6-devd... yet, at the least) till I manage to figure out how to do it.
Look a bit earlier in the archives: install the Sabotage Linux kernel headers if you don't have other kernel headers already. It works fine with musl.
(The static s6-mount is 52K in size, while the dynamic, stock -- slackware current -- mount alone is 92K, by the way; isn't it humorous?)
It's util-linux. This mount has a lot of misc functionality, such as calling specialized helpers for certain filesystems. It's not so bad. You could probably statically link util-linux against musl (with some kernel headers) and get almost reasonable binaries.
#!/bin/mksh s6-mount -t proc proc /proc s6-mount -t sysfs sysfs /sys s6-mount -t devtmpfs devtmpfs /dev s6-mount -t tmpfs tmpfs /run s6-mount -t ext4 -o ro /dev/sda2 /newroot exec /sbin/switch_root /newroot /etc/s6-init/init
At this point I am feeling compelled to ask you *why* you are using an initramfs. You could directly boot on /dev/sda2 and mount /proc, /sys and /run during stage 1 init, and have your devtmpfs automatically mounted by the kernel. I understand writing a switch_root script can be fun, but if you are looking to build a small, efficient system, then just cut the initramfs crap, spare yourself a lot of work and just boot on your rootfs, using your stage 1 script to do whatever you need to do very early. Really, initramfs is powerful and fun, but ultimately useless. -- Laurent