Movatterモバイル変換


[0]ホーム

URL:


u-root

commandmodule
v0.15.0Latest Latest
Warning

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

Go to latest
Published: Aug 18, 2025 License:BSD-3-ClauseImports:12Imported by:0

Details

Repository

github.com/u-root/u-root

Links

README

u-root

Build StatuscodecovGo Report CardCodeQLGoDocSlackLicenseOpenSSF Best Practices

Description

u-root embodies four different projects.

  • Go versions of many standard Linux tools, such asls,cp, orshutdown. Seecmds/core for most of these.

  • A way to compile many Go programs into a single binary withbusybox mode.

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

  • Gobootloaders that usekexec to boot Linux or multibootkernels such as ESXi, Xen, or tboot. They are meant to be used withLinuxBoot.

Usage

Make sure your Go version is >= 1.21.

Download and install u-root either via git:

git clone https://github.com/u-root/u-rootcd u-rootgo install

Or install directly with go:

go install github.com/u-root/u-root@latest

[!NOTE]Theu-root command will end up in$GOPATH/bin/u-root, so you mayneed to add$GOPATH/bin to your$PATH.

Examples

Here are some examples of using theu-root command to build an initramfs.

git clone https://github.com/u-root/u-rootcd 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 commandsu-root core boot# Generate an archive with only these given commandsu-root ./cmds/core/{init,ls,ip,dhclient,wget,cat,gosh}# Generate an archive with all of the core tools with some exceptionsu-root core -cmds/core/{ls,losetup}

[!IMPORTANT]

u-root works exactly whengo build andgo list work as well.

See also the section below discussing theAMD64 architecture level.

[!NOTE]

Theu-root tool is the same as themkuimage tool with some defaultsapplied.

In the near future,uimage will replaceu-root.

[!TIP]

To just build Go busybox binaries, try outgobusybox'smakebb tool.

Multi-module workspace builds

There are several ways to build multi-module command images using standard Gotooling.

$ 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/bblrwxrwxrwx   0 root     root            2 Jan  1  1970 bbin/cpud -> bblrwxrwxrwx   0 root     root            2 Jan  1  1970 bbin/gosh -> bblrwxrwxrwx   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, thegoanywhere tool cancreate one on the fly. This worksonly with local file system paths:

$ 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 givenmodules, and then execsu-root in the workspace passing along the commandnames.

[!TIP]

While workspaces are good for local compilation, they are not meant to bechecked in to version control systems.

For a non-workspace way of building multi-module initramfs images, read morein themkuimage README. (Theu-roottool ismkuimage with 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 beincluded as well.

$ u-root -files /bin/bash$ cpio -ivt < /tmp/initramfs.linux_amd64.cpio...-rwxr-xr-x   0 root     root      1277936 Jan  1  1970 bin/bash...drwxr-xr-x   0 root     root            0 Jan  1  1970 lib/x86_64-linux-gnu-rwxr-xr-x   0 root     root       210792 Jan  1  1970 lib/x86_64-linux-gnu/ld-linux-x86-64.so.2-rwxr-xr-x   0 root     root      1926256 Jan  1  1970 lib/x86_64-linux-gnu/libc.so.6lrwxrwxrwx   0 root     root           15 Jan  1  1970 lib/x86_64-linux-gnu/libtinfo.so.6 -> libtinfo.so.6.4-rw-r--r--   0 root     root       216368 Jan  1  1970 lib/x86_64-linux-gnu/libtinfo.so.6.4drwxr-xr-x   0 root     root            0 Jan  1  1970 lib64lrwxrwxrwx   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:

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

$ 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-initcmdand-uinitcmd command-line flags.

  • -initcmd determines what/init is symlinked to.-initcmd may be au-root command name or a symlink target.

  • -uinitcmd is run by the default u-rootinit after somebasic file system setup. There is no default, users should optionally supplytheir own.-uinitcmd may be a u-root command name with arguments or asymlink target with arguments.

  • After running a uinit (if there is one),init will start ashell determined by the-defaultsh argument.

We expect most users to keep their-initcmd asinit, but tosupply their own uinit for additional initialization or to immediately loadanother operating system.

All three command-line args accept both a u-root command name or a targetsymlink path.Only-uinitcmd accepts command-line arguments, however. Forexample,

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/initqemu-system-x86_64 -kernel $KERNEL -initrd /tmp/initramfs.linux_amd64.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 argumentsto uinit via a flags file in/etc/uinit.flags, seeExtra Files.

Additionally, you can pass arguments to uinit via theuroot.uinitargs kernelparameters, for example:

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/initqemu-system-x86_64 -kernel $KERNEL -initrd /tmp/initramfs.linux_amd64.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 willnotwork:

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. Wedon'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.

u-root -uinitcmd="/bin/foobar Go Gopher" ./cmds/core/{init,gosh}

This will boot the same as the above.

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:

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/goshqemu-system-x86_64 -kernel $KERNEL -initrd /tmp/initramfs.linux_amd64.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 isstarted without a proper init.)

AMD64 Architecture Level

Before building an initramfs for AMD64 withu-root, verify that the command

go env GOAMD64

printsv1. AGOAMD64 settingof any higher version may produce such binaries that don't execute on old AMD64processors (including the default CPU model of QEMU).

GOAMD64 can be reset tov1 with one of the following methods:

  • through theGOAMD64 environment variable:

    export GOAMD64=v1
  • throughgo env (only takes effect if theGOAMD64 environment variableis not set):

    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 PRto 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 severalCI systems. If you need to add another CI system, processor or OS, please let usknow.

To cross compile for an ARM, on Linux:

GOARCH=arm u-root

If you are on OSX, and wish to build for Linux on AMD64:

GOOS=linux GOARCH=amd64 u-root

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

go install github.com/hugelgupf/vmtest/tools/runvmtest@latestrunvmtest -- bash -c "cp \$VMTEST_KERNEL ./kernel"

It may not have all features you require, however.

Framebuffer

For framebuffer support, append a VESA mode via thevga 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 theLinux kernel documentation.

Entropy / Random Number Generator

Some utilities, e.g.,dhclient, require entropy to be present. For a speedyvirtualized random number generator, the kernel should have the following:

CONFIG_VIRTIO_PCI=yCONFIG_HW_RANDOM_VIRTIO=yCONFIG_CRYPTO_DEV_VIRTIO=y

Then you can run your kernel in QEMU with avirtio-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

SystemBoot

SystemBoot is a set of bootloaders written in Go. It is meant to be adistribution for LinuxBoot to create a system firmware + bootloader. All ofthese usekexec to boot. The commands are incmds/boot.Parsers are available forGRUB,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 aboot configuration which can be parsed as PXELinux or iPXE configurationfiles to get a boot program.

  • boot: finds all bootable kernels on local disk, shows a menu, and bootsthem. Supports (basic) GRUB, (basic) syslinux, (non-EFI) BootLoaderSpec, andESXi configurations.

More detailed information about the build process for a full LinuxBoot firmwareimage using u-root/systemboot and coreboot can be found in theLinuxBoot book chapter aboutLinuxBoot using coreboot, u-root and systemboot.

This project started as a loose collection of programs in u-root by variousLinuxBoot contributors, as well as a personal experiment byAndrea Barberio that has since been mergedin. It is now an effort of a broader community and graduated to a real projectfor system firmwares.

Compression

You can compress the initramfs. However, for xz compression, the kernel has somerestrictions on the compression options and it is suggested to align the file to512 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

Getting Packages of TinyCore

Using thetcz command included in u-root, you can install tinycore linuxpackages 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 totinycorelinux.net, or you want package fetching to be faster, you can run yourown 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 the cpio image created by u-root into a Linux kernel via theCONFIG_INITRAMFS_SOURCE config variable or coreboot config variable, andfurther embed the kernel image into firmware as a coreboot payload.

In the kernel and coreboot case, you may need to configure ethernet. We have adhclient command that works for both ipv4 and ipv6. Since v6 does not yet workthat 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.

Build Modes

u-root can create an initramfs in two different modes, specified by-build:

  • gbb mode: One busybox-like binary comprising all the Go tools you ask toinclude.Seethe gobusybox README for how it works.In this mode, u-root copies and rewrites the source of the tools you askedto include to be able to compile everything into one busybox-like binary.

  • binary mode: each specified binary is compiled separately and all binariesare added to the initramfs.

Updating Dependencies

go get -ugo mod tidygo mod vendor

Building without network access

The u-root command supports building with workspace vendoring and modulevendoring. In both of those cases, if all dependencies are found in the vendoreddirectories, the build happens completely offline.

Read more in themkuimage README.

u-root also still supportsGO111MODULE=off builds.

Hardware

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

Using with Plan 9

U-root works with Plan 9. The best distro to use for it is 9front, as the9front cpiofs works with newc-format cpio (the format of Linux initramfs, whichu-root generates).

Here is a script for Plan 9. Once this script runs, all the u-root commandsappear in /bin. You will need to have go1.22 installed on Plan 9; orcreate the u-root initramfs on some other system and copy it to Plan 9.

#!/bin/rcu-root '-defaultsh=' '-initcmd=' '-shellbang=true'fs/cpiofs /tmp/initram*cpiobind -a /n/tapefs /bind -a /bbin /bin

Contributions

For information about contributing, including how we sign off commits, pleaseseeCONTRIBUTING.md.

Improving existing commands (e.g., additional currently unsupported flags) isvery welcome. In this case it is not even required to build an initramfs, justenter thecmds/ directory and start coding. A list of commands that are on theroadmap can be foundhere.

Website

The sources ofu-root.org are inside thedocs/ directory andare deployed to the gh-pages branch. The CNAME file is currently not part of the CIwhich deploys to the branch which shall be evaluated if this makes futures deployments easier.

Documentation

Overview

Command u-root builds CPIO archives with the given files and Go commands.

Source Files

View all Source files

Directories

PathSynopsis
cmds
boot/bootcommand
Command boot allows to handover a system running linuxboot/u-root to a legacy preinstalled operating system by replacing the traditional bootloader path
Command boot allows to handover a system running linuxboot/u-root to a legacy preinstalled operating system by replacing the traditional bootloader path
boot/pxebootcommand
Command pxeboot implements PXE-based booting.
Command pxeboot implements PXE-based booting.
cluster/nodestatscommand
nodestats prints out vital statistics about a node as JSON.
nodestats prints out vital statistics about a node as JSON.
core/base64command
base64 - encode and decode base64 from stdin or file to stdout
base64 - encode and decode base64 from stdin or file to stdout
core/basenamecommand
Basename return name with leading path information removed.
Basename return name with leading path information removed.
core/blkidcommand
Blkid prints information about blocks.
Blkid prints information about blocks.
core/brctlcommand
core/catcommand
cat concatenates files and prints them to stdout.
cat concatenates files and prints them to stdout.
core/chmodcommand
chmod changes mode bits (e.g.
chmod changes mode bits (e.g.
core/cmpcommand
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/commcommand
comm compares two files.
comm compares two files.
core/cpcommand
cp copies files.
cp copies files.
core/cpiocommand
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/datecommand
date prints the date.
date prints the date.
core/ddcommand
dd converts and copies a file.
dd converts and copies a file.
core/dfcommand
df reports details of mounted filesystems.
df reports details of mounted filesystems.
core/dhclientcommand
dhclient sets up network config using DHCP.
dhclient sets up network config using DHCP.
core/dirnamecommand
dirname prints out the directory name of one or more args.
dirname prints out the directory name of one or more args.
core/dmesgcommand
dmesg reads the Linux system log.
dmesg reads the Linux system log.
core/ducommand
core/echocommand
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/falsecommand
false returns 1.
false returns 1.
core/findcommand
Find finds files.
Find finds files.
core/freecommand
free reports usage information for physical memory and swap space.
free reports usage information for physical memory and swap space.
core/fusermountcommand
fusermount is a very limited replacement for the C fusermount.
fusermount is a very limited replacement for the C fusermount.
core/goshcommand
core/gpgvcommand
gpgv validates a signature against a file.
gpgv validates a signature against a file.
core/gptcommand
gpt reads and writes GPT headers.
gpt reads and writes GPT headers.
core/grepcommand
core/gzipcommand
gzip compresses files using gzip compression.
gzip compresses files using gzip compression.
core/headcommand
core/hexdumpcommand
hexdump prints file content in hexadecimal.
hexdump prints file content in hexadecimal.
core/hostnamecommand
hostname prints or changes the system's hostname.
hostname prints or changes the system's hostname.
core/hwclockcommand
hwclock reads or changes the hardware clock (RTC) in UTC format.
hwclock reads or changes the hardware clock (RTC) in UTC format.
core/idcommand
id displays the user id, group id, and groups of the calling process.
id displays the user id, group id, and groups of the calling process.
core/initcommand
init is u-root's standard userspace init process.
init is u-root's standard userspace init process.
core/insmodcommand
insmod inserts a module into the running Linux kernel.
insmod inserts a module into the running Linux kernel.
core/iocommand
io reads and writes to physical memory and ports.
io reads and writes to physical memory and ports.
core/ipcommand
ip manipulates network addresses, interfaces, routing, and other config.
ip manipulates network addresses, interfaces, routing, and other config.
core/kexeccommand
core/killcommand
Kill kills processes.
Kill kills processes.
core/lddfilescommand
lddfiles prints the arguments and all .so dependencies of those arguments
lddfiles prints the arguments and all .so dependencies of those arguments
core/lncommand
Ln makes links to files.
Ln makes links to files.
core/lockmsrscommand
lockmsrs locks important intel MSRs.
lockmsrs locks important intel MSRs.
core/losetupcommand
losetup sets up and controls loop devices.
losetup sets up and controls loop devices.
core/lscommand
ls prints the contents of a directory.
ls prints the contents of a directory.
core/lsdriverscommand
lsdrivers lists driver usage on Linux systems
lsdrivers lists driver usage on Linux systems
core/lsfdcommand
core/lsmodcommand
lsmod list currently loaded Linux kernel modules.
lsmod list currently loaded Linux kernel modules.
core/mancommand
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/md5sumcommand
md5sum prints an md5 hash generated from file contents.
md5sum prints an md5 hash generated from file contents.
core/mkdircommand
mkdir makes a new directory.
mkdir makes a new directory.
core/mkfifocommand
mkfifo creates a named pipe.
mkfifo creates a named pipe.
core/mknodcommand
Unmount a filesystem at the specified path.
Unmount a filesystem at the specified path.
core/mktempcommand
Mktemp makes a temporary file (or directory)
Mktemp makes a temporary file (or directory)
core/morecommand
More pages through files without any terminal trickery.
More pages through files without any terminal trickery.
core/mountcommand
mount mounts a filesystem at the specified path.
mount mounts a filesystem at the specified path.
core/msrcommand
msr -- read and write MSRs with regular command or Forth
msr -- read and write MSRs with regular command or Forth
core/mvcommand
mv renames files and directories.
mv renames files and directories.
core/netcatcommand
netcat creates arbitrary TCP and UDP connections and listens and sends arbitrary data.
netcat creates arbitrary TCP and UDP connections and listens and sends arbitrary data.
core/nohupcommand
nohup – invoke a utility immune to hangups.
nohup – invoke a utility immune to hangups.
core/ntpdatecommand
ntpdate uses NTP to adjust the system clock.
ntpdate uses NTP to adjust the system clock.
core/pcicommand
pci: show pci bus vendor ids and other info
pci: show pci bus vendor ids and other info
core/pidofcommand
core/pingcommand
Send icmp packets to a server to test network connectivity.
Send icmp packets to a server to test network connectivity.
core/poweroffcommand
poweroff turns the system off, without delay.
poweroff turns the system off, without delay.
core/printenvcommand
Print environment variables.
Print environment variables.
core/pscommand
Print process information.
Print process information.
core/pwdcommand
Print name of current directory.
Print name of current directory.
core/readlinkcommand
readlink display value of symbolic link file.
readlink display value of symbolic link file.
core/rmcommand
Delete files.
Delete files.
core/rmmodcommand
Remove a module from the Linux kernel
Remove a module from the Linux kernel
core/rsdpcommand
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
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
core/scpcommand
Scp copies files between hosts on a network.
Scp copies files between hosts on a network.
core/seqcommand
Print a sequence of numbers.
Print a sequence of numbers.
core/shasumcommand
shasum computes SHA checksums of files.
shasum computes SHA checksums of files.
core/shutdowncommand
shutdown halts, suspends, or reboots at a specified time, or immediately.
shutdown halts, suspends, or reboots at a specified time, or immediately.
core/sleepcommand
Delay for the specified amount of time.
Delay for the specified amount of time.
core/sortcommand
Sort lines.
Sort lines.
core/sshdcommand
core/stracecommand
strace is a simple multi-process syscall & signal tracer.
strace is a simple multi-process syscall & signal tracer.
core/stringscommand
Strings finds printable strings.
Strings finds printable strings.
core/sttycommand
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/synccommand
core/tailcommand
core/tarcommand
Create and extract tar archives.
Create and extract tar archives.
core/teecommand
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/timecommand
Time process execution.
Time process execution.
core/touchcommand
touch changes file access and modification times.
touch changes file access and modification times.
core/trcommand
core/truecommand
Returns 0.
Returns 0.
core/truncatecommand
Truncate - shrink or extend the size of a file to the specified size
Truncate - shrink or extend the size of a file to the specified size
core/tscommand
ts prepends each line of stdin with a timestamp.
ts prepends each line of stdin with a timestamp.
core/ttycommand
core/umountcommand
Unmount a filesystem at the specified path.
Unmount a filesystem at the specified path.
core/unamecommand
Print build information about the kernel and machine.
Print build information about the kernel and machine.
core/uniqcommand
Uniq removes repeated lines.
Uniq removes repeated lines.
core/unmountcommand
Unmount unmounts new from old, or everything mounted on old if new is omitted.
Unmount unmounts new from old, or everything mounted on old if new is omitted.
core/unsharecommand
Disassociate parts of the process execution context.
Disassociate parts of the process execution context.
core/uptimecommand
Get the time the machine has been up Synopsis:
Get the time the machine has been up Synopsis:
core/watchdogcommand
watchdog interacts with /dev/watchdog.
watchdog interacts with /dev/watchdog.
core/wccommand
Wc counts lines, words, runes, syntactically–invalid UTF codes.
Wc counts lines, words, runes, syntactically–invalid UTF codes.
core/wgetcommand
Wget reads one file from a url and writes to stdout.
Wget reads one file from a url and writes to stdout.
core/whichcommand
Which locates a command.
Which locates a command.
core/xargscommand
xargs reads space, tab, newline and end-of-file delimited strings from the standard input and executes utility with the strings as arguments.
xargs reads space, tab, newline and end-of-file delimited strings from the standard input and executes utility with the strings as arguments.
core/yescommand
exp/acpicatcommand
acpicat cats ACPI tables from the kernel.
acpicat cats ACPI tables from the kernel.
exp/acpigrepcommand
grep a stream of ACPI tables by regexp
grep a stream of ACPI tables by regexp
exp/ansicommand
Print ansi escape sequences.
Print ansi escape sequences.
exp/bootvarscommand
Command bootvars reads the current UEFI boot variables.
Command bootvars reads the current UEFI boot variables.
exp/bzimagecommand
bzImage is used to modify bzImage files.
bzImage is used to modify bzImage files.
exp/cbmemcommand
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/consolecommand
console implements a basic console.
console implements a basic console.
exp/crccommand
Prints crc checksum of a file.
Prints crc checksum of a file.
exp/disk_unlockcommand
The disk_unlock command is used to unlock a disk drive with a HSS-derived password, and rescan the drive to enumerate the unlocked partitions.
The disk_unlock command is used to unlock a disk drive with a HSS-derived password, and rescan the drive to enumerate the unlocked partitions.
exp/dumpebdacommand
dumpebda reads and prints the Extended BIOS Data Area.
dumpebda reads and prints the Extended BIOS Data Area.
exp/dumpmemmapcommand
Command dumpmemmap prints different kernel interpretations of physical memory address space.
Command dumpmemmap prints different kernel interpretations of physical memory address space.
exp/ectoolcommand
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/edcommand
address.go - contains methods for FileBuffer for line address resolution
address.go - contains methods for FileBuffer for line address resolution
exp/fdtdumpcommand
fdtdump prints a readable version of Flattened Device Tree or dtb.
fdtdump prints a readable version of Flattened Device Tree or dtb.
exp/fieldcommand
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/fixrsdpcommand
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/forthcommand
Forth is a forth interpreter.
Forth is a forth interpreter.
exp/freqcommand
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/gettycommand
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!
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!
exp/hdparmcommand
hdparm performs control operations on disks.
hdparm performs control operations on disks.
exp/ipmidumpcommand
Synopsis:
Synopsis:
exp/kconfcommand
exp/madeyecommand
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/modprobecommand
modprobe - Add and remove modules from the Linux Kernel
modprobe - Add and remove modules from the Linux Kernel
exp/nvme_unlockcommand
The nvme_unlock command is used to unlock a NVMe drive with a HSS-derived password, and rescan the drive to enumerate the unlocked partitions.
The nvme_unlock command is used to unlock a NVMe drive with a HSS-derived password, and rescan the drive to enumerate the unlocked partitions.
exp/pagecommand
Synopsis:
Synopsis:
exp/partprobecommand
partprobe prompts the OS to re-read partition tables.
partprobe prompts the OS to re-read partition tables.
exp/pflaskcommand
exp/poxcommand
pox packages dynamic executable into an archive.
pox packages dynamic executable into an archive.
exp/pxeservercommand
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/readelfcommand
Dump the headers of an ELF file, from stdin or a set of files
Dump the headers of an ELF file, from stdin or a set of files
exp/readpecommand
Dump the headers of a PE file.
Dump the headers of a PE file.
exp/runcommand
Run executes its arguments as a Go program.
Run executes its arguments as a Go program.
exp/rushcommand
our first builtin: cd
our first builtin: cd
exp/serialcommand
exp/smbios_transfercommand
smbios_transfer sends SMBIOS tables to BMC through IPMI blob interfaces.
smbios_transfer sends SMBIOS tables to BMC through IPMI blob interfaces.
exp/smncommand
smn: read or write registers in the System Management Network on AMD cpus
smn: read or write registers in the System Management Network on AMD cpus
exp/srvfilescommand
Serve files on the network.
Serve files on the network.
exp/sshcommand
SSH client.
SSH client.
exp/syscallfiltercommand
syscallfilter runs a command with a possibly empty set of filters:
syscallfilter runs a command with a possibly empty set of filters:
exp/taccommand
tac concatenates files and prints to stdout in reverse order, file by file
tac concatenates files and prints to stdout in reverse order, file by file
exp/tccommand
exp/tczcommand
exp/tftpcommand
exp/tftpdcommand
exp/vbootcommand
exp/vmbootcommand
exp/watchcommand
watch periodically executes the executable specified in argument.
watch periodically executes the executable specified in argument.
exp/zbicommand
zbi dumps the header of a Zircon boot image.
zbi dumps the header of a Zircon boot image.
exp/zimagecommand
zimage dumps the header of a zImage.
zimage dumps the header of a zImage.
fwtools/flashcommand
flash reads and writes to a flash chip.
flash reads and writes to a flash chip.
fwtools/spidevcommand
spidev communicates with the Linux spidev driver.
spidev communicates with the Linux spidev driver.
examples
uinitcommand
This is a basic init script.
This is a basic init script.
integration
pkg
acpi
Package acpi reads, modifies, and writes ACPI tables.
Package acpi reads, modifies, and writes ACPI tables.
acpi/fpdt
Package fpdt reads FPDT ACPI table and gets FPDT record information
Package fpdt reads FPDT ACPI table and gets FPDT record information
acpi/fpdt/fbpt
Package fbpt reads Firmware Basic Performance Table within ACPI FPDT Table.
Package fbpt reads Firmware Basic Performance Table within ACPI FPDT Table.
align
Package align provides helpers for doing uint alignment.
Package align provides helpers for doing uint alignment.
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/bls
Package bls parses systemd Boot Loader Spec config files.
Package bls parses systemd Boot Loader Spec config files.
boot/bootcmd
Package bootcmd handles common cleanup functions and flags that all boot commands should support.
Package bootcmd handles common cleanup functions and flags that all boot commands should support.
boot/boottest
Package boottest contains methods for comparing boot.OSImages to each other and to JSON representations of themselves for use in tests.
Package boottest contains methods for comparing boot.OSImages to each other and to JSON representations of themselves for use in tests.
boot/bzimage
Package bzimage implements decoding for bzImage files.
Package bzimage implements decoding for bzImage files.
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/fit
Package fit provides tools to read and verify FIT kernel images See https://doc.coreboot.org/lib/payloads/fit.html
Package fit provides tools to read and verify FIT kernel images See https://doc.coreboot.org/lib/payloads/fit.html
boot/grub
Package grub implements a grub config file parser.
Package grub implements a grub config file parser.
boot/ibft
Package ibft defines the iSCSI Boot Firmware Table.
Package ibft defines the iSCSI Boot Firmware Table.
boot/image
Package image contains a parser for Arm64 Linux Image format.
Package image contains a parser for Arm64 Linux Image format.
boot/kexec
Package kexec implements kexec load and file load syscall API.
Package kexec implements kexec load and file load syscall API.
boot/linux
The linux package loads bzImage-based Linux kernels using the kexec_load system call.
The linux package loads bzImage-based Linux kernels using the kexec_load system call.
boot/localboot
Package localboot contains helper functions for booting off local disks.
Package localboot contains helper functions for booting off local disks.
boot/menu
Package menu displays a Terminal UI based text menu to choose boot options from.
Package menu displays a Terminal UI based text menu to choose boot options from.
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/purgatory
Package purgatory provides several purgatories for use with kexec_load system call.
Package purgatory provides several purgatories for use with kexec_load system call.
boot/syslinux
Package syslinux implements a syslinux config file parser.
Package syslinux implements a syslinux config file parser.
boot/universalpayload
Package universalpayload supports to load FIT (Flat Image Tree) image.
Package universalpayload supports to load FIT (Flat Image Tree) image.
boot/zbi
Package zbi contains a parser for the Zircon boot image format.
Package zbi contains a parser for the Zircon boot image format.
boot/zimage
Package zimage contains a Parser for the arm zImage Linux format.
Package zimage contains a Parser for the arm zImage Linux format.
brctl
package brctl provides a Go interface to the Linux bridge control (brctl) command.
package brctl provides a Go interface to the Linux bridge control (brctl) command.
cluster/health
Package health is used for quick measuring of cluster health.
Package health is used for quick measuring of cluster health.
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.
cmos
Package cmos lets you read and write to cmos registers while doing basic checks on valid register selections.
Package cmos lets you read and write to cmos registers while doing basic checks on valid register selections.
core/base64
Package base64 implements the base64 core utility.
Package base64 implements the base64 core utility.
core/cat
Package cat implements the cat core utility.
Package cat implements the cat core utility.
core/chmod
Package chmod implements the chmod core utility.
Package chmod implements the chmod core utility.
core/cp
Package cp implements the cp core utility.
Package cp implements the cp core utility.
core/find
Package find implements the find core utility.
Package find implements the find core utility.
core/gzip
Package gzip implements the gzip command.
Package gzip implements the gzip command.
core/ls
Package ls implements the ls core utility.
Package ls implements the ls core utility.
core/mkdir
Package mkdir implements the mkdir core utility.
Package mkdir implements the mkdir core utility.
core/mktemp
Package mktemp implements the mktemp core utility.
Package mktemp implements the mktemp core utility.
core/mv
Package mv implements the mv core utility.
Package mv implements the mv core utility.
core/rm
Package rm implements the rm core utility.
Package rm implements the rm core utility.
core/shasum
Package shasum implements the shasum core utility.
Package shasum implements the shasum core utility.
core/tar
Package tar implements the tar command.
Package tar implements the tar command.
core/touch
Package touch implements the touch core utility.
Package touch implements the touch core utility.
core/xargs
Package xargs implements the xargs core utility.
Package xargs implements the xargs core utility.
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.
efivarfs
Package efivarfs allows interaction with efivarfs of the linux kernel.
Package efivarfs allows interaction with efivarfs of the linux kernel.
fdsrv
Serves a file descriptor over an AF_UNIX socket when presented with a nonce.
Serves a file descriptor over an AF_UNIX socket when presented with a nonce.
finddrive
Package finddrive provides functionality to find an NVMe block device associated with a particular physical slot on the machine, based on information in the SMBIOS table.
Package finddrive provides functionality to find an NVMe block device associated with a particular physical slot on the machine, based on information in the SMBIOS table.
flash
Package flash provides higher-level functions such as reading, erasing, writing and programming the flash chip.
Package flash provides higher-level functions such as reading, erasing, writing and programming the flash chip.
flash/chips
Package chips contains chips known to work with the flash tool.
Package chips contains chips known to work with the flash tool.
flash/op
Package op contains available SPI opcodes.
Package op contains available SPI opcodes.
flash/sfdp
Package sfdp reads the SFDP (Serial Flash Discoverable Parameters) from a flash chip where supported.
Package sfdp reads the SFDP (Serial Flash Discoverable Parameters) from a flash chip where supported.
flash/spimock
Package spimock provides a fake SPI flash part for unit testing.
Package spimock provides a fake SPI flash part for unit testing.
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.
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.
hsskey
Package hsskey provides functionality for generating a key for unlocking drives based on the following procedure:
Package hsskey provides functionality for generating a key for unlocking drives based on the following procedure:
ipmi
Package ipmi implements functions to communicate with the OpenIPMI driver interface.
Package ipmi implements functions to communicate with the OpenIPMI driver interface.
ipmi/blobs
Package blobs implements OpenBMC IPMI Blob Protocol commands.
Package blobs implements OpenBMC IPMI Blob Protocol commands.
ipmi/ocp
Package ocp implements OCP/Facebook-specific IPMI client functions.
Package ocp implements OCP/Facebook-specific IPMI client functions.
kmodule
Package kmodule interfaces with Linux kernel modules.
Package kmodule interfaces with Linux kernel modules.
ldd
ldd returns library dependencies of an executable.
ldd returns 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.
logutil
Package logutil implements utilities for recording log output.
Package logutil implements utilities for recording log output.
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.
lsb
Package lsb implements parsing, marshaling, and manipulation of LSB-compliant init script metadata blocks, which are used to define dependencies, run levels, and other operational properties for initialization scripts in Unix-like systems.
Package lsb implements parsing, marshaling, and manipulation of LSB-compliant init script metadata blocks, which are used to define dependencies, run levels, and other operational properties for initialization scripts in Unix-like systems.
mei
Package mei implements a wrapper on top of Linux's MEI (Intel ME Interface, formerly known as HECI).
Package mei implements a wrapper on top of Linux's MEI (Intel ME Interface, formerly known as HECI).
mount
Package mount implements mounting, moving, and unmounting file systems.
Package mount implements mounting, moving, and unmounting file systems.
mount/block
Package block finds, mounts, and modifies block devices on Linux systems.
Package block finds, mounts, and modifies block devices on Linux systems.
mount/gpt
Package gpt implements reading and writing of GUID Partition tables.
Package gpt implements reading and writing of GUID Partition tables.
mount/loop
Package loop provides an interface to interacting with Linux loop devices.
Package loop provides an interface to interacting with Linux loop devices.
mount/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.
mount/scuzz
Package scuzz supports direct access to SCSI or SATA devices.
Package scuzz supports direct access to SCSI or SATA devices.
msr
This file contains support functions for msr access for Linux.
This file contains support functions for msr access for Linux.
namespace
Package namespace parses name space description files https://plan9.io/magic/man2html/6/namespace
Package namespace parses name space description files https://plan9.io/magic/man2html/6/namespace
pty
Package pty provides basic pty support.
Package pty provides basic pty support.
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.
securelaunch
Package securelaunch takes integrity measurements before launching the target system.
Package securelaunch takes integrity measurements before launching the target system.
securelaunch/config
Package config manages configuratino settings for secure launch.
Package config manages configuratino settings for secure launch.
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.
shlex
Package shlex is a simplified command-line shell-like argument parser.
Package shlex is a simplified command-line shell-like argument parser.
smbios
Package smbios parses SMBIOS tables into Go structures.
Package smbios parses SMBIOS tables into Go structures.
spidev
Package spidev wraps the Linux spidev driver and performs low-level SPI operations.
Package spidev wraps the Linux spidev driver and performs low-level SPI operations.
strace
Package strace traces Linux process events.
Package strace traces Linux process events.
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.
syscallfilter
Package syscallfilter supports filtering child process events by system call or strace event.
Package syscallfilter supports filtering child process events by system call or strace event.
termios
N.B.: While these functions are only used on Plan 9, they can be tested on any system: they are just doing file IO.
N.B.: While these functions are only used on Plan 9, they can be tested on any system: they are just doing file IO.
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
uefivars
Package uefivars manipulates UEFI variables, and can encode and decode the mixed-endianness GUIDs used by UEFI (and MS).
Package uefivars manipulates UEFI variables, and can encode and decode the mixed-endianness GUIDs used by UEFI (and MS).
uefivars/boot
Package boot manipulates UEFI boot variables, and can identify and mount the volume referenced by a boot var.
Package boot manipulates UEFI boot variables, and can identify and mount the volume referenced by a boot var.
uefivars/vartest
Package vartest contains utility functions for testing uefivars and subpackages.
Package vartest contains utility functions for testing uefivars and subpackages.
uflag
Package uflag supports u-root-custom flags as well as flag files.
Package uflag supports u-root-custom flags as well as flag files.
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.
vfile
Package vfile verifies files against a hash or signature.
Package vfile verifies files against a hash or signature.
watchdog
Package watchdog provides functions for interacting with the Linux watchdog.
Package watchdog provides functions for interacting with the Linux watchdog.
tools
build_perfcommand
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.
checklicensescommand
Run with `go run checklicenses.go`.
Run with `go run checklicenses.go`.
testramfscommand
testramfs tests things, badly
testramfs tests things, badly
tinygobbcommand
tinygoizecommand

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f orF : Jump to
y orY : Canonical URL
go.dev uses cookies from Google to deliver and enhance the quality of its services and to analyze traffic.Learn more.

[8]ページ先頭

©2009-2025 Movatter.jp