Evaluation of tools

Three general questions guide all software projects:

  • what exists already? (implementations, tools and build systems)
  • what needs development? (UIs and such)
  • what is a good environment? (build + runtime)

Not only do we want to answer those questions. We also keep track of the options and decision process in this book in order for readers to make sense.

There are many existing tools already that we can leverage to implement the idea of using Linux to boot into an operating system.

Root filesystem

toollanguagelicenseusage
BusyBoxCGPLv2Heads
toyboxC0BSDAndroid
GNU coreutilsCGPLv3not for LinuxBoot
u-rootGoBSD 3-ClauseByteDance, Google et al
uutils/coreutilsRustMITnot for LinuxBoot

kexec implementations

toollanguagelicenseusage
kexec-tools (GitHub mirror)CGPLv2Heads, Petitboot
systemd (wrapper)CLGPL-2.1+systemd on UEFI
kexecbootCGPLv2?
u-root (CLI+mod)GoBSD 3-ClauseGoogle et al
kexlinuxRustLGPL-3.0+?