blob: b8792c67e8ef1b5ac80ed4e489e0bdc7a88b5f09 [file] [log] [blame]
#!/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.
#### CATEGORY=Run, inspect and debug
### start fuchsia in qemu with a FVM disk
## start fuchsia in qemu with a FVM disk
##
## This command delegates to //zircon/scripts/run-zircon. Flags are documented
## in that script, and can be discovered by passing -h or --help.
##
set -e
source "$(cd "$(dirname "${BASH_SOURCE[0]}")" >/dev/null 2>&1 && pwd)"/lib/image_build_vars.sh || exit $?
source "$(cd "$(dirname "${BASH_SOURCE[0]}")" >/dev/null 2>&1 && pwd)"/lib/fvm.sh || exit $?
ZBI_IMAGE="${FUCHSIA_BUILD_DIR}/${IMAGE_ZIRCONA_ZBI}"
while [[ $# -gt 1 ]]; do
case "$1" in
-h|--help)
fx-command-help
"${FUCHSIA_DIR}/zircon/scripts/run-zircon" -h
exit 1
;;
-z)
shift
ZBI_IMAGE="$1"
;;
*)
break
esac
shift
done
authkeys_path="$(get-ssh-authkeys)" || {
fx-error "Cannot continue without a valid authorized keys file."
exit 1
}
qemu_dir="${PREBUILT_QEMU_DIR}/bin"
args=(
-a "${FUCHSIA_ARCH}"
-q "${qemu_dir}"
-t "${FUCHSIA_BUILD_DIR}/${IMAGE_QEMU_KERNEL_RAW}"
)
# Construction of a qcow image prevents qemu from writing back to the
# build-produced image file, which could cause timestamp issues with that file.
# Construction of the new ZBI adds ~/.ssh/fuchsia_authorized_keys for SSH
# access.
imgdir="$(mktemp -d ${FUCHSIA_BUILD_DIR}/tmp.XXX)"
if [[ ! -d "${imgdir}" ]]; then
echo >&2 "Failed to create temporary directory"
exit 1
fi
trap 'rm -rf "$imgdir"' EXIT
kernelzbi="${imgdir}/fuchsia-ssh.zbi"
args+=(-z "${kernelzbi}")
fx-zbi -o "${kernelzbi}" "${ZBI_IMAGE}" --entry "data/ssh/authorized_keys=${authkeys_path}"
# Not all builds use an FVM so failing to find a source FVM is OK.
fvm_source=$(fx-fvm-find-raw-source)
if [[ -n "${fvm_source}" ]]; then
fvm_tool="${FUCHSIA_BUILD_DIR}/$(fx-command-run list-build-artifacts --name fvm --expect-one tools)"
fvm_raw="${imgdir}/fvm_raw.blk"
fx-fvm-extend-image "${fvm_tool}" "${fvm_source}" "${fvm_raw}" "${IMAGE_SIZE}"
args+=(-d -D "${fvm_raw}" --diskfmt=raw)
fi
"${FUCHSIA_DIR}/zircon/scripts/run-zircon" "${args[@]}" "$@"