u-root
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.
Science Score: 36.0%
This score indicates how likely this project is to be science-related based on various indicators:
-
○CITATION.cff file
-
✓codemeta.json file
Found codemeta.json file -
✓.zenodo.json file
Found .zenodo.json file -
○DOI references
-
○Academic publication links
-
✓Committers with academic emails
10 of 208 committers (4.8%) from academic institutions -
○Institutional organization owner
-
○JOSS paper metadata
-
○Scientific vocabulary similarity
Low similarity (16.4%) to scientific vocabulary
Keywords
Keywords from Contributors
Repository
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.
Basic Info
- Host: GitHub
- Owner: u-root
- License: bsd-3-clause
- Language: Go
- Default Branch: main
- Homepage: https://u-root.org
- Size: 107 MB
Statistics
- Stars: 2,829
- Watchers: 95
- Forks: 426
- Open Issues: 157
- Releases: 8
Topics
Metadata Files
README.md
u-root
Description
u-root embodies four different projects.
Go versions of many standard Linux tools, such as ls, cp, or shutdown. See cmds/core for most of these.
A way to compile many Go programs into a single binary with busybox mode.
A way to create initramfs (an archive of files) to use with Linux kernels, embeddable into firmware.
Go bootloaders that use
kexecto boot Linux or multiboot kernels such as ESXi, Xen, or tboot. They are meant to be used with LinuxBoot.
Requirements
For u-root on Linux, certain Kconfig options are necessary. Basic defconfigs are
in configs/. See also the configs README.
Usage
Make sure your Go version is >= 1.21.
Download and install u-root either via git:
shell
git clone https://github.com/u-root/u-root
cd u-root
go install
Or install directly with go:
shell
go install github.com/u-root/u-root@latest
[!NOTE] The
u-rootcommand will end up in$GOPATH/bin/u-root, so you may need to add$GOPATH/binto your$PATH.
Examples
Here are some examples of using the u-root command to build an initramfs.
```shell git clone https://github.com/u-root/u-root cd u-root
Build an initramfs of all the Go cmds in ./cmds/core/... (default)
u-root
Generate an archive with bootloaders
core and boot are templates that expand to sets of commands
u-root core boot
Generate an archive with only these given commands
u-root ./cmds/core/{init,ls,ip,dhclient,wget,cat,gosh}
Generate an archive with all of the core tools with some exceptions
u-root core -cmds/core/{ls,losetup} ```
[!IMPORTANT]
u-rootworks exactly whengo buildandgo listwork as well.See also the section below discussing the AMD64 architecture level.
[!NOTE]
The
u-roottool is the same as the mkuimage tool with some defaults applied.In the near future,
uimagewill replaceu-root.[!TIP]
To just build Go busybox binaries, try out gobusybox's
makebbtool.
Multi-module workspace builds
There are several ways to build multi-module command images using standard Go tooling.
```shell $ mkdir workspace $ cd workspace $ git clone https://github.com/u-root/u-root $ git clone https://github.com/u-root/cpu
$ go work init ./u-root $ go work use ./cpu
$ u-root ./u-root/cmds/core/{init,gosh} ./cpu/cmds/cpud
$ cpio -ivt < /tmp/initramfs.linux_amd64.cpio ... -rwxr-x--- 0 root root 6365184 Jan 1 1970 bbin/bb lrwxrwxrwx 0 root root 2 Jan 1 1970 bbin/cpud -> bb lrwxrwxrwx 0 root root 2 Jan 1 1970 bbin/gosh -> bb lrwxrwxrwx 0 root root 2 Jan 1 1970 bbin/init -> bb ...
Works for offline vendored builds as well.
$ go work vendor # Go 1.22 feature.
$ u-root ./u-root/cmds/core/{init,gosh} ./cpu/cmds/cpud ```
When creating a new Go workspace is too much work, the goanywhere tool can
create one on the fly. This works only with local file system paths:
```shell $ go install github.com/u-root/gobusybox/src/cmd/goanywhere@latest
$ goanywhere ./u-root/cmds/core/{init,gosh} ./cpu/cmds/cpud -- u-root ```
goanywhere creates a workspace in a temporary directory with the given
modules, and then execs u-root in the workspace passing along the command
names.
[!TIP]
While workspaces are good for local compilation, they are not meant to be checked in to version control systems.
For a non-workspace way of building multi-module initramfs images, read more in the mkuimage README. (The
u-roottool ismkuimagewith more defaults applied.)
Extra Files
You may also include additional files in the initramfs using the -files flag.
If you add binaries with -files are listed, their ldd dependencies will be
included as well.
```shell $ u-root -files /bin/bash
$ cpio -ivt < /tmp/initramfs.linuxamd64.cpio ... -rwxr-xr-x 0 root root 1277936 Jan 1 1970 bin/bash ... drwxr-xr-x 0 root root 0 Jan 1 1970 lib/x8664-linux-gnu -rwxr-xr-x 0 root root 210792 Jan 1 1970 lib/x8664-linux-gnu/ld-linux-x86-64.so.2 -rwxr-xr-x 0 root root 1926256 Jan 1 1970 lib/x8664-linux-gnu/libc.so.6 lrwxrwxrwx 0 root root 15 Jan 1 1970 lib/x8664-linux-gnu/libtinfo.so.6 -> libtinfo.so.6.4 -rw-r--r-- 0 root root 216368 Jan 1 1970 lib/x8664-linux-gnu/libtinfo.so.6.4 drwxr-xr-x 0 root root 0 Jan 1 1970 lib64 lrwxrwxrwx 0 root root 42 Jan 1 1970 lib64/ld-linux-x86-64.so.2 -> /lib/x86_64-linux-gnu/ld-linux-x86-64.so.2 ... ```
You can determine placement with colons:
```shell $ u-root -files "/bin/bash:sbin/sh"
$ cpio -ivt < /tmp/initramfs.linux_amd64.cpio ... -rwxr-xr-x 0 root root 1277936 Jan 1 1970 sbin/sh ... ```
For example on Debian, if you want to add two kernel modules for testing, executing your currently booted kernel:
shell
$ u-root -files "$HOME/hello.ko:etc/hello.ko" -files "$HOME/hello2.ko:etc/hello2.ko"
$ qemu-system-x86_64 -kernel /boot/vmlinuz-$(uname -r) -initrd /tmp/initramfs.linux_amd64.cpio
Init and Uinit
u-root has a very simple (exchangable) init system controlled by the -initcmd
and -uinitcmd command-line flags.
-initcmddetermines what/initis symlinked to.-initcmdmay be a u-root command name or a symlink target.-uinitcmdis run by the default u-root init after some basic file system setup. There is no default, users should optionally supply their own.-uinitcmdmay be a u-root command name with arguments or a symlink target with arguments.After running a uinit (if there is one), init will start a shell determined by the
-defaultshargument.
We expect most users to keep their -initcmd as init, but to
supply their own uinit for additional initialization or to immediately load
another operating system.
All three command-line args accept both a u-root command name or a target
symlink path. Only -uinitcmd accepts command-line arguments, however. For
example,
```bash u-root -uinitcmd="echo Go Gopher" ./cmds/core/{init,echo,gosh}
cpio -ivt < /tmp/initramfs.linux_amd64.cpio
...
lrwxrwxrwx 0 root root 12 Dec 31 1969 bin/uinit -> ../bbin/echo
lrwxrwxrwx 0 root root 9 Dec 31 1969 init -> bbin/init
qemu-system-x8664 -kernel $KERNEL -initrd /tmp/initramfs.linuxamd64.cpio -nographic -append "console=ttyS0"
...
[ 0.848021] Freeing unused kernel memory: 896K
2020/05/01 04:04:39 Welcome to u-root!
_
_ _ _ __ ___ ___ | |_
| | | |___| '/ _ \ / _ | _|
| || |__| | | () | () | |
_,| || _/ _/ _|
Go Gopher
~/>
```
Passing command line arguments like above is equivalent to passing the arguments
to uinit via a flags file in /etc/uinit.flags, see Extra Files.
Additionally, you can pass arguments to uinit via the uroot.uinitargs kernel
parameters, for example:
```bash u-root -uinitcmd="echo Gopher" ./cmds/core/{init,echo,gosh}
cpio -ivt < /tmp/initramfs.linux_amd64.cpio
...
lrwxrwxrwx 0 root root 12 Dec 31 1969 bin/uinit -> ../bbin/echo
lrwxrwxrwx 0 root root 9 Dec 31 1969 init -> bbin/init
qemu-system-x8664 -kernel $KERNEL -initrd /tmp/initramfs.linuxamd64.cpio -nographic -append "console=ttyS0 uroot.uinitargs=Go"
...
[ 0.848021] Freeing unused kernel memory: 896K
2020/05/01 04:04:39 Welcome to u-root!
_
_ _ _ __ ___ ___ | |_
| | | |___| '/ _ \ / _ | _|
| || |__| | | () | () | |
_,| || _/ _/ _|
Go Gopher
~/>
```
Note the order of the passed arguments in the above example.
The command you name must be present in the command set. The following will not work:
```bash u-root -uinitcmd="echo Go Gopher" ./cmds/core/{init,gosh}
21:05:57 could not create symlink from "bin/uinit" to "echo": command or path "echo" not included in u-root build: specify -uinitcmd="" to ignore this error and build without a uinit
```
You can also refer to non-u-root-commands; they will be added as symlinks. We don't presume to know whether your symlink target is correct or not.
This will build, but not work unless you add a /bin/foobar to the initramfs.
bash
u-root -uinitcmd="/bin/foobar Go Gopher" ./cmds/core/{init,gosh}
This will boot the same as the above.
bash
u-root -uinitcmd="/bin/foobar Go Gopher" -files /bin/echo:bin/foobar -files your-hosts-file:/etc/hosts ./cmds/core/{init,gosh}
The effect of the above command: * Sets up the uinit command to be /bin/foobar, with 2 arguments: Go Gopher * Adds /bin/echo as bin/foobar * Adds your-hosts-file as etc/hosts * builds in the cmds/core/init, and cmds/core/gosh commands.
This will bypass the regular u-root init and just launch a shell:
```bash u-root -initcmd=gosh ./cmds/core/{gosh,ls}
cpio -ivt < /tmp/initramfs.linux_amd64.cpio
...
lrwxrwxrwx 0 root root 9 Dec 31 1969 init -> bbin/gosh
qemu-system-x8664 -kernel $KERNEL -initrd /tmp/initramfs.linuxamd64.cpio -nographic -append "console=ttyS0"
...
[ 0.848021] Freeing unused kernel memory: 896K
failed to put myself in foreground: ioctl: inappropriate ioctl for device
~/>
```
(It fails to do that because some initialization is missing when the shell is started without a proper init.)
AMD64 Architecture Level
Before building an initramfs for AMD64 with u-root, verify that the command
shell
go env GOAMD64
prints v1. A GOAMD64 setting
of any higher version may produce such binaries that don't execute on old AMD64
processors (including the default CPU model of QEMU).
GOAMD64 can be reset to v1 with one of the following methods:
through the
GOAMD64environment variable:shell export GOAMD64=v1through
go env(only takes effect if theGOAMD64environment variable is not set):shell go env -w GOAMD64=v1
Cross Compilation (targeting different architectures and OSes)
Cross-OS and -architecture compilation comes for free with Go. In fact, every PR to the u-root repo is built against the following architectures: amd64, x86 (i.e. 32bit), mipsle, armv7, arm64, and ppc64le.
Further, we run integration tests on linux/amd64, and linux/arm64, using several CI systems. If you need to add another CI system, processor or OS, please let us know.
To cross compile for an ARM, on Linux:
shell
GOARCH=arm u-root
If you are on OSX, and wish to build for Linux on AMD64:
shell
GOOS=linux GOARCH=amd64 u-root
Testing in QEMU
A good way to test the initramfs generated by u-root is with qemu:
shell
qemu-system-x86_64 -nographic -kernel path/to/kernel -initrd /tmp/initramfs.linux_amd64.cpio
Note that you do not have to build a special kernel on your own, it is
sufficient to use an existing one. Usually you can find one in /boot.
If you don't have a kernel handy, you can also get the one we use for VM testing:
```shell go install github.com/hugelgupf/vmtest/tools/runvmtest@latest
runvmtest -- bash -c "cp \$VMTEST_KERNEL ./kernel" ```
It may not have all features you require, however.
Framebuffer
For framebuffer support, append a VESA mode via the vga kernel parameter:
shell
qemu-system-x86_64 \
-kernel path/to/kernel \
-initrd /tmp/initramfs.linux_amd64.cpio \
-append "vga=786"
For a list of modes, refer to the Linux kernel documentation.
Entropy / Random Number Generator
Some utilities, e.g., dhclient, require entropy to be present. For a speedy
virtualized random number generator, the kernel should have the following:
shell
CONFIG_VIRTIO_PCI=y
CONFIG_HW_RANDOM_VIRTIO=y
CONFIG_CRYPTO_DEV_VIRTIO=y
Then you can run your kernel in QEMU with a virtio-rng-pci device:
shell
qemu-system-x86_64 \
-device virtio-rng-pci \
-kernel vmlinuz \
-initrd /tmp/initramfs.linux_amd64.cpio
In addition, you can pass your host's RNG:
shell
qemu-system-x86_64 \
-object rng-random,filename=/dev/urandom,id=rng0 \
-device virtio-rng-pci,rng=rng0 \
-kernel vmlinuz \
-initrd /tmp/initramfs.linux_amd64.cpio
SystemBoot
SystemBoot is a set of bootloaders written in Go. It is meant to be a
distribution for LinuxBoot to create a system firmware + bootloader. All of
these use kexec to boot. The commands are in cmds/boot.
Parsers are available for GRUB, syslinux,
and other config files to make the transition to LinuxBoot easier.
pxeboot: a network boot client that uses DHCP and HTTP or TFTP to get a boot configuration which can be parsed as PXELinux or iPXE configuration files to get a boot program.boot: finds all bootable kernels on local disk, shows a menu, and boots them. Supports (basic) GRUB, (basic) syslinux, (non-EFI) BootLoaderSpec, and ESXi configurations.
More detailed information about the build process for a full LinuxBoot firmware image using u-root/systemboot and coreboot can be found in the LinuxBoot book chapter about LinuxBoot using coreboot, u-root and systemboot.
This project started as a loose collection of programs in u-root by various LinuxBoot contributors, as well as a personal experiment by Andrea Barberio that has since been merged in. It is now an effort of a broader community and graduated to a real project for system firmwares.
Compression
You can compress the initramfs. However, for xz compression, the kernel has some restrictions on the compression options and it is suggested to align the file to 512 byte boundaries:
shell
xz --check=crc32 -9 --lzma2=dict=1MiB \
--stdout /tmp/initramfs.linux_amd64.cpio \
| dd conv=sync bs=512 \
of=/tmp/initramfs.linux_amd64.cpio.xz
Getting Packages of TinyCore
Using the tcz command included in u-root, you can install tinycore linux
packages for things you want.
You can use QEMU NAT to allow you to fetch packages. Let's suppose, for example, you want bash. Once u-root is running, you can do this:
shell
% tcz bash
The tcz command computes and fetches all dependencies. If you can't get to tinycorelinux.net, or you want package fetching to be faster, you can run your own server for tinycore packages.
You can do this to get a local server using the u-root srvfiles command:
shell
% srvfiles -p 80 -d path-to-local-tinycore-packages
Of course you have to fetch all those packages first somehow :-)
Build an Embeddable u-root
You can build the cpio image created by u-root into a Linux kernel via the
CONFIG_INITRAMFS_SOURCE config variable or coreboot config variable, and
further embed the kernel image into firmware as a coreboot payload.
In the kernel and coreboot case, you may need to configure ethernet. We have a
dhclient command that works for both ipv4 and ipv6. Since v6 does not yet work
that well for most people, a typical invocation looks like this:
shell
% dhclient -ipv4 -ipv6=false
Or, on newer linux kernels (> 4.x) boot with ip=dhcp in the command line, assuming your kernel is configured to work that way.
Build Modes
u-root can create an initramfs in two different modes, specified by -build:
gbbmode: One busybox-like binary comprising all the Go tools you ask to include. See the gobusybox README for how it works. In this mode, u-root copies and rewrites the source of the tools you asked to include to be able to compile everything into one busybox-like binary.binarymode: each specified binary is compiled separately and all binaries are added to the initramfs.
Updating Dependencies
shell
go get -u
go mod tidy
go mod vendor
Building without network access
The u-root command supports building with workspace vendoring and module vendoring. In both of those cases, if all dependencies are found in the vendored directories, the build happens completely offline.
Read more in the mkuimage README.
u-root also still supports GO111MODULE=off builds.
Hardware
If you want to see u-root on real hardware, this board is a good start.
Using with Plan 9
U-root works with Plan 9. The best distro to use for it is 9front, as the 9front cpiofs works with newc-format cpio (the format of Linux initramfs, which u-root generates).
Here is a script for Plan 9. Once this script runs, all the u-root commands appear in /bin. You will need to have go1.22 installed on Plan 9; or create the u-root initramfs on some other system and copy it to Plan 9.
```shell
!/bin/rc
u-root '-defaultsh=' '-initcmd=' '-shellbang=true' fs/cpiofs /tmp/initram*cpio bind -a /n/tapefs / bind -a /bbin /bin ```
Contributions
For information about contributing, including how we sign off commits, please see CONTRIBUTING.md.
Improving existing commands (e.g., additional currently unsupported flags) is
very welcome. In this case it is not even required to build an initramfs, just
enter the cmds/ directory and start coding. A list of commands that are on the
roadmap can be found here.
Website
The sources of u-root.org are inside the docs/ directory and
are deployed to the gh-pages branch. The CNAME file is currently not part of the CI
which deploys to the branch which shall be evaluated if this makes futures deployments easier.
Owner
- Name: u-root
- Login: u-root
- Kind: organization
- Website: http://u-root.org
- Repositories: 15
- Profile: https://github.com/u-root
Golang systems software
Committers
Last synced: 9 months ago
Top Committers
| Name | Commits | |
|---|---|---|
| Ronald G. Minnich | r****h@g****m | 1,136 |
| Chris Koch | c****o@g****m | 978 |
| Ryan O'Leary | r****y@g****m | 372 |
| Siarhiej Siemianczuk | p****1@g****m | 325 |
| Jens Drenhaus | j****s@9****m | 176 |
| Christopher Meis | c****s@9****m | 152 |
| Andrea Barberio | i****c@s****t | 110 |
| Thien Hoang | t****g@g****m | 92 |
| Fabian Wienand | f****d@9****m | 82 |
| leongross | l****s@9****m | 80 |
| Ronald G. Minnich | r****h@g****m | 69 |
| Laszlo Ersek | l****k@9****m | 60 |
| David Hu | x****u@g****m | 41 |
| Jean-Marie Verdun | v****n@s****m | 40 |
| Johnny Lin | j****n@w****m | 39 |
| Tobias Klauser | t****r@d****h | 38 |
| Daniel Maslowski | i****o@o****g | 38 |
| Ajan Zhong | a****g@n****m | 37 |
| llogen | c****5@g****m | 36 |
| Gan Shun Lim | g****n@g****m | 35 |
| Deomid "rojer" Ryabkov | r****9@f****m | 35 |
| Marvin Drees | m****s@9****m | 35 |
| Julien Viard de Galbert | j****t@i****m | 34 |
| pallaud | p****d@g****m | 33 |
| jbetancourt | j****t@g****m | 32 |
| Christian Walter | c****r@9****m | 32 |
| Ananya Joshi | a****a@a****o | 29 |
| Brett Kochendorfer | b****r@g****m | 28 |
| Mark Pictor | m****r@g****m | 27 |
| Ben Allen | b****n@a****v | 26 |
| and 178 more... | ||
Committer Domains (Top 20 + Academic)
Issues and Pull Requests
Last synced: 6 months ago
All Time
- Total issues: 194
- Total pull requests: 919
- Average time to close issues: almost 2 years
- Average time to close pull requests: 7 days
- Total issue authors: 65
- Total pull request authors: 74
- Average comments per issue: 2.13
- Average comments per pull request: 2.25
- Merged pull requests: 699
- Bot issues: 0
- Bot pull requests: 31
Past Year
- Issues: 75
- Pull requests: 430
- Average time to close issues: 19 days
- Average time to close pull requests: 5 days
- Issue authors: 22
- Pull request authors: 36
- Average comments per issue: 0.92
- Average comments per pull request: 2.04
- Merged pull requests: 314
- Bot issues: 0
- Bot pull requests: 21
Top Authors
Issue Authors
- 10000TB (39)
- hugelgupf (16)
- jensdrenhaus (16)
- rminnich (11)
- leongross (8)
- rjoleary (8)
- letian0805 (7)
- robertmin1 (6)
- orangecms (6)
- binjip978 (5)
- tlaurion (5)
- hanxinwu1 (3)
- pamolloy (3)
- rjkroege (2)
- limbo127 (2)
Pull Request Authors
- binjip978 (278)
- rminnich (133)
- hugelgupf (88)
- leongross (67)
- jensdrenhaus (39)
- dependabot[bot] (34)
- RiSKeD (34)
- ChriMarMe (31)
- lersek (23)
- AjanZhong (20)
- MDr164 (19)
- andrewsun2898 (14)
- 10000TB (13)
- archie2x (11)
- quite (6)
Top Labels
Issue Labels
Pull Request Labels
Packages
- Total packages: 1
- Total downloads: unknown
- Total docker downloads: 915,003,153
- Total dependent packages: 164
- Total dependent repositories: 514
- Total versions: 24
- Total advisories: 2
proxy.golang.org: github.com/u-root/u-root
Command u-root builds CPIO archives with the given files and Go commands.
- Homepage: https://github.com/u-root/u-root
- Documentation: https://pkg.go.dev/github.com/u-root/u-root#section-documentation
- License: BSD-3-Clause
-
Latest release: v0.15.0
published 6 months ago
Rankings
Advisories (2)
Dependencies
- actions/upload-artifact v3 composite
- google/oss-fuzz/infra/cifuzz/actions/build_fuzzers master composite
- google/oss-fuzz/infra/cifuzz/actions/run_fuzzers master composite
- actions/checkout v3 composite
- github/codeql-action/analyze v2 composite
- github/codeql-action/autobuild v2 composite
- github/codeql-action/init v2 composite
- actions/checkout v2 composite
- actions/setup-go v2 composite
- ubuntu 22.04 build
- [v1.0.0, v1.0.1]
- github.com/ProtonMail/go-crypto v0.0.0-20221026131551-cf6655e29de4
- github.com/anmitsu/go-shlex v0.0.0-20200514113438-38f4b401e2be
- github.com/beevik/ntp v0.3.0
- github.com/cenkalti/backoff/v4 v4.1.3
- github.com/cloudflare/circl v1.1.0
- github.com/creack/pty v1.1.15
- github.com/davecgh/go-spew v1.1.1
- github.com/dustin/go-humanize v1.0.0
- github.com/gliderlabs/ssh v0.1.2-0.20181113160402-cbabf5414432
- github.com/gojuno/minimock/v3 v3.0.8
- github.com/google/go-cmp v0.5.6
- github.com/google/go-tpm v0.3.3
- github.com/google/goexpect v0.0.0-20191001010744-5b6988669ffa
- github.com/google/goterm v0.0.0-20200907032337-555d40f16ae2
- github.com/google/uuid v1.3.0
- github.com/hashicorp/errwrap v1.0.0
- github.com/hashicorp/go-multierror v1.1.1
- github.com/insomniacslk/dhcp v0.0.0-20211209223715-7d93572ebe8e
- github.com/intel-go/cpuid v0.0.0-20200819041909-2aa72927c3e2
- github.com/jsimonetti/rtnetlink v0.0.0-20201110080708-d2c240429e6c
- github.com/kaey/framebuffer v0.0.0-20140402104929-7b385489a1ff
- github.com/kevinburke/ssh_config v1.1.0
- github.com/klauspost/compress v1.10.6
- github.com/klauspost/pgzip v1.2.4
- github.com/kr/pty v1.1.8
- github.com/mattn/go-colorable v0.1.7
- github.com/mattn/go-isatty v0.0.14
- github.com/mattn/go-runewidth v0.0.9
- github.com/mattn/go-tty v0.0.3
- github.com/mdlayher/ethernet v0.0.0-20190606142754-0394541c37b7
- github.com/mdlayher/netlink v1.1.1
- github.com/mdlayher/raw v0.0.0-20191009151244-50f2db8cc065
- github.com/nanmu42/limitio v1.0.0
- github.com/orangecms/go-framebuffer v0.0.0-20200613202404-a0700d90c330
- github.com/pborman/getopt/v2 v2.1.0
- github.com/pierrec/lz4/v4 v4.1.14
- github.com/pkg/term v1.2.0-beta.2
- github.com/pmezard/go-difflib v1.0.0
- github.com/rck/unit v0.0.3
- github.com/rekby/gpt v0.0.0-20200219180433-a930afbc6edc
- github.com/safchain/ethtool v0.0.0-20200218184317-f459e2d13664
- github.com/spf13/pflag v1.0.5
- github.com/u-root/gobusybox/src v0.0.0-20221229083637-46b2883a7f90
- github.com/u-root/iscsinl v0.1.1-0.20210528121423-84c32645822a
- github.com/u-root/prompt v0.0.0-20221110083427-a2ad3c8339a8
- github.com/u-root/uio v0.0.0-20220204230159-dac05f7d2cb4
- github.com/ulikunitz/xz v0.5.8
- github.com/vishvananda/netlink v1.1.1-0.20211118161826-650dca95af54
- github.com/vishvananda/netns v0.0.0-20210104183010-2eb08e3e575f
- github.com/vtolstov/go-ioctl v0.0.0-20151206205506-6be9cced4810
- golang.org/x/crypto v0.0.0-20210921155107-089bfa567519
- golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4
- golang.org/x/net v0.1.0
- golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4
- golang.org/x/sys v0.1.0
- golang.org/x/term v0.1.0
- golang.org/x/text v0.4.0
- golang.org/x/tools v0.1.12
- golang.org/x/xerrors v0.0.0-20220609144429-65e65417b02f
- google.golang.org/grpc v1.27.1
- gopkg.in/yaml.v2 v2.2.8
- mvdan.cc/sh/v3 v3.4.1
- pack.ag/tftp v1.0.1-0.20181129014014-07909dfbde3c
- retract (
- src.elv.sh v0.16.0-rc1.0.20220116211855-fda62502ad7f
- 349 dependencies
- actions/checkout v4 composite
- actions/setup-go v4 composite
- codecov/codecov-action v4-beta composite
- actions/checkout v3 composite
- docker/build-push-action v4 composite
- docker/login-action v2 composite
- docker/metadata-action 9ec57ed1fcdbf14dcef7dfbe97b2010124a938b7 composite
- docker/setup-buildx-action v2 composite
- scratch latest build
- ubuntu rolling build
- scratch latest build
- ubuntu rolling build
- scratch latest build
- ubuntu rolling build
- scratch latest build
- ubuntu rolling build
- scratch latest build
- ubuntu rolling build
- actions/checkout v3 composite
- actions/setup-go v4 composite
- golangci/golangci-lint-action v3 composite
- actions/checkout v4 composite
- actions/setup-node v4 composite
- peaceiris/actions-gh-pages v4 composite
- 581 dependencies
- concurrently ^8.2.2 development
- postcss-preset-env ^9.3.0 development
- @11ty/eleventy ^2.0.1
- @11ty/eleventy-img ^3.1.8
- @cagov/11ty-build-system ^1.0.1
- clean-css ^5.3.3
- dotenv ^16.3.1
- eleventy-plugin-svg-sprite ^2.4.2
- esbuild ^0.20.2
- esbuild-plugin-glob ^2.2.3
- gorko ^0.9.1
- gsap ^3.12.5
- html-minifier ^4.0.0
- jsdom ^23.0.1
- markdown-it ^12.3.2
- markdown-it-footnote ^4.0.0
- purgecss ^4.1.3
- sass ^1.69.5
- actions/checkout v4 composite
- actions/setup-go v4 composite
- scratch latest build
- ubuntu 22.04 build
- scratch latest build
- ubuntu 22.04 build
- scratch latest build
- ubuntu rolling build
- scratch latest build
- ubuntu rolling build
- golang 1.13.5-alpine build
