hololake-system-architecture/product-source/hololake-platform/guanghu-os/scripts/test-native-bios-image.sh

69 lines
1.7 KiB
Shell
Raw Normal View History

#!/usr/bin/env bash
set -euo pipefail
[[ $# -eq 2 ]] || {
echo "usage: test-native-bios-image.sh <image> <receipt-output>" >&2
exit 64
}
image=$(readlink -f "$1")
receipt=$(readlink -m "$2")
serial_log=$(mktemp)
set +e
timeout 20 qemu-system-x86_64 \
-machine pc,accel=tcg \
-m 64M \
-drive "format=raw,file=${image}" \
-display none \
-monitor none \
-serial "file:${serial_log}" \
-device isa-debug-exit,iobase=0xf4,iosize=0x04 \
-no-reboot
qemu_status=$?
set -e
[[ ${qemu_status} -eq 33 ]]
for evidence in \
GHOS_BOOT_STAGE0=BIOS \
GHOS_NATIVE_KERNEL_ENTERED=true \
GHOS_CPU_MODE=LONG64 \
GHOS_WORLD_ID=GLW-ROOT-0001 \
GHOS_DOMAIN_COUNT=5 \
GHOS_DOMAIN_5=DOMAIN-FIFTH \
GHOS_BROADCAST_TOWER=BT-GH-ROOT-0001 \
GHOS_AUTHORITY_LANGUAGE=HLDP \
GHOS_GESTATIONAL_ENVIRONMENT=UNDER_CONSTRUCTION \
GHOS_PERSONA_STATE=EXISTS \
GHOS_LINUX_PRESENT=false \
GHOS_NATIVE_ACCEPTANCE=QEMU_ONLY; do
grep -q "^${evidence}" "${serial_log}"
done
observed_at=$(date --iso-8601=seconds)
image_sha=$(sha256sum "${image}" | awk '{print $1}')
cat >"${receipt}" <<EOF
schema: guanghu.native-boot-receipt/v1
receipt_id: GH-OS-LAB-001-NATIVE-QEMU-001
status: VERIFIED
observed_at: ${observed_at}
image:
architecture: x86_64
firmware: BIOS
size_bytes: 14848
sha256: ${image_sha}
runtime:
emulator: qemu-system-x86_64
acceleration: tcg
cpu_mode: LONG64
linux_kernel_present: false
world:
authority_language: HLDP
world_id: GLW-ROOT-0001
domain_count: 5
acceptance:
qemu_native_boot: true
physical_server_boot: false
linux_replaced_on_bs_sh_005: false
next_action: BUILD_RECOVERABLE_PHYSICAL_DISK_LAYOUT
EOF
cat "${serial_log}" >>"${receipt}.serial.log"