Original post

u-root logo

u-root is an embeddable root file system intended to be placed in a flash device as part of the firmware image, along with a kernel. Unlike most embedded root file systems, which consist of large binaries, u-root only has five: an init program and four compiler binaries.

Setup

On an Ubuntu system, install prerequisites and ensure Go is at least version 1.13:

Set your GOPATH:

Clone u-root:

Generate an initramfs containing u-root Go tools:

You can use this initramfs with your favorite Linux kernel in QEMU to try it out.

More instructions can be found in the repo’s README.md.

Submitting Changes

We use GitHub Pull Requests for code review. Pull requests must receive one approval and pass CI before being merged.

FAQs

So, why “u-root”?

It’s to reflect a universal root, you can mount on every local and get a userland portable (it’s a goal).

Any publications?

Contributors

Logo

The Go gopher was designed by Renee French. The u-root logo design is licensed under the Creative Commons 3.0 Attributions license.

The logo is communicating several things:

  • u-root has several flavors: firmware and as a root file system

  • the gopher at the bottom is a firmware u-root; that gopher brings the machine up, hence the wrench. Its work is also done, so it is resting.

  • the other gophers can make more copies of u-root; hence the u-root logo on their chest.

  • the highest gopher is showing how u-root is a good root file system for a VM.

  • the U itself is a stylized tree, evocative of roots.