2 # Build a version of grub capable of decrypting a luks volume with a SEV
5 # Copyright (C) 2020 James Bottomley, IBM Corporation.
7 # SPDX-License-Identifier: BSD-2-Clause-Patent
15 # remove the intermediates
16 for f
in disk.fat grub-bootstrap.cfg
; do
17 rm -f -- "${basedir}/$f"
19 if [ $remove_efi -eq 1 ]; then
20 rm -f -- "${basedir}/grub.efi"
49 basedir
=$
(dirname -- "$0")
51 # don't run a build if grub.efi exists and is newer than the config files
52 if [ -e "${basedir}/grub.efi" ] && \
53 [ "${basedir}/grub.efi" -nt "${basedir}/grub.cfg" ] && \
54 [ "${basedir}/grub.efi" -nt "${basedir}/grub.sh" ]; then
56 echo "preserving existing grub.efi" >&2
61 # different distributions have different names for grub-mkimage, so
62 # search all the known ones
65 for b
in grub2-mkimage grub-mkimage
; do
66 if which "$b" > /dev
/null
2>&1; then
71 if [ -z "$mkimage" ]; then
72 echo "Can't find grub mkimage" >&2
76 # GRUB's rescue parser doesn't understand 'if'.
77 echo 'normal (memdisk)/grub.cfg' > "${basedir}/grub-bootstrap.cfg"
79 # Now build a memdisk with the correct grub.cfg
80 rm -f -- "${basedir}/disk.fat"
81 mkfs.msdos
-C -- "${basedir}/disk.fat" 64
82 mcopy
-i "${basedir}/disk.fat" -- "${basedir}/grub.cfg" ::grub.cfg
85 ${mkimage} -O x86_64-efi \
87 -c "${basedir}/grub-bootstrap.cfg" \
88 -m "${basedir}/disk.fat" \
89 -o "${basedir}/grub.efi" \
93 echo "grub.efi generated in ${basedir}"