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
tool | language | license | usage |
---|---|---|---|
BusyBox | C | GPLv2 | Heads |
toybox | C | 0BSD | Android |
GNU coreutils | C | GPLv3 | not for LinuxBoot |
u-root | Go | BSD 3-Clause | ByteDance, Google et al |
uutils/coreutils | Rust | MIT | not for LinuxBoot |
kexec implementations
tool | language | license | usage |
---|---|---|---|
kexec-tools (GitHub mirror) | C | GPLv2 | Heads, Petitboot |
systemd (wrapper) | C | LGPL-2.1+ | systemd on UEFI |
kexecboot | C | GPLv2 | ? |
u-root (CLI+mod) | Go | BSD 3-Clause | Google et al |
kexlinux | Rust | LGPL-3.0+ | ? |