I started u-root in 2011 because I did not want to do a yocto or onei or buildroot ever again. u-root has found wide application in firmware. U-root runs on anything Go runs on. Andrea Barisini has even targeted Go to bare metal with Tamago, and u-root runs there too. Tinygo can compile much of it to its 200 bare metal targets as well. 

The late Andrey Mirtchovski, known to many of you, contributed a lot to the early going. 

I should not digress too much from TUHS here, so I'll leave it at that.



On Fri, Feb 28, 2025 at 7:41 PM Warner Losh <imp@bsdimp.com> wrote:


On Fri, Feb 28, 2025, 7:11 PM Dan Cross <crossd@gmail.com> wrote:
On Fri, Feb 28, 2025 at 7:26 PM segaloco via TUHS <tuhs@tuhs.org> wrote:
> Given that anything that obeys the ABI and has assembler entries to the kernel
> can request services, it seems to me it would be possible to stand up a
> user-land without C being present.  Have any UNIXen ever done this after the
> advent of C?

Kind of. u-root is a userland in Go, but is more targeted towards
embedded applications (Ron will correct me if I am mistaken there)

Yea. It's reason to exist is for LinuxBoot scripting, though lots of other uses are possible. I know it from LinuxBoot...

uutils is a Rust reimplementation of most of the GNU coreutils tools,
but not (I don't think) the C library.

Correct. Rust uses it's own library for system calls. This is a never ending series of problems for FreeBSD since the C API sometimes differs slightly with what's passed to the kernel and those seemingly trivial differences cause bugs. Also, new system calls can take a while (years) to appear. FreeBSD moved inodes to 64 bits 10 years ago and it was only in the last years that rust stopped using the old 32bit inode system calls.

Warner

        - Dan C.