U Root Versions Save

A fully Go userland with Linux bootloaders! u-root can create a one-binary root file system (initramfs) containing a busybox-like set of tools written in Go.

v0.14.0

2 months ago

[!IMPORTANT] TL;DR: When Go modules are enabled, you won't be able to run u-root from any arbitrary directory after this release. u-root must be run somewhere with a Go module or Go workspace. (With GO111MODULE=off the behavior should be as it always has been.)

u-root will now work exactly when go build works as well.

Use Go workspaces to compile commands from multiple modules together locally. A tool called goanywhere can create a workspace on the fly. Check out the README for more.

Go workspaces are not as suitable to be committed to a git repository. The recommended method for source-control-committed multi-module commands is described by the mkuimage README.

This change pulls in https://github.com/u-root/gobusybox/pull/110, in which we stop supporting module builds without a go.mod. In essence, from this point forward, the u-root tool will support builds exactly when go build and go list also work. https://github.com/u-root/gobusybox/pull/110 reduces a lot of maintenance burden, trivially starts supporting Go workspaces and Go module replace directives, and increases gobusybox code's readability.

Multi-module builds can be done easily with standard Go methods, as described in the README. Go workspaces, vendored Go workspaces, Go modules, and vendored Go modules are all supported. Completely offline builds can easily done with vendored Go modules or workspaces.

For ease of use, the goanywhere tool was created. goanywhere creates a temporary directory with a Go workspace of the given commands, and then execs a binary passing along the Go command paths. Use like goanywhere ./u-root/cmds/core/{init,gosh} ./cpu/cmds/cpud -- u-root [other u-root args]. This approaches the easy usability of u-root up to this point.

goanywhere does not work with templates. goanywhere only accepts file system paths at this time.

This also fixes the issue where binary mode builds didn't always work in the same cases where gbb builds worked. Both are now always supported in the exact same circumstances.

This change also pulls in https://github.com/u-root/mkuimage/pull/28, in which we support generic template YAML files named ".mkuimage.yaml" in the current working directory or any of its parents. Templates support the existing command expansions, but also support configs (invoked with u-root -config=$config) in which one can specify build configuration and mixed-builder (bb/binary) builds. They will be documented in a README at a later time.

[!NOTE]

If you have any issues, please file an issue and use the last release before this change, which is v0.13.1.

What's Changed

Full Changelog: https://github.com/u-root/u-root/compare/v0.13.1...v0.14.0

v0.13.1

2 months ago

TL;DR

Maintenance release before the anticipated breaking change of https://github.com/u-root/u-root/pull/2923.

  • #2914 fixed a DHCP client forever hang introduced by #2845 in cases where the link never comes up.

  • cmds/boot/{systemboot,fbnetboot,localboot} have been moved to cmds/exp/{systemboot,fbnetboot,localboot} as they are less maintained than the remaining boot commands in cmds/boot.

What's Changed

Full Changelog: https://github.com/u-root/u-root/compare/v0.13.0...v0.13.1

v0.13.0

3 months ago

Summary

  • gosh is now the default shell. Head on over to https://github.com/u-root/u-root/discussions/2900 if you have comments.
  • elvish is scheduled for deletion in v0.14.0. Head on over to https://github.com/u-root/u-root/discussions/2900 if you have comments.
  • flash (SPI) tools have gotten a lot of improvements, try out the cmds/fwtools/flash command! Thank you @rminnich!
  • new commands:
    • cmds/core/nohup, like the regular nohup utility ("invoke a utility immune to hangups"). Thank you @binjip978!
    • cmds/exp/dumpmemmap, parses and dumps every interpretation of physical memory available on the system (/proc/iomem, /sys/firmware/memmap, /sys/firmware/fdt, and /sys/kernel/debug/memblock).
  • kexec tooling has received cleanups, unit testing, and integration test coverage collection.

What's Changed

New Contributors

Full Changelog: https://github.com/u-root/u-root/compare/v0.12.0...v0.13.0

v0.12.0

3 months ago

A lot has changed in ~1 year. The build system has better module support. Some improvements to the boot infrastructure. A lot of tinygo support. A better gosh shell.

What's Changed

New Contributors

Full Changelog: https://github.com/u-root/u-root/compare/v0.11.0...v0.12.0

v0.11.0

1 year ago

What's Changed

New Contributors

Full Changelog: https://github.com/u-root/u-root/compare/v0.10.0...v0.11.0

v0.10.0

1 year ago

Create v0.10.0 release notes

v0.9.0

1 year ago