Behold the Gopher!

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 Linux kernel. Unlike most embedded root file systems, which consist of large binaries, u-root only has five: an init program and four Go compiler binaries.


On an Ubuntu system, install perquisites and ensure Go is at least version 1.7:

sudo apt-get install git golang build-essential
go version

Set your GOPATH:

export GOPATH="$HOME/go"

Clone u-root:

go get
cd "$GOPATH/src/"

Test u-root inside a chroot:

go run scripts/ramfs.go -test

Submitting Changes

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

For convenience, it is recommended to use this pre-commit hook:

ln -s -f ../../scripts/pre-commit .git/hooks/pre-commit


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?