scripts/firecracker-menual/run-serial-shell.sh
Rama main · réplica de lectura del repositorio original.
#!/usr/bin/env bash
set -euo pipefail
script_dir=$(CDPATH= cd -- "$(dirname -- "$0")" && pwd -P)
repo_dir=$(CDPATH= cd -- "${script_dir}/../.." && pwd -P)
default_rootfs_image="${repo_dir}/images/rootfs/ubuntu-rootfs.ext4"
rootfs_image="$default_rootfs_image"
kernel_image=''
fail() {
printf '[FAIL] %s\n' "$1" >&2
exit 1
}
default_kernel_image() {
local candidate
for candidate in "${repo_dir}"/images/kernel/vmlinux-[0-9]*; do
if [ -f "$candidate" ]; then
printf '%s\n' "$candidate"
return
fi
done
fail 'Kernel image does not exist. Run: ./scripts/firecracker-menual/install-linux-kernel.sh'
}
main() {
if [ "$#" -gt 2 ]; then
fail 'Usage: ./scripts/firecracker-menual/run-serial-shell.sh [kernel-image] [rootfs-image]'
fi
if [ "$#" -ge 1 ]; then
kernel_image=$1
fi
if [ "$#" -eq 2 ]; then
rootfs_image=$2
fi
if [ -z "$kernel_image" ]; then
kernel_image=$(default_kernel_image)
fi
if [ ! -f "$kernel_image" ]; then
fail "Kernel image does not exist: ${kernel_image}"
fi
if [ ! -f "$rootfs_image" ]; then
fail "Ubuntu rootfs does not exist. Run: ./scripts/firecracker-menual/install-ubuntu-roofs.sh"
fi
exec "${script_dir}/boot-microvm.sh" "$kernel_image" "$rootfs_image"
}
main "$@"