summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xscripts/build/binary_grub-efi38
1 files changed, 20 insertions, 18 deletions
diff --git a/scripts/build/binary_grub-efi b/scripts/build/binary_grub-efi
index ab6630b3b..a77a06763 100755
--- a/scripts/build/binary_grub-efi
+++ b/scripts/build/binary_grub-efi
@@ -157,14 +157,16 @@ gen_efi_boot_img(){
local netboot_prefix="\$3"
local outdir="grub-efi-temp-\${platform}"
"\${LIVE_BUILD_PATH}/efi-image" "${_CHROOT_DIR}/\$outdir" "\$platform" "\$efi_name" "\$netboot_prefix"
- mkdir -p ${_CHROOT_DIR}/grub-efi-temp/efi/boot
- mcopy -n -i ${_CHROOT_DIR}/\$outdir/efi.img '::efi/boot/boot*.efi' ${_CHROOT_DIR}/grub-efi-temp/efi/boot
+ mkdir -p ${_CHROOT_DIR}/grub-efi-temp/EFI/boot
+ mcopy -n -i ${_CHROOT_DIR}/\$outdir/efi.img '::efi/boot/boot*.efi' ${_CHROOT_DIR}/grub-efi-temp/EFI/boot
cp -r "${_CHROOT_DIR}"/\$outdir/* "${_CHROOT_DIR}/grub-efi-temp/"
# Secure Boot support:
+ # - create the EFI directory in the ESP with uppercase letters to make
+ # certain firmwares (eg: TianoCore) happy
# - use shim as the boot<arch>.efi that gets loaded first by the firmware
# - drop a grub.cfg (same reason as below) in the cfg directory as configured
- # by the signed grub efi binary creation. At the moment that is efi/debian
+ # by the signed grub efi binary creation. At the moment that is EFI/debian
# as set by grub2/debian/build-efi-images and cannot be changed without
# rebuilding grub2
# - the source paths are taken from shim-signed:
@@ -175,11 +177,11 @@ gen_efi_boot_img(){
if [ -r ${_CHROOT_DIR}/usr/lib/grub/\$platform-signed/grub\$efi_name.efi.signed -a \
-r ${_CHROOT_DIR}/usr/lib/shim/shim\$efi_name.efi.signed -a \
"${LB_UEFI_SECURE_BOOT}" != "disable" ]; then
- mkdir -p ${_CHROOT_DIR}/grub-efi-temp/efi/debian
+ mkdir -p ${_CHROOT_DIR}/grub-efi-temp/EFI/debian
cp ${_CHROOT_DIR}/usr/lib/grub/\$platform-signed/grub\$efi_name.efi.signed \
- ${_CHROOT_DIR}/grub-efi-temp/efi/boot/grub\$efi_name.efi
+ ${_CHROOT_DIR}/grub-efi-temp/EFI/boot/grub\$efi_name.efi
cp ${_CHROOT_DIR}/usr/lib/shim/shim\$efi_name.efi.signed \
- ${_CHROOT_DIR}/grub-efi-temp/efi/boot/boot\$efi_name.efi
+ ${_CHROOT_DIR}/grub-efi-temp/EFI/boot/boot\$efi_name.efi
fi
}
@@ -230,35 +232,35 @@ EOF
# the case of a multi-arch amd64/i386 image
size=0
-for file in ${_CHROOT_DIR}/grub-efi-temp/efi/boot/*.efi \
+for file in ${_CHROOT_DIR}/grub-efi-temp/EFI/boot/*.efi \
${_CHROOT_DIR}/grub-efi-temp-cfg/grub.cfg; do
size=\$((\$size + \$(stat -c %s "\$file")))
done
-# directories: efi efi/boot boot boot/grub
+# directories: EFI EFI/boot boot boot/grub
size=\$((\$size + 4096 * 4))
-# efi/debian and additional grub.cfg
-if [ -d ${_CHROOT_DIR}/grub-efi-temp/efi/debian ]; then
+# EFI/debian and additional grub.cfg
+if [ -d ${_CHROOT_DIR}/grub-efi-temp/EFI/debian ]; then
size=\$((\$size + 4096))
size=\$((\$size + \$(stat -c %s "${_CHROOT_DIR}/grub-efi-temp-cfg/grub.cfg")))
cp ${_CHROOT_DIR}/grub-efi-temp-cfg/grub.cfg \
- ${_CHROOT_DIR}/grub-efi-temp/efi/debian
+ ${_CHROOT_DIR}/grub-efi-temp/EFI/debian
fi
blocks=\$(((\$size / 1024 + 55) / 32 * 32 ))
rm -f ${_CHROOT_DIR}/grub-efi-temp/boot/grub/efi.img
mkfs.msdos -C "${_CHROOT_DIR}/grub-efi-temp/boot/grub/efi.img" \$blocks >/dev/null
-mmd -i "${_CHROOT_DIR}/grub-efi-temp/boot/grub/efi.img" ::efi
-mmd -i "${_CHROOT_DIR}/grub-efi-temp/boot/grub/efi.img" ::efi/boot
-mcopy -o -i "${_CHROOT_DIR}/grub-efi-temp/boot/grub/efi.img" ${_CHROOT_DIR}/grub-efi-temp/efi/boot/*.efi \
- "::efi/boot"
+mmd -i "${_CHROOT_DIR}/grub-efi-temp/boot/grub/efi.img" ::EFI
+mmd -i "${_CHROOT_DIR}/grub-efi-temp/boot/grub/efi.img" ::EFI/boot
+mcopy -o -i "${_CHROOT_DIR}/grub-efi-temp/boot/grub/efi.img" ${_CHROOT_DIR}/grub-efi-temp/EFI/boot/*.efi \
+ "::EFI/boot"
-if [ -d ${_CHROOT_DIR}/grub-efi-temp/efi/debian ]; then
- mmd -i "${_CHROOT_DIR}/grub-efi-temp/boot/grub/efi.img" ::efi/debian
+if [ -d ${_CHROOT_DIR}/grub-efi-temp/EFI/debian ]; then
+ mmd -i "${_CHROOT_DIR}/grub-efi-temp/boot/grub/efi.img" ::EFI/debian
mcopy -o -i "${_CHROOT_DIR}/grub-efi-temp/boot/grub/efi.img" \
- ${_CHROOT_DIR}/grub-efi-temp-cfg/grub.cfg "::efi/debian"
+ ${_CHROOT_DIR}/grub-efi-temp-cfg/grub.cfg "::EFI/debian"
fi
mmd -i "${_CHROOT_DIR}/grub-efi-temp/boot/grub/efi.img" ::boot