blob: a0709c0fd0153da0a255e9c65c2b81b9a2900bbe (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
|
# This class generates UEFI capsules
# The current class supports generating a capsule with single firmware binary
IMAGE_TYPES += "uefi_capsule"
# u-boot-tools should be installed in the native sysroot directory
do_image_uefi_capsule[depends] += "u-boot-tools-native:do_populate_sysroot"
# By default the wic image is used to create a capsule
CAPSULE_IMGTYPE ?= "wic"
# IMGDEPLOYDIR is used as the default location of firmware binary for which the capsule needs to be created
CAPSULE_IMGLOCATION ?= "${IMGDEPLOYDIR}"
# The generated capsule by default has uefi.capsule extension
CAPSULE_EXTENSION ?= "uefi.capsule"
# The generated capsule's name by default is the same as UEFI_FIRMWARE_BINARY
CAPSULE_NAME ?= "${UEFI_FIRMWARE_BINARY}"
# The following variables must be set to be able to generate a capsule update
CAPSULE_CERTIFICATE_PATH ?= ""
CAPSULE_FW_VERSION ?= ""
CAPSULE_GUID ?= ""
CAPSULE_INDEX ?= ""
CAPSULE_MONOTONIC_COUNT ?= ""
CAPSULE_PRIVATE_KEY_PATH ?= ""
UEFI_FIRMWARE_BINARY ?= ""
# Check if the required variables are set
python() {
for var in ["CAPSULE_CERTIFICATE_PATH", "CAPSULE_FW_VERSION", \
"CAPSULE_GUID", "CAPSULE_INDEX", \
"CAPSULE_MONOTONIC_COUNT", "CAPSULE_PRIVATE_KEY_PATH", \
"UEFI_FIRMWARE_BINARY"]:
if not d.getVar(var):
raise bb.parse.SkipRecipe(f"{var} not set")
}
IMAGE_CMD:uefi_capsule(){
mkeficapsule --certificate ${CAPSULE_CERTIFICATE_PATH} \
--fw-version ${CAPSULE_FW_VERSION} \
--guid ${CAPSULE_GUID} \
--index ${CAPSULE_INDEX} \
--monotonic-count ${CAPSULE_MONOTONIC_COUNT} \
--private-key ${CAPSULE_PRIVATE_KEY_PATH} \
${UEFI_FIRMWARE_BINARY} \
${CAPSULE_IMGLOCATION}/${CAPSULE_NAME}.${CAPSULE_EXTENSION}
}
# The firmware binary should be created before generating the capsule
IMAGE_TYPEDEP:uefi_capsule:append = "${CAPSULE_IMGTYPE}"
|