diff --git a/README.md b/README.md index 8899cf9..687e888 100644 --- a/README.md +++ b/README.md @@ -23,3 +23,50 @@ These differences include: As much as possible the code includes comments about these extensions. - Many data fields not used by CoreUpdate are omitted. + +## `serve-package` + +This project includes a very simple program designed to serve a single Container Linux package on the local host. It is intended to be used as a manual updater for a machine that is not able to use a full-fledged CoreUpdate instance. Binaries are available for each released version on the [releases page](https://github.com/coreos/go-omaha/releases). `serve-package` can also be built from source using the provided Makefile: + +```bash +make +``` + +The binary will be available in the `bin/` folder. + +It is recommended that the server be run directly on the machine you intend to update. Go to the [Container Linux release notes](https://coreos.com/releases/) and find the version number for the release you would like to update to. The update payload can be retrieved from + +``` +https://update.release.core-os.net/amd64-usr//update.gz +``` + +where `` is the version number you retrieved from the releases page. For example, `https://update.release.core-os.net/amd64-usr/1576.4.0/update.gz` is the payload required to update to Container Linux version 1576.4.0. + +Copy the update payload and the `serve-package` binary to the server you would like to update. `serve-package` can be run as follows: + +```bash +./serve-package --package-file update.gz --package-version +``` + +By default, the server listens on `localhost:8000`. This can be modified using the `--listen-address` option. + +Next, `update_engine` needs to be configured to use the local server that was just set up: + +```bash +echo "SERVER=http://localhost:8000/v1/update" | sudo tee -a /etc/coreos/update.conf +``` + +Restart `update_engine` and tell it to check for an update: + +```bash +sudo systemctl restart update-engine.service +update_engine_client -check_for_update +``` + +If `locksmithd.service` is running, the machine will restart once it has updated to the latest version. Otherwise, watch the logs from `update-engine.service` to determine when the update is complete and the machine is ready to restart: + +```bash +journalctl -u update-engine.service -f +# wait for a line that says "Update successfully applied, waiting for reboot" +sudo systemctl reboot +```