2026-08-03 10:04:41 +08:00
|
|
|
#!/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 \
|
2026-08-03 20:51:36 +08:00
|
|
|
GHOS_PERSONA_STATE=EXISTS \
|
2026-08-03 10:04:41 +08:00
|
|
|
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"
|