u-root

command module
v0.0.0-...-ba47a78 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Apr 10, 2020 License: BSD-3-Clause Imports: 11 Imported by: 0

README

u-root

Build Status Go Report Card GoDoc License

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.

  • Go bootloaders that use kexec to boot Linux or multiboot kernels such as ESXi, Xen, or tboot. They are meant to be used with LinuxBoot. With that, parsers for GRUB config files or syslinux config files are to make transition to LinuxBoot easier.

  • A way to create very small Go programs using busybox mode or source mode (see below).

  • A way to create initramfs (an archive of files) to use with Linux kernels.

Creating Initramfs Archives

u-root can create an initramfs in two different modes:

  • source mode includes Go toolchain binaries + simple shell + Go source files in the initramfs archive. Tools are compiled from source on the fly by the shell.

    When you try to run a command that is not built, it is compiled first and stored in tmpfs. From that point on, when you run the command, you get the one in tmpfs. Don't worry: the Go compiler is pretty fast.

  • bb mode: One busybox-like binary comprising all the Go tools you ask to include. See here 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.

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.

  • 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.

  • fbnetboot: a network boot client that uses DHCP and HTTP to get a boot program based on Linux, and boots it. To be merged with pxeboot.

  • localboot: a tool that finds bootable kernel configurations on the local disks and boots them.

  • boot2: similar to localboot, finds a bootable kernel configuration on disk (GRUB or syslinux) and boots it. To be merged into localboot.

  • systemboot: a wrapper around fbnetboot and localboot that just mimicks a BIOS/UEFI BDS behaviour, by looping between network booting and local booting. Use -uinitcmd argument to the u-root build tool to make it the boot program.

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.

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 10, LinuxBoot using coreboot, u-root and systemboot.

You can build systemboot like this:

u-root -build=bb -uinitcmd=systemboot core github.com/u-root/u-root/cmds/boot/{systemboot,localboot,fbnetboot}

Usage

Make sure your Go version is 1.12. Make sure your GOPATH is set up correctly.

Download and install u-root:

go get github.com/u-root/u-root

You can now use the u-root command to build an initramfs. Here are some examples:

# Build a bb-mode cpio initramfs of all the Go cmds in ./cmds/core/...
u-root -build=bb

# Generate a bb-mode archive with bootloaders
u-root -build=bb core boot

# Generate a cpio archive named initramfs.cpio.
u-root -format=cpio -build=source -o initramfs.cpio

# Generate a bb-mode archive with only these given commands.
u-root -format=cpio -build=bb ./cmds/core/{init,ls,ip,dhclient,wget,cat}

-format=cpio and -build=source are the default flag values. The default set of packages included is all packages in github.com/u-root/u-root/cmds/core/....

In addition to using paths to specify Go source packages to include, you may also use Go package import paths (e.g. golang.org/x/tools/imports) to include commands. Only the main package and its dependencies in those source directories will be included. For example:

You can build the initramfs built by u-root into the kernel via the CONFIG_INITRAMFS_SOURCE config variable or you can load it separately via an option in for example Grub or the QEMU command line or coreboot config variable.

Testing in QEMU

A good way to test the initramfs generated by u-root is with qemu:

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 quickly need to obtain a kernel, for example, when you are on a non-Linux system, you can assemble a URL to download one through Arch Linux's iPXE menu file. It would download from ${mirrorurl}iso/${release}/arch/boot/x86_64/vmlinuz, so just search for a mirror URL you prefer and a release version, for example, http://mirror.rackspace.com/archlinux/iso/2019.10.01/arch/boot/x86_64/vmlinuz.

Framebuffer

For framebuffer support, append a VESA mode via the vga kernel parameter:

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:

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:

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:

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

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:

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

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. As example for Debian, you want to add two kernel modules for testing, executing your currently booted kernel:

NOTE: these files will be placed in the $HOME dir in the initramfs.

u-root -files "$HOME/hello.ko $HOME/hello2.ko"
qemu-system-x86_64 -kernel /boot/vmlinuz-$(uname -r) -initrd /tmp/initramfs.linux_amd64.cpio

To specify the location in the initramfs, use <sourcefile>:<destinationfile>. For example:

u-root -files "root-fs/usr/bin/runc:usr/bin/run"

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:

% 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:

% 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 this environment into a kernel as an initramfs, and further embed that into firmware as a coreboot payload.

In the kernel and coreboot case, you 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:

% 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.

Updating Dependencies

# The latest released version of dep is required:
curl https://raw.githubusercontent.com/golang/dep/master/install.sh | sh
dep ensure

Hardware

If you want to see u-root on real hardware, this board is a good start.

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.

Documentation

The Go Gopher

There is no documentation for this package.

Directories

Path Synopsis
cmds
boot/pxeboot
Command pxeboot implements PXE-based booting.
Command pxeboot implements PXE-based booting.
core/basename
Basename return name with leading path information removed.
Basename return name with leading path information removed.
core/cat
Cat concatenates files and prints to stdout.
Cat concatenates files and prints to stdout.
core/chmod
Change modifier bits of a file.
Change modifier bits of a file.
core/cmp
Cmp compares two files and prints a message if their contents differ.
Cmp compares two files and prints a message if their contents differ.
core/comm
Perform a set comparisons over two files.
Perform a set comparisons over two files.
core/cp
Copy files.
Copy files.
core/cpio
cpio operates on cpio files using a cpio package It only implements basic cpio options.
cpio operates on cpio files using a cpio package It only implements basic cpio options.
core/date
Print the date.
Print the date.
core/dd
Convert and copy a file.
Convert and copy a file.
core/df
df reports details of mounted filesystems Synopsis df [-k] [-m] Description read mount information from /proc/mounts and statfs syscall and display summary information for all mount points that have a non-zero block count.
df reports details of mounted filesystems Synopsis df [-k] [-m] Description read mount information from /proc/mounts and statfs syscall and display summary information for all mount points that have a non-zero block count.
core/dhclient
dhclient sets up DHCP.
dhclient sets up DHCP.
core/dirname
dirname prints out the directory name of one or more args.
dirname prints out the directory name of one or more args.
core/dmesg
Read the system log.
Read the system log.
core/echo
Echo writes its arguments separated by blanks and terminated by a newline on the standard output.
Echo writes its arguments separated by blanks and terminated by a newline on the standard output.
core/elvish
Elvish is a cross-platform shell, supporting Linux, BSDs and Windows.
Elvish is a cross-platform shell, supporting Linux, BSDs and Windows.
core/elvish/build
Package build contains build information.
Package build contains build information.
core/elvish/edit
Package edit implements a command line editor.
Package edit implements a command line editor.
core/elvish/edit/eddefs
Package eddefs contains types used in the Editor.
Package eddefs contains types used in the Editor.
core/elvish/edit/highlight
Package highlight implements syntax highlighting for Elvish code.
Package highlight implements syntax highlighting for Elvish code.
core/elvish/edit/location
Package location implements the location mode for the editor.
Package location implements the location mode for the editor.
core/elvish/edit/prompt
Package prompt implements the prompt subsystem of the editor.
Package prompt implements the prompt subsystem of the editor.
core/elvish/edit/tty
Package tty provides terminal functionality for the Elvish editor.
Package tty provides terminal functionality for the Elvish editor.
core/elvish/edit/ui
Package ui contains types that may be used by different editor frontends.
Package ui contains types that may be used by different editor frontends.
core/elvish/eval
Package eval handles evaluation of parsed Elvish code and provides runtime facilities.
Package eval handles evaluation of parsed Elvish code and provides runtime facilities.
core/elvish/eval/bundled
Package bundled keeps bundled modules.
Package bundled keeps bundled modules.
core/elvish/eval/vals
Package vals contains basic facilities for manipulating values used in the Elvish runtime.
Package vals contains basic facilities for manipulating values used in the Elvish runtime.
core/elvish/eval/vars
Package vars contains basic types for manipulating Elvish variables.
Package vars contains basic types for manipulating Elvish variables.
core/elvish/getopt
Package getopt implements a command-line argument parser.
Package getopt implements a command-line argument parser.
core/elvish/glob
Package glob implements globbing for elvish.
Package glob implements globbing for elvish.
core/elvish/parse
Package parse implements the elvish parser.
Package parse implements the elvish parser.
core/elvish/parse/parseutil
Package parseutil contains utilities built on top of the parse package.
Package parseutil contains utilities built on top of the parse package.
core/elvish/program
Package program provides the entry point to Elvish.
Package program provides the entry point to Elvish.
core/elvish/program/shell
Package shell is the entry point for the terminal interface of Elvish.
Package shell is the entry point for the terminal interface of Elvish.
core/elvish/runtime
Package runtime assembles the Elvish runtime.
Package runtime assembles the Elvish runtime.
core/elvish/store/storedefs
Package storedefs contains definitions used by the store package.
Package storedefs contains definitions used by the store package.
core/elvish/sys
Package sys provide convenient wrappers around syscalls.
Package sys provide convenient wrappers around syscalls.
core/elvish/tt
Package tt supports table-driven tests with little boilerplate.
Package tt supports table-driven tests with little boilerplate.
core/elvish/util
Package util contains utility functions.
Package util contains utility functions.
core/false
Returns 1.
Returns 1.
core/find
Find finds files.
Find finds files.
core/free
free reports usage information for physical memory and swap space.
free reports usage information for physical memory and swap space.
core/fusermount
fusermount is a very limited replacement for the C fusermount.
fusermount is a very limited replacement for the C fusermount.
core/gpgv
gpgv validates a signature against a file.
gpgv validates a signature against a file.
core/gpt
gpt reads and writes GPT headers.
gpt reads and writes GPT headers.
core/grep
Concurrent, parallel grep.
Concurrent, parallel grep.
core/hexdump
Prints files in hexadecimal.
Prints files in hexadecimal.
core/hostname
Print or set the system's hostname.
Print or set the system's hostname.
core/hwclock
Read or set the hardware clock (RTC) in UTC format.
Read or set the hardware clock (RTC) in UTC format.
core/id
Synopsis: id [-gGnu] Description: id displays the uid, guid and groups of the calling process Options: -g, --group print only the effective group ID -G, --groups print all group IDs -n, --name print a name instead of a number, for -ugG -u, --user print only the effective user ID -r, --user print real ID instead of effective ID
Synopsis: id [-gGnu] Description: id displays the uid, guid and groups of the calling process Options: -g, --group print only the effective group ID -G, --groups print all group IDs -n, --name print a name instead of a number, for -ugG -u, --user print only the effective user ID -r, --user print real ID instead of effective ID
core/init
Build commands in background processes.
Build commands in background processes.
core/insmod
Insert a module into the Linux kernel Synopsis: insmod [filename] [module options...] Description: insmod is a clone of insmod(8)
Insert a module into the Linux kernel Synopsis: insmod [filename] [module options...] Description: insmod is a clone of insmod(8)
core/io
io reads and writes to physical memory and ports.
io reads and writes to physical memory and ports.
core/kexec
kexec executes a new kernel over the running kernel (u-root).
kexec executes a new kernel over the running kernel (u-root).
core/kill
Kill kills processes.
Kill kills processes.
core/lddfiles
lddfiles prints the arguments and all .so dependencies of those arguments Description: lddfiles prints the arguments on the command line and all .so's on which they depend.
lddfiles prints the arguments and all .so dependencies of those arguments Description: lddfiles prints the arguments on the command line and all .so's on which they depend.
core/ln
Ln makes links to files.
Ln makes links to files.
core/lockmsrs
lockmsrs locks important intel MSRs.
lockmsrs locks important intel MSRs.
core/losetup
Setup loop devices.
Setup loop devices.
core/ls
Ls prints the contents of a directory.
Ls prints the contents of a directory.
core/lsmod
List modules currently loaded in the Linux kernel Synopsis: lsmod Description: lsmod is a clone of lsmod(8) Author: Roland Kammerer <dev.rck@gmail.com>
List modules currently loaded in the Linux kernel Synopsis: lsmod Description: lsmod is a clone of lsmod(8) Author: Roland Kammerer <dev.rck@gmail.com>
core/man
man - print manual entry for command.
man - print manual entry for command.
core/man/data
Code generated by man/gen/gen.go.
Code generated by man/gen/gen.go.
core/mkdir
Mkdir makes a new directory.
Mkdir makes a new directory.
core/mkfifo
mkfifo creates a named pipe.
mkfifo creates a named pipe.
core/mknod
Unmount a filesystem at the specified path.
Unmount a filesystem at the specified path.
core/mktemp
Mktemp makes a temporary file (or directory) Synopsis: mktemp [OPTION]...
Mktemp makes a temporary file (or directory) Synopsis: mktemp [OPTION]...
core/more
More pages through files without any terminal trickery.
More pages through files without any terminal trickery.
core/mount
Mount a filesystem at the specified path.
Mount a filesystem at the specified path.
core/msr
msr -- read and write MSRs with regular command or Forth Synopsis: msr [OPTIONS] r glob MSR msr [OPTIONS] w glob MSR value msr [OPTIONS] forth-word [forth-word ...] Description: This program reads and writes sets of MSRs, while allowing them to by changed on a core by core or collective basis.
msr -- read and write MSRs with regular command or Forth Synopsis: msr [OPTIONS] r glob MSR msr [OPTIONS] w glob MSR value msr [OPTIONS] forth-word [forth-word ...] Description: This program reads and writes sets of MSRs, while allowing them to by changed on a core by core or collective basis.
core/mv
Mv renames files and directories.
Mv renames files and directories.
core/netcat
Netcat pipes over the network.
Netcat pipes over the network.
core/ntpdate
simple ntpd daemon in Go.
simple ntpd daemon in Go.
core/pci
pci: show pci bus vendor ids and other info Description: List the PCI bus, with names if possible.
pci: show pci bus vendor ids and other info Description: List the PCI bus, with names if possible.
core/ping
Send icmp packets to a server to test network connectivity.
Send icmp packets to a server to test network connectivity.
core/printenv
Print environment variables.
Print environment variables.
core/ps
Print process information.
Print process information.
core/pwd
Print name of current directory.
Print name of current directory.
core/readlink
readlink display value of symbolic link file.
readlink display value of symbolic link file.
core/rm
Delete files.
Delete files.
core/rmmod
Remove a module from the Linux kernel Synopsis: rmmod name Description: rmmod is a clone of rmmod(8) Author: Roland Kammerer <dev.rck@gmail.com>
Remove a module from the Linux kernel Synopsis: rmmod name Description: rmmod is a clone of rmmod(8) Author: Roland Kammerer <dev.rck@gmail.com>
core/rsdp
rsdp allows to determine the ACPI RSDP structure address which could be passed to the boot command later on It must be executed at the system init as it relies on scanning the kernel messages which could be quickly filled up in some cases Synopsis: rsdp [-f file] Description: Look for rsdp value in a file, default /dev/kmsg Example: rsdp rsdp -f /path/to/file
rsdp allows to determine the ACPI RSDP structure address which could be passed to the boot command later on It must be executed at the system init as it relies on scanning the kernel messages which could be quickly filled up in some cases Synopsis: rsdp [-f file] Description: Look for rsdp value in a file, default /dev/kmsg Example: rsdp rsdp -f /path/to/file
core/scp
Scp copies files between hosts on a network.
Scp copies files between hosts on a network.
core/seq
Print a sequence of numbers.
Print a sequence of numbers.
core/shutdown
shutdown halts, suspends, or reboots.
shutdown halts, suspends, or reboots.
core/sleep
Delay for the specified amount of time.
Delay for the specified amount of time.
core/sort
Sort lines.
Sort lines.
core/strace
strace is a simple multi-process tracer.
strace is a simple multi-process tracer.
core/strings
Strings finds printable strings.
Strings finds printable strings.
core/stty
The command works like this: stty [verb] [options] Verbs are: dump -- dump the json of the struct to stdout load -- read a json file from stdin and use it to set raw -- convenience command to set raw cooked -- convenience command to set cooked In common stty usage, options may be specified without a verb.
The command works like this: stty [verb] [options] Verbs are: dump -- dump the json of the struct to stdout load -- read a json file from stdin and use it to set raw -- convenience command to set raw cooked -- convenience command to set cooked In common stty usage, options may be specified without a verb.
core/tar
Create and extract tar archives.
Create and extract tar archives.
core/tee
Tee transcribes the standard input to the standard output and makes copies in the files.
Tee transcribes the standard input to the standard output and makes copies in the files.
core/true
Returns 0.
Returns 0.
core/truncate
Truncate - shrink or extend the size of a file to the specified size Synopsis: truncate [OPTIONS] [FILE]...
Truncate - shrink or extend the size of a file to the specified size Synopsis: truncate [OPTIONS] [FILE]...
core/ts
ts prepends each line of stdin with a timestamp.
ts prepends each line of stdin with a timestamp.
core/umount
Unmount a filesystem at the specified path.
Unmount a filesystem at the specified path.
core/uname
Print build information about the kernel and machine.
Print build information about the kernel and machine.
core/uniq
Uniq removes repeated lines.
Uniq removes repeated lines.
core/unshare
Disassociate parts of the process execution context.
Disassociate parts of the process execution context.
core/uptime
Get the time the machine has been up Synopsis: uptime
Get the time the machine has been up Synopsis: uptime
core/wc
Wc counts lines, words, runes, syntactically–invalid UTF codes.
Wc counts lines, words, runes, syntactically–invalid UTF codes.
core/wget
Wget reads one file from a url and writes to stdout.
Wget reads one file from a url and writes to stdout.
core/which
Which locates a command.
Which locates a command.
exp/ansi
Print ansi escape sequences.
Print ansi escape sequences.
exp/ash
our first builtin: cd The u-root shell is intended to be very simple, since builtins and extensions are written in Go.
our first builtin: cd The u-root shell is intended to be very simple, since builtins and extensions are written in Go.
exp/bzimage
bzImage is used to modify bzImage files.
bzImage is used to modify bzImage files.
exp/cbmem
cbmem prints out coreboot mem table information in JSON by default, and also implements the basic cbmem -list and -console commands.
cbmem prints out coreboot mem table information in JSON by default, and also implements the basic cbmem -list and -console commands.
exp/console
console implements a basic console.
console implements a basic console.
exp/crc
Prints crc checksum of a file.
Prints crc checksum of a file.
exp/ectool
These should all implement io.ReadAt, with the address as the Offset; same for WriteAt.
These should all implement io.ReadAt, with the address as the Offset; same for WriteAt.
exp/ed
address.go - contains methods for FileBuffer for line address resolution commands.go - defines editor commands This `ed` is intended to be a feature-complete mimick of [GNU Ed](https://www.gnu.org/software/ed//).
address.go - contains methods for FileBuffer for line address resolution commands.go - defines editor commands This `ed` is intended to be a feature-complete mimick of [GNU Ed](https://www.gnu.org/software/ed//).
exp/fdtdump
fdtdump prints a readable version of Flattened Device Tree or dtb.
fdtdump prints a readable version of Flattened Device Tree or dtb.
exp/field
The `field` command reads newline-separated lines of data from either the standard input or the specified files.
The `field` command reads newline-separated lines of data from either the standard input or the specified files.
exp/fixrsdp
fixrsdp copies the existing RSDP into the EBDA region in low mem.
fixrsdp copies the existing RSDP into the EBDA region in low mem.
exp/forth
Forth is a forth interpreter.
Forth is a forth interpreter.
exp/freq
Freq reads the given files (default standard input) and prints histograms of the character frequencies.
Freq reads the given files (default standard input) and prints histograms of the character frequencies.
exp/getty
getty Open a TTY and invoke a shell There are no special options and no login support Also getty exits after starting the shell so if one exits the shell, there is no more shell! Synopsis: getty <port> <baud> [term]
getty Open a TTY and invoke a shell There are no special options and no login support Also getty exits after starting the shell so if one exits the shell, there is no more shell! Synopsis: getty <port> <baud> [term]
exp/hdparm
hdparm performs control operations on disks.
hdparm performs control operations on disks.
exp/ipmidump
Synopsis: ipmidump [-option] Description: Options: -chassis : Print chassis power status.
Synopsis: ipmidump [-option] Description: Options: -chassis : Print chassis power status.
exp/madeye
madeye merges multiple architecture u-root initramfs to form a single universal initramfs.
madeye merges multiple architecture u-root initramfs to form a single universal initramfs.
exp/modprobe
modprobe - Add and remove modules from the Linux Kernel Synopsis: modprobe [-n] modulename [parameters...] modprobe [-n] -a modulename...
modprobe - Add and remove modules from the Linux Kernel Synopsis: modprobe [-n] modulename [parameters...] modprobe [-n] -a modulename...
exp/page
Synopsis: page [file] Description: page prints a page at a time to stdout from either stdin or a named file.
Synopsis: page [file] Description: page prints a page at a time to stdout from either stdin or a named file.
exp/pox
pox builds a portable executable as a squashfs image.
pox builds a portable executable as a squashfs image.
exp/pxeserver
pxeserver is a test & lab PXE server that supports TFTP, HTTP, and DHCPv4.
pxeserver is a test & lab PXE server that supports TFTP, HTTP, and DHCPv4.
exp/readpe
Dump the headers of a PE file.
Dump the headers of a PE file.
exp/run
Run executes its arguments as a Go program.
Run executes its arguments as a Go program.
exp/rush
our first builtin: cd The u-root shell is intended to be very simple, since builtins and extensions are written in Go.
our first builtin: cd The u-root shell is intended to be very simple, since builtins and extensions are written in Go.
exp/srvfiles
Serve files on the network.
Serve files on the network.
exp/tac
tac concatenates files and prints to stdout in reverse order, file by file Synopsis: tac <file...> Description: Options:
tac concatenates files and prints to stdout in reverse order, file by file Synopsis: tac <file...> Description: Options:
exp/validate
This program validates a file by verifying a checksum and a signature file.
This program validates a file by verifying a checksum and a signature file.
exp/zimage
zimage dumps the header of a zImage.
zimage dumps the header of a zImage.
examples
uinit
This is a basic init script.
This is a basic init script.
integration
pkg
bb
Package bb builds one busybox-like binary out of many Go command sources.
Package bb builds one busybox-like binary out of many Go command sources.
bb/bbmain
Package bbmain is the package imported by all rewritten busybox command-packages to register themselves.
Package bbmain is the package imported by all rewritten busybox command-packages to register themselves.
bb/bbmain/cmd
Package main is the busybox main.go template.
Package main is the busybox main.go template.
boot
Package boot is the high-level interface for booting another operating system from Linux using kexec.
Package boot is the high-level interface for booting another operating system from Linux using kexec.
boot/acpi
Package acpi can find and parse the RSDP pointer and struct.
Package acpi can find and parse the RSDP pointer and struct.
boot/ebda
Package ebda looks for the Extended Bios Data Area (EBDA) pointer in /dev/mem, and provides access to the EBDA.
Package ebda looks for the Extended Bios Data Area (EBDA) pointer in /dev/mem, and provides access to the EBDA.
boot/esxi
Package esxi contains an ESXi boot config parser for disks and CDROMs.
Package esxi contains an ESXi boot config parser for disks and CDROMs.
boot/ibft
Package ibft defines the iSCSI Boot Firmware Table.
Package ibft defines the iSCSI Boot Firmware Table.
boot/multiboot
Package multiboot implements bootloading multiboot kernels as defined by https://www.gnu.org/software/grub/manual/multiboot/multiboot.html.
Package multiboot implements bootloading multiboot kernels as defined by https://www.gnu.org/software/grub/manual/multiboot/multiboot.html.
boot/multiboot/internal/trampoline
Package trampoline sets machine to a specific state defined by multiboot v1 spec and jumps to the intended kernel.
Package trampoline sets machine to a specific state defined by multiboot v1 spec and jumps to the intended kernel.
boot/netboot
Package netboot provides a one-stop shop for netboot parsing needs.
Package netboot provides a one-stop shop for netboot parsing needs.
boot/netboot/ipxe
Package ipxe implements a trivial IPXE config file parser.
Package ipxe implements a trivial IPXE config file parser.
boot/netboot/pxe
Package pxe implements the PXE config file parsing.
Package pxe implements the PXE config file parsing.
boot/syslinux
Package syslinux implements a syslinux config file parser.
Package syslinux implements a syslinux config file parser.
bzimage
package bzImage implements encoding.UnmarshalBinary for bzImage files.
package bzImage implements encoding.UnmarshalBinary for bzImage files.
cmdline
Package cmdline is parser for kernel command-line args from /proc/cmdline.
Package cmdline is parser for kernel command-line args from /proc/cmdline.
complete
Package complete implements a simple completion package designed to be used in shells and other programs.
Package complete implements a simple completion package designed to be used in shells and other programs.
cp
Package cp implements routines to copy files.
Package cp implements routines to copy files.
cp/cmp
Package cmp compares trees of files.
Package cmp compares trees of files.
cpio
Package cpio implements utilities for reading and writing cpio archives.
Package cpio implements utilities for reading and writing cpio archives.
curl
Package curl implements routines to fetch files given a URL.
Package curl implements routines to fetch files given a URL.
dhclient
Package dhclient allows for getting both DHCPv4 and DHCPv6 leases on multiple network interfaces in parallel.
Package dhclient allows for getting both DHCPv4 and DHCPv6 leases on multiple network interfaces in parallel.
dt
Package dt contains utilities for device tree.
Package dt contains utilities for device tree.
find
Package find searches for files in a directory hierarchy recursively.
Package find searches for files in a directory hierarchy recursively.
forth
Package forth implements Forth parsing, which allows programs to use forth-like syntax to manipulate a stack of Cells.
Package forth implements Forth parsing, which allows programs to use forth-like syntax to manipulate a stack of Cells.
golang
Package golang is an API to the Go compiler.
Package golang is an API to the Go compiler.
gpio
Package gpio provides functions for interacting with GPIO pins via the GPIO Sysfs Interface for Userspace.
Package gpio provides functions for interacting with GPIO pins via the GPIO Sysfs Interface for Userspace.
gpt
Package gpt implements reading and writing of GUID Partition tables.
Package gpt implements reading and writing of GUID Partition tables.
ipmi
Bits and pieces from asm-generic/ioctl.h Package ipmi implements functions to communicate with the OpenIPMI driver interface.
Bits and pieces from asm-generic/ioctl.h Package ipmi implements functions to communicate with the OpenIPMI driver interface.
kexecbin
Package kexecbin offers a kexec API via a callout to kexec-tools.
Package kexecbin offers a kexec API via a callout to kexec-tools.
kmodule
Package kmodule interfaces with Linux kernel modules.
Package kmodule interfaces with Linux kernel modules.
ldd
ldd returns all the library dependencies of an executable.
ldd returns all the library dependencies of an executable.
libinit
Package libinit creates the environment and root file system for u-root.
Package libinit creates the environment and root file system for u-root.
lockfile
Package lockfile coordinates process-based file locking.
Package lockfile coordinates process-based file locking.
loop
Package loop provides an interface to interacting with Linux loop devices.
Package loop provides an interface to interacting with Linux loop devices.
ls
Package ls implements formatting tools to list files like the Linux ls tool.
Package ls implements formatting tools to list files like the Linux ls tool.
mount
Package mount implements mounting, moving, and unmounting file systems.
Package mount implements mounting, moving, and unmounting file systems.
msr
This file contains support functions for msr access for Linux.
This file contains support functions for msr access for Linux.
mtd
Chips are made by vendors, and an individual vendor is defined by a 1 to 8 byte vendor id stored in the chip.
Chips are made by vendors, and an individual vendor is defined by a 1 to 8 byte vendor id stored in the chip.
pci
pty
Package pty provides basic pty support.
Package pty provides basic pty support.
qemu
Package qemu provides a Go API for starting QEMU VMs.
Package qemu provides a Go API for starting QEMU VMs.
rand
Package rand implements cancelable reads from a cryptographically safe random number source.
Package rand implements cancelable reads from a cryptographically safe random number source.
rng
rtc
scuzz
Package scuzz supports direct access to SCSI or SATA devices.
Package scuzz supports direct access to SCSI or SATA devices.
securelaunch
Package securelaunch takes integrity measurements before launching the target system.
Package securelaunch takes integrity measurements before launching the target system.
securelaunch/eventlog
Package eventlog parses kernel event logs and saves the parsed data on a file on disk.
Package eventlog parses kernel event logs and saves the parsed data on a file on disk.
securelaunch/launcher
Package launcher boots the target kernel.
Package launcher boots the target kernel.
securelaunch/measurement
Package measurement provides different collectors to hash files, disks, dmi info and cpuid info.
Package measurement provides different collectors to hash files, disks, dmi info and cpuid info.
securelaunch/policy
Package policy locates and parses a JSON policy file.
Package policy locates and parses a JSON policy file.
securelaunch/tpm
Package tpm reads and extends pcrs with measurements.
Package tpm reads and extends pcrs with measurements.
sh
smbios
Package smbios parses SMBIOS tables into Go structures.
Package smbios parses SMBIOS tables into Go structures.
strace
Package strace implements the logic to print out the input and the return value of each traced syscall.
Package strace implements the logic to print out the input and the return value of each traced syscall.
strace/internal/abi
Package abi describes the interface between a kernel and userspace.
Package abi describes the interface between a kernel and userspace.
strace/internal/binary
Package binary translates between select fixed-sized types and a binary representation.
Package binary translates between select fixed-sized types and a binary representation.
termios
Package termios implements basic termios operations including getting a tty struct, termio struct, a winsize struct, and setting raw mode.
Package termios implements basic termios operations including getting a tty struct, termio struct, a winsize struct, and setting raw mode.
ts
Package ts contains a Transform to prepend a timestamp in front of each line.
Package ts contains a Transform to prepend a timestamp in front of each line.
tss
Package tss provides TPM 1.2/2.0 core functionality and abstraction layer for high-level functions
Package tss provides TPM 1.2/2.0 core functionality and abstraction layer for high-level functions
ubinary
Package ubinary provides a native endian binary.ByteOrder.
Package ubinary provides a native endian binary.ByteOrder.
uio
Package uio unifies commonly used io utilities for u-root.
Package uio unifies commonly used io utilities for u-root.
ulog
Package ulog exposes logging via a Go interface.
Package ulog exposes logging via a Go interface.
ulog/ulogtest
Package ulogtest implement the Logger interface via a test's testing.TB.Logf.
Package ulogtest implement the Logger interface via a test's testing.TB.Logf.
upath
Package upath contains utilities for dealing with symlinked paths.
Package upath contains utilities for dealing with symlinked paths.
uzip
Package uzip contains utilities for file system->zip and zip->file system conversions.
Package uzip contains utilities for file system->zip and zip->file system conversions.
vpd
zimage
Package zimage contains a Parser for the arm zImage Linux format.
Package zimage contains a Parser for the arm zImage Linux format.
tools
build_perf
Measure the performance of building all the Go commands under various GOGC values.
Measure the performance of building all the Go commands under various GOGC values.
checklicenses
Run with `go run checklicenses.go`.
Run with `go run checklicenses.go`.
makebb
makebb compiles many Go commands into one bb-style binary.
makebb compiles many Go commands into one bb-style binary.
makebbmain
makebbmain creates a bb main.go source file.
makebbmain creates a bb main.go source file.
mkinitramfs
mkinitramfs creates a u-root initramfs given the list of files on the command line.
mkinitramfs creates a u-root initramfs given the list of files on the command line.
testramfs
testramfs tests things, badly
testramfs tests things, badly

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL