Skip to content

Commit

Permalink
meta-efi-secure-boot: switch from EFI_BOOT_PATH to EFI_FILES_PATH
Browse files Browse the repository at this point in the history
As meta-secure-core depends on openembedded-core, which defines already
EFI_FILES_PATH in openembedded-core/meta/conf/image-uefi.conf, we should
not define a new variable, but use already defined one.
  • Loading branch information
Dvergatal committed Jan 20, 2025
1 parent c8ffbd6 commit a787846
Show file tree
Hide file tree
Showing 6 changed files with 69 additions and 74 deletions.
9 changes: 4 additions & 5 deletions meta-efi-secure-boot/recipes-bsp/efitools/efitools.inc
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,7 @@ COMPATIBLE_HOST = '(i.86|x86_64|aarch64).*-linux'
S = "${WORKDIR}/git"

inherit perlnative
require conf/image-uefi.conf

EXTRA_OEMAKE = "\
OPENSSL='${STAGING_BINDIR_NATIVE}/openssl' \
Expand All @@ -57,8 +58,6 @@ EXTRA_OEMAKE:append:x86 = " ARCH=ia32"
EXTRA_OEMAKE:append:x86-64 = " ARCH=x86_64"
EXTRA_OEMAKE:append:aarch64 = " ARCH=aarch64"

EFI_BOOT_PATH = "/boot/efi/EFI/BOOT"

do_compile:prepend() {
sed -i -e "1s:#!.*:#!/usr/bin/env nativeperl:" xxdi.pl
}
Expand All @@ -72,15 +71,15 @@ fakeroot python do_sign:class-target() {
return

image_dir = d.getVar('D')
efi_boot_path = d.getVar('EFI_BOOT_PATH')
uks_boot_sign(os.path.join(image_dir + efi_boot_path, 'LockDown.efi'), d)
efi_files_path = d.getVar('EFI_FILES_PATH')
uks_boot_sign(os.path.join(image_dir + efi_files_path, 'LockDown.efi'), d)
}
addtask sign after do_install before do_deploy do_package
do_sign[prefuncs] += "${@'check_boot_public_key' if d.getVar('GRUB_SIGN_VERIFY') == '1' else ''}"

fakeroot python do_sign() {
}

FILES:${PN} += "${EFI_BOOT_PATH}"
FILES:${PN} += "${EFI_FILES_PATH}"

SSTATE_ALLOW_OVERLAP_FILES += "${DEPLOY_DIR_IMAGE}/LockDown.efi"
12 changes: 6 additions & 6 deletions meta-efi-secure-boot/recipes-bsp/efitools/efitools_1.9.2.bb
Original file line number Diff line number Diff line change
Expand Up @@ -57,19 +57,19 @@ do_prepare_signing_keys[prefuncs] += "check_deploy_keys"

do_install:append() {
if [ x"${UEFI_SB}" = x"1" ]; then
install -d ${D}${EFI_BOOT_PATH}
install -m 0755 ${D}${datadir}/efitools/efi/LockDown.efi ${D}${EFI_BOOT_PATH}
install -d ${D}${EFI_FILES_PATH}
install -m 0755 ${D}${datadir}/efitools/efi/LockDown.efi ${D}${EFI_FILES_PATH}
fi
}

do_deploy() {
install -d ${DEPLOYDIR}

if [ -e ${D}${EFI_BOOT_PATH}/LockDown.efi ] ; then
install -m 0600 ${D}${EFI_BOOT_PATH}/LockDown.efi "${DEPLOYDIR}"
if [ -e ${D}${EFI_FILES_PATH}/LockDown.efi ] ; then
install -m 0600 ${D}${EFI_FILES_PATH}/LockDown.efi "${DEPLOYDIR}"
fi
if [ -e ${D}${EFI_BOOT_PATH}/LockDown.efi.sig ] ; then
install -m 0600 ${D}${EFI_BOOT_PATH}/LockDown.efi.sig "${DEPLOYDIR}"
if [ -e ${D}${EFI_FILES_PATH}/LockDown.efi.sig ] ; then
install -m 0600 ${D}${EFI_FILES_PATH}/LockDown.efi.sig "${DEPLOYDIR}"
fi
}
addtask deploy after do_install before do_build
Expand Down
67 changes: 33 additions & 34 deletions meta-efi-secure-boot/recipes-bsp/grub/grub-efi-efi-secure-boot.inc
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,6 @@ SRC_URI:append:class-target = " \
COMPATIBLE_HOST:aarch64 = 'null'

GRUB_PREFIX_DIR ?= "/EFI/BOOT"
EFI_BOOT_PATH ?= "/boot/efi/EFI/BOOT"

GRUB_SECURE_BOOT_MODULES += "${@'efivar password_pbkdf2 ' if d.getVar('UEFI_SB') == '1' else ''}"

Expand Down Expand Up @@ -118,37 +117,37 @@ do_install:append:class-target() {
}

# Install the stacked grub configs.
install -d "${D}${EFI_BOOT_PATH}"
install -m 0600 "${UNPACKDIR}/grub-efi.cfg" "${D}${EFI_BOOT_PATH}/grub.cfg"
install -m 0600 "$menu" "${D}${EFI_BOOT_PATH}"
install -d "${D}${EFI_FILES_PATH}"
install -m 0600 "${UNPACKDIR}/grub-efi.cfg" "${D}${EFI_FILES_PATH}/grub.cfg"
install -m 0600 "$menu" "${D}${EFI_FILES_PATH}"
[ x"${UEFI_SB}" = x"1" ] && {
install -m 0600 "${UNPACKDIR}/efi-secure-boot.inc" "${D}${EFI_BOOT_PATH}"
install -m 0600 "${UNPACKDIR}/password.inc" "${D}${EFI_BOOT_PATH}"
install -m 0600 "${UNPACKDIR}/efi-secure-boot.inc" "${D}${EFI_FILES_PATH}"
install -m 0600 "${UNPACKDIR}/password.inc" "${D}${EFI_FILES_PATH}"
}

# Create the initial environment block with empty item.
grub-editenv "${D}${EFI_BOOT_PATH}/grubenv" create
grub-editenv "${D}${EFI_FILES_PATH}/grubenv" create

install -d "${D}${EFI_BOOT_PATH}/${GRUB_TARGET}-efi"
install -d "${D}${EFI_FILES_PATH}/${GRUB_TARGET}-efi"
grub-mkimage -c ../cfg -p "${GRUB_PREFIX_DIR}" -d "./grub-core" \
-O "${GRUB_TARGET}-efi" -o "${B}/${GRUB_IMAGE}" \
${GRUB_BUILDIN} ${GRUB_SECURE_BUILDIN}

install -m 0644 "${B}/${GRUB_IMAGE}" "${D}${EFI_BOOT_PATH}/${GRUB_IMAGE}"
install -m 0644 "${B}/${GRUB_IMAGE}" "${D}${EFI_FILES_PATH}/${GRUB_IMAGE}"

# Install the modules to grub-efi's search path
oe_runmake -C grub-core install DESTDIR="${D}${EFI_BOOT_PATH}" pkglibdir=""
oe_runmake -C grub-core install DESTDIR="${D}${EFI_FILES_PATH}" pkglibdir=""

# Remove build host references
find "${D}${EFI_BOOT_PATH}" -name modinfo.sh -type f -exec \
find "${D}${EFI_FILES_PATH}" -name modinfo.sh -type f -exec \
sed -i \
-e 's,--sysroot=${STAGING_DIR_TARGET},,g' \
-e 's|${DEBUG_PREFIX_MAP}||g' \
-e 's:${RECIPE_SYSROOT_NATIVE}::g' \
{} +

# Remove .module
rm -f ${D}${EFI_BOOT_PATH}/${GRUB_TARGET}-efi/*.module
rm -f ${D}${EFI_FILES_PATH}/${GRUB_TARGET}-efi/*.module
}

python do_sign:prepend:class-target() {
Expand All @@ -159,9 +158,9 @@ python do_sign:prepend:class-target() {

fakeroot python do_sign:class-target() {
image_dir = d.getVar('D')
efi_boot_path = d.getVar('EFI_BOOT_PATH')
efi_files_path = d.getVar('EFI_FILES_PATH')
grub_image = d.getVar('GRUB_IMAGE')
dir = image_dir + efi_boot_path + '/'
dir = image_dir + efi_files_path + '/'

sb_sign(dir + grub_image, dir + grub_image, d)
uks_bl_sign(dir + 'grub.cfg', d)
Expand All @@ -178,45 +177,45 @@ python do_sign() {
addtask sign after do_install before do_deploy do_package

fakeroot do_chownboot() {
chown root:root -R "${D}${EFI_BOOT_PATH}/grub.cfg${SB_FILE_EXT}"
chown root:root -R "${D}${EFI_BOOT_PATH}/boot-menu.inc${SB_FILE_EXT}"
chown root:root -R "${D}${EFI_FILES_PATH}/grub.cfg${SB_FILE_EXT}"
chown root:root -R "${D}${EFI_FILES_PATH}/boot-menu.inc${SB_FILE_EXT}"

[ x"${UEFI_SB}" = x"1" ] && {
chown root:root -R "${D}${EFI_BOOT_PATH}/efi-secure-boot.inc${SB_FILE_EXT}"
chown root:root -R "${D}${EFI_BOOT_PATH}/password.inc${SB_FILE_EXT}"
chown root:root -R "${D}${EFI_FILES_PATH}/efi-secure-boot.inc${SB_FILE_EXT}"
chown root:root -R "${D}${EFI_FILES_PATH}/password.inc${SB_FILE_EXT}"
}
}

addtask chownboot after do_deploy before do_package

# Append the do_deploy() in oe-core.
do_deploy:append:class-target() {
install -m 0644 "${D}${EFI_BOOT_PATH}/${GRUB_IMAGE}" "${DEPLOYDIR}"
install -m 0644 "${D}${EFI_FILES_PATH}/${GRUB_IMAGE}" "${DEPLOYDIR}"

# Deploy the stacked grub configs.
install -m 0600 "${D}${EFI_BOOT_PATH}/grubenv" "${DEPLOYDIR}"
install -m 0600 "${D}${EFI_BOOT_PATH}/grub.cfg" "${DEPLOYDIR}"
install -m 0600 "${D}${EFI_BOOT_PATH}/boot-menu.inc" "${DEPLOYDIR}"
install -m 0600 "${D}${EFI_BOOT_PATH}/grub.cfg${SB_FILE_EXT}" "${DEPLOYDIR}"
install -m 0600 "${D}${EFI_BOOT_PATH}/boot-menu.inc${SB_FILE_EXT}" "${DEPLOYDIR}"
install -m 0600 "${D}${EFI_FILES_PATH}/grubenv" "${DEPLOYDIR}"
install -m 0600 "${D}${EFI_FILES_PATH}/grub.cfg" "${DEPLOYDIR}"
install -m 0600 "${D}${EFI_FILES_PATH}/boot-menu.inc" "${DEPLOYDIR}"
install -m 0600 "${D}${EFI_FILES_PATH}/grub.cfg${SB_FILE_EXT}" "${DEPLOYDIR}"
install -m 0600 "${D}${EFI_FILES_PATH}/boot-menu.inc${SB_FILE_EXT}" "${DEPLOYDIR}"

[ x"${UEFI_SB}" = x"1" ] && {
install -m 0600 "${D}${EFI_BOOT_PATH}/efi-secure-boot.inc" "${DEPLOYDIR}"
install -m 0600 "${D}${EFI_BOOT_PATH}/password.inc" "${DEPLOYDIR}"
install -m 0600 "${D}${EFI_BOOT_PATH}/efi-secure-boot.inc${SB_FILE_EXT}" "${DEPLOYDIR}"
install -m 0600 "${D}${EFI_BOOT_PATH}/password.inc${SB_FILE_EXT}" "${DEPLOYDIR}"
install -m 0600 "${D}${EFI_FILES_PATH}/efi-secure-boot.inc" "${DEPLOYDIR}"
install -m 0600 "${D}${EFI_FILES_PATH}/password.inc" "${DEPLOYDIR}"
install -m 0600 "${D}${EFI_FILES_PATH}/efi-secure-boot.inc${SB_FILE_EXT}" "${DEPLOYDIR}"
install -m 0600 "${D}${EFI_FILES_PATH}/password.inc${SB_FILE_EXT}" "${DEPLOYDIR}"
}

install -d "${DEPLOYDIR}/efi-unsigned"
install -m 0644 "${B}/${GRUB_IMAGE}" "${DEPLOYDIR}/efi-unsigned"
PSEUDO_DISABLED=1 cp -af "${D}${EFI_BOOT_PATH}/${GRUB_TARGET}-efi" "${DEPLOYDIR}/efi-unsigned"
PSEUDO_DISABLED=1 cp -af "${D}${EFI_FILES_PATH}/${GRUB_TARGET}-efi" "${DEPLOYDIR}/efi-unsigned"
}

FILES:${PN} += "${EFI_BOOT_PATH}"
FILES:${PN} += "${EFI_FILES_PATH}"

CONFFILES:${PN} += "\
${EFI_BOOT_PATH}/grub.cfg \
${EFI_BOOT_PATH}/grubenv \
${EFI_BOOT_PATH}/boot-menu.inc \
${EFI_BOOT_PATH}/efi-secure-boot.inc \
${EFI_FILES_PATH}/grub.cfg \
${EFI_FILES_PATH}/grubenv \
${EFI_FILES_PATH}/boot-menu.inc \
${EFI_FILES_PATH}/efi-secure-boot.inc \
"
19 changes: 9 additions & 10 deletions meta-efi-secure-boot/recipes-bsp/seloader/seloader_git.bb
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,7 @@ COMPATIBLE_HOST = '(i.86|x86_64).*-linux'
PARALLEL_MAKE = ""

inherit deploy user-key-store
require conf/image-uefi.conf

EXTRA_OEMAKE = "\
CROSS_COMPILE="${TARGET_PREFIX}" \
Expand All @@ -48,8 +49,6 @@ EXTRA_OEMAKE = "\
EFI_ARCH:x86 = "ia32"
EFI_ARCH:x86-64 = "x64"

EFI_TARGET = "/boot/efi/EFI/BOOT"

python do_sign() {
sb_sign(d.expand('${B}/Src/Efi/SELoader.efi'), \
d.expand('${B}/Src/Efi/SELoader.efi.signed'), d)
Expand All @@ -63,17 +62,17 @@ do_compile:append() {
}

do_install() {
install -d ${D}${EFI_TARGET}
install -d ${D}${EFI_FILES_PATH}

oe_runmake install EFI_DESTDIR=${D}${EFI_TARGET}
oe_runmake install EFI_DESTDIR=${D}${EFI_FILES_PATH}
# Remove precompiled files, now provided by OVMF
rm -f ${D}${EFI_TARGET}/Hash2DxeCrypto.efi
rm -f ${D}${EFI_TARGET}/Pkcs7VerifyDxe.efi
rm -f ${D}${EFI_FILES_PATH}/Hash2DxeCrypto.efi
rm -f ${D}${EFI_FILES_PATH}/Pkcs7VerifyDxe.efi

if [ x"${UEFI_SB}" = x"1" ]; then
if [ x"${MOK_SB}" != x"1" ]; then
mv "${D}${EFI_TARGET}/SELoader${EFI_ARCH}.efi" \
"${D}${EFI_TARGET}/boot${EFI_ARCH}.efi"
mv "${D}${EFI_FILES_PATH}/SELoader${EFI_ARCH}.efi" \
"${D}${EFI_FILES_PATH}/boot${EFI_ARCH}.efi"
fi
fi
}
Expand All @@ -91,13 +90,13 @@ do_deploy() {
else
SEL_NAME=SELoader
fi
install -m 0600 "${D}${EFI_TARGET}/${SEL_NAME}${EFI_ARCH}.efi" \
install -m 0600 "${D}${EFI_FILES_PATH}/${SEL_NAME}${EFI_ARCH}.efi" \
"${DEPLOYDIR}/${SEL_NAME}${EFI_ARCH}.efi"
}
addtask deploy after do_install before do_build

RDEPENDS:${PN} += "${@bb.utils.contains('DISTRO_FEATURES', 'efi-secure-boot', 'ovmf-pkcs7-efi', '', d)}"

FILES:${PN} += "${EFI_TARGET}"
FILES:${PN} += "${EFI_FILES_PATH}"

SSTATE_ALLOW_OVERLAP_FILES += "${DEPLOY_DIR_IMAGE}/efi-unsigned"
19 changes: 9 additions & 10 deletions meta-efi-secure-boot/recipes-bsp/shim/shim_15.8.bb
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@ SRC_URI:append:x86-64 = "${@bb.utils.contains('DISTRO_FEATURES', 'msft', \
"

inherit deploy user-key-store
require conf/image-uefi.conf

SHIM_DEFAULT_LOADER = "${@'DEFAULT_LOADER=\\\\\\\\\\\\\\\\SELoader${EFI_ARCH}.efi' if d.getVar('UEFI_SB') == '1' and d.getVar('UEFI_SELOADER') == '1' else ''}"

Expand All @@ -47,8 +48,6 @@ EXTRA_OEMAKE = "\
PARALLEL_MAKE = ""
COMPATIBLE_HOST = '(i.86|x86_64).*-linux'

EFI_TARGET = "/boot/efi/EFI/BOOT"

MSFT = "${@bb.utils.contains('DISTRO_FEATURES', 'msft', '1', '0', d)}"

EFI_ARCH:x86 = "ia32"
Expand Down Expand Up @@ -95,15 +94,15 @@ python do_sign() {
addtask sign after do_compile before do_install

do_install() {
install -d "${D}${EFI_TARGET}"
install -d "${D}${EFI_FILES_PATH}"

local shim_dst="${D}${EFI_TARGET}/boot${EFI_ARCH}.efi"
local mm_dst="${D}${EFI_TARGET}/mm${EFI_ARCH}.efi"
local shim_dst="${D}${EFI_FILES_PATH}/boot${EFI_ARCH}.efi"
local mm_dst="${D}${EFI_FILES_PATH}/mm${EFI_ARCH}.efi"
if [ x"${UEFI_SB}" = x"1" -a x"${MOK_SB}" = x"1" ]; then
install -m 0600 "${B}/shim${EFI_ARCH}.efi.signed" "$shim_dst"
install -m 0600 "${B}/mm${EFI_ARCH}.efi.signed" "$mm_dst"
else
install -m 0600 "${B}/shim${EFI_ARCH}.efi" "${D}${EFI_TARGET}/shim${EFI_ARCH}.efi"
install -m 0600 "${B}/shim${EFI_ARCH}.efi" "${D}${EFI_FILES_PATH}/shim${EFI_ARCH}.efi"
install -m 0600 "${B}/mm${EFI_ARCH}.efi" "$mm_dst"
fi
}
Expand All @@ -118,12 +117,12 @@ do_deploy() {
"${DEPLOYDIR}/efi-unsigned/mm${EFI_ARCH}.efi"

if [ x"${UEFI_SB}" = x"1" -a x"${MOK_SB}" = x"1" ]; then
install -m 0600 "${D}${EFI_TARGET}/boot${EFI_ARCH}.efi" "${DEPLOYDIR}"
install -m 0600 "${D}${EFI_FILES_PATH}/boot${EFI_ARCH}.efi" "${DEPLOYDIR}"
else
install -m 0600 "${D}${EFI_TARGET}/shim${EFI_ARCH}.efi" "${DEPLOYDIR}"
install -m 0600 "${D}${EFI_FILES_PATH}/shim${EFI_ARCH}.efi" "${DEPLOYDIR}"
fi
install -m 0600 "${D}${EFI_TARGET}/mm${EFI_ARCH}.efi" "${DEPLOYDIR}"
install -m 0600 "${D}${EFI_FILES_PATH}/mm${EFI_ARCH}.efi" "${DEPLOYDIR}"
}
addtask deploy after do_install before do_build

FILES:${PN} = "${EFI_TARGET}"
FILES:${PN} = "${EFI_FILES_PATH}"
17 changes: 8 additions & 9 deletions meta-efi-secure-boot/recipes-core/ovmf/ovmf-efi-secure-boot.inc
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
inherit user-key-store
require conf/image-uefi.conf

PACKAGECONFIG:append = " secureboot"

Expand All @@ -12,17 +13,15 @@ do_compile:class-target:append() {
fi
}

EFI_TARGET = "/boot/efi/EFI/BOOT"

do_install:class-target:append() {
if ${@bb.utils.contains('PACKAGECONFIG', 'secureboot', 'true', 'false', d)}; then
mkdir -p ${D}${EFI_TARGET}
mkdir -p ${D}${EFI_FILES_PATH}
if [ x"${UEFI_SB}" = x"1" ]; then
install ${WORKDIR}/ovmf/Hash2DxeCrypto.efi.signed ${D}${EFI_TARGET}/Hash2DxeCrypto.efi
install ${WORKDIR}/ovmf/Pkcs7VerifyDxe.efi.signed ${D}${EFI_TARGET}/Pkcs7VerifyDxe.efi
install ${WORKDIR}/ovmf/Hash2DxeCrypto.efi.signed ${D}${EFI_FILES_PATH}/Hash2DxeCrypto.efi
install ${WORKDIR}/ovmf/Pkcs7VerifyDxe.efi.signed ${D}${EFI_FILES_PATH}/Pkcs7VerifyDxe.efi
else
install ${WORKDIR}/ovmf/Hash2DxeCrypto.efi ${D}${EFI_TARGET}/Hash2DxeCrypto.efi
install ${WORKDIR}/ovmf/Pkcs7VerifyDxe.efi ${D}${EFI_TARGET}/Pkcs7VerifyDxe.efi
install ${WORKDIR}/ovmf/Hash2DxeCrypto.efi ${D}${EFI_FILES_PATH}/Hash2DxeCrypto.efi
install ${WORKDIR}/ovmf/Pkcs7VerifyDxe.efi ${D}${EFI_FILES_PATH}/Pkcs7VerifyDxe.efi
fi
fi
}
Expand Down Expand Up @@ -54,6 +53,6 @@ PACKAGES += " \
"

FILES:ovmf-pkcs7-efi += " \
${EFI_TARGET}/Hash2DxeCrypto.efi \
${EFI_TARGET}/Pkcs7VerifyDxe.efi \
${EFI_FILES_PATH}/Hash2DxeCrypto.efi \
${EFI_FILES_PATH}/Pkcs7VerifyDxe.efi \
"

0 comments on commit a787846

Please sign in to comment.