| #!/bin/bash |
| # Copyright 2017 The Fuchsia Authors. All rights reserved. |
| # Use of this source code is governed by a BSD-style license that can be |
| # found in the LICENSE file. |
| |
| ### run bootserver in zedboot disk paver mode |
| |
| ## usage: fx boot-paver <machine type> [--no-data] [bootserver arguments] |
| ## --no-data Use FVM images without a /data partition (preserve existing data) |
| |
| set -e |
| |
| source "$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"/lib/image_build_vars.sh |
| |
| if [[ $# == 0 ]]; then |
| fx-command-help |
| fx-machine-types |
| exit 1 |
| fi |
| |
| declare -a disks=() |
| ramdisk="${FUCHSIA_BUILD_DIR}/${ramdisk_bin}" |
| |
| machine_type="$1" |
| shift |
| case "${machine_type}" in |
| # TODO(raggi): ramdisk isn't a paver, but, this script will replace `fx boot` at which point this is correct behavior |
| ram) |
| netbootbin="netboot-${ZIRCON_PROJECT}.bin" |
| ramdisk="${FUCHSIA_BUILD_DIR}/${netbootbin}" |
| # TODO(raggi): temporary build invocation until build produces all boot |
| # volumes by default |
| fx-command-run build "${netbootbin}" |
| disks=() |
| ;; |
| efi|acer|nuc) |
| disks=("${disks[@]}" --efi "${FUCHSIA_BUILD_DIR}/${efi_block}") |
| ;; |
| cros|pixel|vboot) |
| disks=("${disks[@]}" --kernc "${FUCHSIA_BUILD_DIR}/${kernc_vboot}") |
| ;; |
| *) |
| echo "Unsupported machine type: \"${machine_type}\"" |
| fx-machine-types |
| exit 1 |
| esac |
| |
| # XXX(raggi): this is ugly, but we want to retain argument pass-through to |
| # bootserver |
| bootserver_args=() |
| if [[ "${machine_type}" == "ram" ]]; then |
| bootserver_args=("$@") |
| else |
| disks=("${disks[@]}" --fvm "${FUCHSIA_BUILD_DIR}/${fvm_sparse_block}") |
| add_data=true |
| |
| while [[ $# -gt 0 ]]; do |
| case "$1" in |
| --no-data) |
| echo "##" |
| echo "## Note: if the target has no pre-existing data partition, then" |
| echo "## none will be created. The resultant system will behave in a" |
| echo "## kind of 'incognito' fashion, as /data will be backed by ram." |
| echo "##" |
| add_data=false |
| shift |
| ;; |
| *) |
| bootserver_args=("${bootserver_args[@]}" "$1") |
| shift |
| ;; |
| esac |
| done |
| |
| if $add_data; then |
| disks=("${disks[@]}" --fvm "${FUCHSIA_BUILD_DIR}/${fvm_data_sparse_block}") |
| fi |
| fi |
| |
| fx-command-run build-paver |
| |
| exec "${ZIRCON_TOOLS_DIR}/bootserver" \ |
| "${disks[@]}" \ |
| "${ZIRCON_BUILD_DIR}/${zircon_bin}" \ |
| "${ramdisk}" \ |
| "${bootserver_args[@]}" |