The ~300 line bash script in toybox that builds bootable Linux systems for a dozen-ish targets can use a vanilla kernel, but the binaries I ship are built from a kernel with these patches: https://github.com/landley/toybox/blob/master/scripts/mkroot.sh https://landley.net/toybox/downloads/binaries/mkroot/0.8.9/ I've posted each patch to the list already, but here they are together and updated for 6.2: 1) let LLVM build normally without telling Linux on the command line This way I can mix CROSS_COMPILE=$ARCH-unknown-linux-cross- without having to care that some are llvm and some are gcc. 2) don't require an extra dependency to build x86-64 no other target needs. 3) Make CONFIG_DEVTMPFS_MOUNT work in initramfs. That way having the kernel build archive up a directory into a cpio.gz as a normal user doesn't leave me without a /dev/console and thus init running with stdin/stderr/stdout closed. 4) Replace the only user of bc with c. (Another package dependency with only one user.) 5) Fix rootfstype=tmpfs in initramfs. (A thinko I made in 2013 which nobody else has bothered to fix for a decade now.)