Packages and utilities for network booting
Go to file
pancho horrillo 7e671a0899 Improve build logic (#28)
* dockerfiles: Drop duplicate mkdir

The mkdir gets executed if "Building from local dev copy", whereas if built from
upstream git, go get will take care of it.

* dockerfiles: Drop extra community repo

No longer needed with current edge or stable tags of alpine linux.

* dockerfiles: Drop gcc as an explicit dep; go pulls it

Current edge and 3.5 declare gcc as a dep for go.

* dockerfiles: Install glide from package repo

Both edge and 3.5 provide a packaged glide.  By using the provided package,
we reduce the build time a little.

* dockerfiles: Set GLIDE_HOME to prevent glide to pollute /root

glide promptly ignores HOME (it checks /etc/passwd), but honours GLIDE_HOME.
So, by pointing GLIDE_HOME to a ephemeral dir, ~/.glide will be created there
instead of /root/.glide, simplifying the cleanup process.

* dockerfiles: Use --purge to ensure clean package uninstalls

This way, /usr/lib/go gets purged, and we don't have to remove it manually.

* dockerfiles: Move netboot tree instead of copying it

Less space used and slightly faster build.

* dockerfiles: Simplify build steps

go build will honour GOBIN and leave the executable there.

* dockerfiles: Move the installation of packages to the top

* dockerfiles: Upgrade first, then install new stuff

* dockerfiles: Tie build deps with a virtual package for easier removal

By deleting the virtual .build-deps package, one ensures the
no-package-left-behind policy :-)

* dockerfiles: Split package list in multiple lines

It's a good practice for enhancing the readability of pull requests,
since addition or removal of packages from the list will result in single line
changes.

* dockerfiles: Drop changing dir to /

No need to change directory in order do the cleanup.

* dockerfiles: Test the existence of the go package, instead of .git

This way we can add .git to .dockerignore, thus preventing copying it over when
building the image.

* dockerfiles: Add .dockerfile files to minimize the files that are copied over

* dockerfiles: Place build logic in the Dockerfile

Makes it easier to understand the build process if the whole sequence is stored
in a single place.

OTOH, editing the shell script inside the Dockerfile is a bit harder.

* dockerfiles: Create a sandbox where to put all transient files

* dockerfiles: Set GLIDE_HOME to the sandbox

* dockerfiles: Set GOPATH to a dir under the sandbox

* dockerfiles: Simplify cleanup

* dockerfiles: Rename 'stuff' to 'context', to use Dockerfile lore

* dockerfiles: Install entrypoint onto /usr/local/bin

This is the default location for locally managed binaries, and as such, PATH
includes it.  This way, it is easier to run it interactively.

* dockerfiles: Extract sandbox and context paths into variables

* dockerfiles: Move vars up to help define other vars before they are used

* dockerfiles: Add the required vars to eliminate duplicated paths

* dockerfiles: Replace hardcoded paths with references to vars

* dockerfiles: Fix wording for clarity

* dockerfiles: Add emtpy line to improve readability

* dockerfiles: Tell the go linker to strip debugging symbols

This produces a sensibly smaller binary.

* dockerfiles: Drop the --rm to docker build, as it is the default behaviour

* dockerfiles: Use long flags for readability

* dockerfiles: Base image onto alpine:3.5

Now that 3.5 has been released, we can use it instead of edge, since it
provides go 1.7.3.  We get a more stable environment, plus a smaller image.
2017-01-05 15:54:43 -08:00
cmd Refactor the dockerfile for Pixiecore. 2016-08-24 00:09:09 -07:00
dhcp4 dhcp4: bind listeners to 0.0.0.0 and filter based on received interface. 2017-01-05 00:29:13 -08:00
dockerfiles/pixiecore Improve build logic (#28) 2017-01-05 15:54:43 -08:00
pcap Output pcap timestamps as UnixNano. 2016-03-24 17:37:34 -07:00
pixiecore Document the ACI container image as well as the docker image. 2017-01-05 02:51:41 -08:00
tftp tftp: move the "Listening on" log message to only show when using ListenAndServe. 2016-08-15 21:34:33 -07:00
third_party pixiecore: Add a retry loop in the iPXE boot. 2016-08-14 16:55:27 -07:00
.dockerignore Improve build logic (#28) 2017-01-05 15:54:43 -08:00
.gitignore Update .gitignore to ignore pixiecore.test. 2016-09-19 03:55:18 -07:00
.travis.yml Give up on github→travis→quay integration for now. 2017-01-05 02:17:47 -08:00
CONTRIBUTING.md Add a contributing doc. 2016-03-05 15:18:01 -08:00
glide.lock cmd/pixiecore: update glide vendored versions. 2017-01-05 00:58:37 -08:00
glide.yaml Add glide.yaml and glide.lock for vendoring. 2016-08-14 17:49:01 -07:00
LICENSE Add a license file. 2016-03-05 15:08:13 -08:00
Makefile Improve build logic (#28) 2017-01-05 15:54:43 -08:00
README.md Fix URLs in README.md to point to the right packages. 2016-08-10 00:03:02 -07:00

Netboot, packages and utilities for network booting

license Travis api

This repository contains Go implementations of network protocols used in booting machines over the network, as well as software that make use of those implementations.

This is not an official Google project.

The canonical import path for Go packages in this repository is go.universe.tf/netboot.

Libraries

  • pcap: Pure Go implementation of reading and writing pcap files.
  • dhcp4: DHCPv4 library providing the low-level bits of a DHCP client/server (packet marshaling, RFC-compliant packet transmission semantics).
  • tftp: Read-only TFTP server implementation.
  • pixiecore: the functionality of Pixiecore (see below), in library form. Every stability warning in this repository applies double for this package.

Programs

  • Pixiecore: an all-in-one tool for easy netbooting.