41df701ed4
Update to edk2-stable202211 (jsc#PED-1410) OBS-URL: https://build.opensuse.org/request/show/1038916 OBS-URL: https://build.opensuse.org/package/show/Virtualization/ovmf?expand=0&rev=239
88 lines
2.4 KiB
Bash
88 lines
2.4 KiB
Bash
#!/bin/bash
|
|
|
|
# Generate PK/KEK OEM strings
|
|
pkkek_oemstr()
|
|
{
|
|
local CERT_FILE=$1
|
|
sed \
|
|
-e 's/^-----BEGIN CERTIFICATE-----$/4e32566d-8e9e-4f52-81d3-5bb9715f9727:/' \
|
|
-e '/^-----END CERTIFICATE-----$/d' \
|
|
$CERT_FILE \
|
|
| tr -d '\n'
|
|
}
|
|
|
|
# Build the varstore template
|
|
build_template()
|
|
{
|
|
local ARCH=$(echo $1 | tr '[:lower:'] '[:upper:]')
|
|
local PREFIX="$2"
|
|
local KEY="$3"
|
|
local PKKEK_FILE="$4"
|
|
local ISO_FILE="$5"
|
|
local TYPE="$6"
|
|
|
|
# QEMU parameters
|
|
# pflash parameters
|
|
local PFLASH=""
|
|
if [ $TYPE == "separate" ]; then
|
|
local FW_CODE_ORIG="${PREFIX}-code.bin"
|
|
local FW_VARS_ORIG="${PREFIX}-vars.bin"
|
|
local FW_CODE="${PREFIX}-${KEY}-code.bin"
|
|
local FW_VARS="${PREFIX}-${KEY}-vars.bin"
|
|
local PFLASH_CODE="-drive if=pflash,format=raw,unit=0,readonly=on,file=$FW_CODE"
|
|
local PFLASH_VARS="-drive if=pflash,format=raw,unit=1,file=$FW_VARS"
|
|
|
|
ln -s "$FW_CODE_ORIG" "$FW_CODE"
|
|
cp "$FW_VARS_ORIG" "$FW_VARS"
|
|
|
|
PFLASH="$PFLASH_CODE $PFLASH_VARS"
|
|
elif [ $TYPE == "unified" ]; then
|
|
local UNIFIED_FW_ORIG="${PREFIX}.bin"
|
|
local UNIFIED_FW="${PREFIX}-${KEY}.bin"
|
|
|
|
cp "$UNIFIED_FW_ORIG" "$UNIFIED_FW"
|
|
|
|
PFLASH="-drive if=pflash,format=raw,unit=0,file=$UNIFIED_FW"
|
|
fi
|
|
|
|
# smbios parameters for PK and KEK
|
|
local SMBIOS="-smbios type=11,value=$(pkkek_oemstr $PKKEK_FILE)"
|
|
|
|
# memory: 256MB
|
|
local MEMORY="-m 256"
|
|
|
|
# redirect display to stdio and disable network
|
|
local MISC="-display none -no-user-config -nodefaults -smp 1"
|
|
MISC="$MISC -serial stdio"
|
|
|
|
# set cdrom device
|
|
local CDROM="-device virtio-scsi-pci,id=scsi0"
|
|
CDROM="$CDROM -device scsi-cd,drive=cd0,bus=scsi0.0,bootindex=0"
|
|
CDROM="$CDROM -drive media=cdrom,if=none,id=cd0,format=raw,readonly=on"
|
|
CDROM="$CDROM,file=${ISO_FILE}"
|
|
|
|
if [ $ARCH == "X64" ]; then
|
|
# qemu command
|
|
local QEMU="qemu-system-x86_64"
|
|
|
|
# machine parameters
|
|
local MACHINE="-machine q35"
|
|
if [[ "$PREFIX" == *"-smm" ]]; then
|
|
MACHINE="$MACHINE,smm=on,accel=tcg"
|
|
MACHINE="$MACHINE -global driver=cfi.pflash01,property=secure,value=on"
|
|
MACHINE="$MACHINE -global ICH9-LPC.disable_s3=1"
|
|
fi
|
|
MACHINE="$MACHINE -chardev pty,id=charserial1"
|
|
MACHINE="$MACHINE -device isa-serial,chardev=charserial1,id=serial1"
|
|
elif [ $ARCH == "AARCH64" ]; then
|
|
# qemu command
|
|
local QEMU="qemu-system-aarch64"
|
|
|
|
# machine parameters
|
|
local MACHINE="-cpu cortex-a57 -machine virt"
|
|
fi
|
|
|
|
# Launch the VM
|
|
$QEMU $MACHINE $MEMORY $PFLASH $SMBIOS $CDROM $MISC
|
|
}
|