58 lines
1.4 KiB
Bash
Executable File
58 lines
1.4 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
|
|
set -e
|
|
|
|
if [ -z "$1" ]
|
|
then
|
|
echo "$0 [model]" >&2
|
|
exit 1
|
|
fi
|
|
MODEL="$1"
|
|
|
|
if [ ! -d "models/$1" ]
|
|
then
|
|
echo "model '$1' not found" >&2
|
|
exit 1
|
|
fi
|
|
MODEL_DIR="$(realpath "models/${MODEL}")"
|
|
|
|
BUILD="$(realpath "build/${MODEL}")"
|
|
|
|
# Clean build directory
|
|
rm -rf "${BUILD}"
|
|
mkdir -p "${BUILD}"
|
|
|
|
UEFIPAYLOAD="${BUILD}/UEFIPAYLOAD.fd"
|
|
COREBOOT="${BUILD}/coreboot.rom"
|
|
USB="${BUILD}/usb.img"
|
|
|
|
# Rebuild firmware-setup (used by edk2)
|
|
touch apps/firmware-setup/Cargo.toml
|
|
make -C apps/firmware-setup
|
|
|
|
# Rebuild CorebootPayloadPkg using edk2
|
|
PACKAGES_PATH="${MODEL_DIR}:$(realpath edk2-platforms):$(realpath apps)" \
|
|
./scripts/_build/edk2.sh \
|
|
"${UEFIPAYLOAD}" \
|
|
-D FIRMWARE_OPEN_FIRMWARE_SETUP="firmware-setup/firmware-setup.inf" \
|
|
-D FIRMWARE_OPEN_GOP="IntelGopDriver.inf"
|
|
|
|
# Rebuild coreboot
|
|
FIRMWARE_OPEN_MODEL_DIR="${MODEL_DIR}" \
|
|
FIRMWARE_OPEN_UEFIPAYLOAD="${UEFIPAYLOAD}" \
|
|
./scripts/_build/coreboot.sh \
|
|
"${MODEL_DIR}/coreboot.config" \
|
|
"${COREBOOT}"
|
|
|
|
# Rebuild firmware-update
|
|
SHASUM="$(sha384sum "${COREBOOT}" | cut -d " " -f 1)"
|
|
export BASEDIR="system76-${SHASUM}"
|
|
pushd apps/firmware-update >/dev/null
|
|
rm -rf "build/x86_64-efi-pe"
|
|
make "build/x86_64-efi-pe/boot.img"
|
|
cp -v "build/x86_64-efi-pe/boot.img" "${USB}.partial"
|
|
popd >/dev/null
|
|
mmd -i "${USB}.partial@@1M" "::${BASEDIR}/firmware"
|
|
mcopy -i "${USB}.partial@@1M" "${COREBOOT}" "::${BASEDIR}/firmware/firmware.rom"
|
|
mv -v "${USB}.partial" "${USB}"
|