blob: eb2e069f7005e3a2155eda60ae01f834e01b6890 [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.
### start fuchsia in qemu with a FVM disk
## Usage: fx run [-S <disk_size>] [-- <run-zircon options>... [-- <qemu options>...]]
## Use `fx run -- -h` to see options available for `run-zircon`.
## Use `fx run -- -- -h` to see option available for `qemu`.
set -e
source "$(cd "$(dirname "${BASH_SOURCE[0]}")" >/dev/null 2>&1 && pwd)"/lib/image_build_vars.sh || exit $?
source "${FUCHSIA_DIR}/buildtools/vars.sh"
while getopts ":S:h" FLAG; do
case $FLAG in
S) QEMU_DISK_SIZE=$OPTARG;;
h)
fx-command-help
exit 1
;;
\?)
echo unrecognized option
fx-command-help
exit 1
;;
esac
done
shift $((OPTIND-1))
qemu_dir="${BUILDTOOLS_QEMU_DIR}/bin"
# Construction of a qcow image prevents qemu from writing back to the
# build-produced image file, which could cause timestamp issues with that file.
qcowdir="$(mktemp -d)"
if [[ ! -d "${qcowdir}" ]]; then
echo >&2 "Failed to create temporary directory"
exit 1
fi
qimg="${qcowdir}/fuchsia.qcow2"
trap 'rm "${qimg}" && rmdir "${qcowdir}"' EXIT
"${qemu_dir}/qemu-img" create -f qcow2 -b "${FUCHSIA_BUILD_DIR}/${IMAGE_FVM_RAW}" \
"${qimg}" ${QEMU_DISK_SIZE}
"${FUCHSIA_DIR}/zircon/scripts/run-zircon" \
-a "${FUCHSIA_ARCH}" \
-q "${qemu_dir}" \
-G 3 \
-t "${FUCHSIA_BUILD_DIR}/${IMAGE_QEMU_KERNEL_RAW}" \
-z "${FUCHSIA_BUILD_DIR}/${IMAGE_ZIRCONA_ZBI}" \
-d \
-D "${qimg}" \
--diskfmt="qcow2" \
"$@"