#!/bin/bash # build-iso.sh -- the demo's ISO: the amd64 kernel's loader on an El Torito ISO, packed as # `make -f kernel/Makefile ARCH=amd64 qemu` packs it (kernel/Makefile, target qemu). # # demo/build-iso.sh [VAR=value ...] # # The VAR=value arguments go to the kernel build: EMERGENCY_CONSOLE_ENABLED=1 for a console with # no identity drive -- one of the two answers to issue #111, not yet ruled. A nightly's # StarshipOS.iso can be used in place of this, once the ruling says which image the demo serves. set -euo pipefail cd "$(dirname "$0")/.." out=$(realpath -m "${1:?usage: demo/build-iso.sh [VAR=value ...]}"); shift make --no-print-directory -f kernel/Makefile ARCH=amd64 clean make --no-print-directory -f kernel/Makefile ARCH=amd64 all "$@" tmp=$(mktemp -d); trap 'rm -rf "$tmp"' EXIT dd if=/dev/zero of="$tmp/efi.img" bs=512 count=8192 2>/dev/null mformat -i "$tmp/efi.img" :: mmd -i "$tmp/efi.img" ::/EFI ::/EFI/BOOT mcopy -i "$tmp/efi.img" build/amd64/kernel/starkernel_loader.efi ::/EFI/BOOT/BOOTX64.EFI xorriso -as mkisofs -r -J -e efi.img -no-emul-boot -o "$out" "$tmp" 2>/dev/null git checkout -q -- capsules/BLOCK_MAP.md v3/include/version.h 2>/dev/null || true # the build regenerates these echo "demo: $out"