Sourcery is a program that builds root file systems consisting mostly of Go\nsource code: of the 90,000 files in a typical sourcery root, there are\nonly 12 or so programs. Other programs are compiled on demand to a\nramfs-backed file system. Compilation takes a fraction of a second\nfor most programs, and never more than 2 seconds. Once the program is\ncompiled to a statically-linked, tmpfs-based binary, invocation is\ninstantaneous.\n\nBecause these images are mostly source, they can also be\nmulti-architecture. Binaries present on boot have a path formed from\nthe target os and architecture, e.g. /$OS_$ARCH/bin/init for\ninit. Dynamically compiled binaries are placed in the tmpfs-backed\n/bin, since these binaries vanish on boot, the path can be simpler.\n\nThe file system includes the full Go toolchain as well as all\nsource code. Constructing the root file system, including the git\nclone steps and Go toolchain build, takes under 4 minutes; each\nadditional architecture takes another 90 seconds (to ensure\nreproducible builds, the Go toolchain builds itself 3 times).\n\nSourcery root file systems are designed for VFAT, a standard for\nfirmware for x86, ARM, and RISC-V. A typical USB stick for sourcery\nwould include a syslinux bootstrap for x86, required for those\nplatforms; a kernel Image file for ARM; and a kernel file for RISC-V: the\nfirmware for ARM and RISC-V is able to find boot kernels\nwithout using an on-stick bootstrap.\n\nSourcery may be found at github.com:u-root/sourcery. \n\nSourcery is a program that builds root file systems consisting mostly of Go\nsource code: of the 90,000 files in a typical sourcery root, there are\nonly 12 or so programs. Other programs are compiled on demand to a\nramfs-backed file system. Compilation takes a fraction of a second\nfor most programs, and never more than 2 seconds. Once the program is\ncompiled to a statically-linked, tmpfs-based binary, invocation is\ninstantaneous.\n\nBecause these images are mostly source, they can also be\nmulti-architecture. Binaries present on boot have a path formed from\nthe target os and architecture, e.g. /$OS_$ARCH/bin/init for\ninit. Dynamically compiled binaries are placed in the tmpfs-backed\n/bin, since these binaries vanish on boot, the path can be simpler.\n\nThe file system includes the full Go toolchain as well as all\nsource code. Constructing the root file system, including the git\nclone steps and Go toolchain build, takes under 4 minutes; each\nadditional architecture takes another 90 seconds (to ensure\nreproducible builds, the Go toolchain builds itself 3 times).\n\nSourcery root file systems are designed for VFAT, a standard for\nfirmware for x86, ARM, and RISC-V. A typical USB stick for sourcery\nwould include a syslinux bootstrap for x86, required for those\nplatforms; a kernel Image file for ARM; and a kernel file for RISC-V: the\nfirmware for ARM and RISC-V is able to find boot kernels\nwithout using an on-stick bootstrap.\n\nSourcery may be found at github.com:u-root/sourcery. \nabout this event: https://c3voc.de