blob: 46a39c2e84e90a964105b71db9cd418987e51287 [file] [log] [blame] [view]
# bootserver
**bootserver** is a tool that takes a set of images and paves a device. The go
bootserver is meant to deprecate the C version at
[//tools/bootserver_old](https://fuchsia.googlesource.com/fuchsia/+/HEAD/tools/bootserver_old)
and will be backwards compatible with it.
The bootserver executable is not actually used by the infrastructure, but the
library is used by
[botanist](https://fuchsia.googlesource.com/fuchsia/+/HEAD/tools/botanist)
(which is used by the infrastructure) to pave devices. The executable is built
and uploaded through
[artifactory](https://fuchsia.googlesource.com/fuchsia/+/HEAD/tools/artifactory)
to GCS along with other build artifacts to allow developers/testers to download
it and pave their local devices with the images produced by a particular build.
## Pave with explicitly specified images
The bootserver tool can take in specific images as command line arguments to
pave either zedboot or fuchsia. It uses the same arguments as bootserver_old.
See the flags at
[cmd/main.go](https://fuchsia.googlesource.com/fuchsia/+/HEAD/tools/bootserver/cmd/main.go)
to see which flags correspond to which images and also which unsupported
bootserver_old flags are remaining.
## Pave with image manifest
Alternatively, you can pave using the `-images` flag with the images.json
manifest produced by a build. The manifest should follow the schema at
[//tools/build/images.go](https://fuchsia.googlesource.com/fuchsia/+/HEAD/tools/build/images.go)
and include all the necessary images for paving. This will automatically be
generated after a `gn gen` or `fx set` command in the build out directory, but
the images will actually have to be built with `ninja` or `fx build` before you
can call bootserver with it.
The `-images` flag takes either a path to a local image manifest on the
filesystem, or it can also take a GCS path to an image manifest for a particular
build (i.e. gs://fuchsia-artifacts/builds/\<build id\>/images/images.json). If
using a GCS path, the images will be downloaded from the same directory in GCS
as the manifest.
The `-images` flag must be used in conjunction with the `-mode` flag. The way
bootserver determines which files to pave the device with is by looking
at the `bootserver_pave`/`bootserver_pave_zedboot`/`bootserver_netboot` fields of
each image entry in the manifest, and depending on the `mode` provided (either
`pave`, `pave-zedboot`, or `netboot`), it chooses the images with non-empty args
for that mode to send to the device.