81 | 81 |
set +e
|
82 | 82 |
Install_package
|
83 | 83 |
set -e
|
84 | |
Check_installed chroot /usr/lib/grub/${_SB_EFI_PLATFORM}-efi-signed/grub${_SB_EFI_NAME}.efi.signed \
|
|
84 |
Check_installed chroot /usr/lib/grub/${_SB_EFI_PLATFORM}-efi-signed/gcd${_SB_EFI_NAME}.efi.signed \
|
85 | 85 |
grub-efi-${_SB_EFI_DEB}-signed
|
86 | 86 |
_GRUB_INSTALL_STATUS="${INSTALL_STATUS}"
|
87 | 87 |
Check_installed chroot /usr/lib/shim/shim${_SB_EFI_NAME}.efi.signed \
|
|
95 | 95 |
fi
|
96 | 96 |
;;
|
97 | 97 |
enable)
|
98 | |
Check_package chroot /usr/lib/grub/${_SB_EFI_PLATFORM}-efi-signed/grub${_SB_EFI_NAME}.efi.signed \
|
|
98 |
Check_package chroot /usr/lib/grub/${_SB_EFI_PLATFORM}-efi-signed/gcd${_SB_EFI_NAME}.efi.signed \
|
99 | 99 |
grub-efi-${_SB_EFI_DEB}-signed
|
100 | 100 |
Check_package chroot /usr/lib/shim/shim${_SB_EFI_NAME}.efi.signed \
|
101 | 101 |
shim-signed
|
|
173 | 173 |
# and grub-efi-amd64-signed, currently in Ubuntu:
|
174 | 174 |
# https://packages.ubuntu.com/xenial/amd64/grub-efi-amd64-signed/filelist
|
175 | 175 |
# https://packages.ubuntu.com/bionic/arm64/grub-efi-arm64-signed/filelist
|
176 | |
if [ -r ${_CHROOT_DIR}/usr/lib/grub/\$platform-signed/grub\$efi_name.efi.signed -a \
|
|
176 |
# E.g., gcdx64.efi.signed is the boot loader for removable device, like CD or
|
|
177 |
# USB flash drive, while grubx64.efi.signed is for hard drive.
|
|
178 |
# Therefore here gcdx64.efi.signed is used for amd64 and gcdaa64.efi.signed is
|
|
179 |
# for arm64.
|
|
180 |
if [ -r ${_CHROOT_DIR}/usr/lib/grub/\$platform-signed/gcd\$efi_name.efi.signed -a \
|
177 | 181 |
-r ${_CHROOT_DIR}/usr/lib/shim/shim\$efi_name.efi.signed -a \
|
178 | 182 |
"${LB_UEFI_SECURE_BOOT}" != "disable" ]; then
|
179 | |
mkdir -p "${_CHROOT_DIR}/grub-efi-temp/EFI/\$EFI_VENDOR"
|
180 | |
cp ${_CHROOT_DIR}/usr/lib/grub/\$platform-signed/grub\$efi_name.efi.signed \
|
|
183 |
cp ${_CHROOT_DIR}/usr/lib/grub/\$platform-signed/gcd\$efi_name.efi.signed \
|
181 | 184 |
${_CHROOT_DIR}/grub-efi-temp/EFI/boot/grub\$efi_name.efi
|
182 | 185 |
cp ${_CHROOT_DIR}/usr/lib/shim/shim\$efi_name.efi.signed \
|
183 | 186 |
${_CHROOT_DIR}/grub-efi-temp/EFI/boot/boot\$efi_name.efi
|
184 | 187 |
fi
|
185 | 188 |
}
|
186 | |
|
187 | |
# The EFI vendor, used by Grub to set the directory in the monolithic image, depends
|
188 | |
# on the distro vendor set at Grub's build time. It will be added to the package metadata.
|
189 | |
EFI_VENDOR="\$(dpkg-query -f='\${Efi-Vendor}' -W grub-efi-${_SB_EFI_DEB}-bin)"
|
190 | |
# If it's missing, fallback to the previous usage of just "debian".
|
191 | |
if [ -z "$EFI_VENDOR" ]; then
|
192 | |
EFI_VENDOR="debian"
|
193 | |
fi
|
194 | 189 |
|
195 | 190 |
PRE_EFI_IMAGE_PATH="${PATH}"
|
196 | 191 |
if [ ! -e "${LIVE_BUILD}" ] ; then
|
|
247 | 242 |
# directories: EFI EFI/boot boot boot/grub
|
248 | 243 |
size=\$((\$size + 4096 * 4))
|
249 | 244 |
|
250 | |
# EFI/\$EFI_VENDOR and additional grub.cfg
|
251 | |
if [ -d "${_CHROOT_DIR}/grub-efi-temp/EFI/\$EFI_VENDOR" ]; then
|
252 | |
size=\$((\$size + 4096))
|
253 | |
size=\$((\$size + \$(stat -c %s "${_CHROOT_DIR}/grub-efi-temp-cfg/grub.cfg")))
|
254 | |
cp ${_CHROOT_DIR}/grub-efi-temp-cfg/grub.cfg \
|
255 | |
"${_CHROOT_DIR}/grub-efi-temp/EFI/\$EFI_VENDOR"
|
256 | |
fi
|
257 | |
|
258 | 245 |
blocks=\$(((\$size / 1024 + 55) / 32 * 32 ))
|
259 | 246 |
|
260 | 247 |
rm -f ${_CHROOT_DIR}/grub-efi-temp/boot/grub/efi.img
|
|
263 | 250 |
mmd -i "${_CHROOT_DIR}/grub-efi-temp/boot/grub/efi.img" ::EFI/boot
|
264 | 251 |
mcopy -o -i "${_CHROOT_DIR}/grub-efi-temp/boot/grub/efi.img" ${_CHROOT_DIR}/grub-efi-temp/EFI/boot/*.efi \
|
265 | 252 |
"::EFI/boot"
|
266 | |
|
267 | |
if [ -d "${_CHROOT_DIR}/grub-efi-temp/EFI/\$EFI_VENDOR" ]; then
|
268 | |
mmd -i "${_CHROOT_DIR}/grub-efi-temp/boot/grub/efi.img" "::EFI/\$EFI_VENDOR"
|
269 | |
mcopy -o -i "${_CHROOT_DIR}/grub-efi-temp/boot/grub/efi.img" \
|
270 | |
${_CHROOT_DIR}/grub-efi-temp-cfg/grub.cfg "::EFI/\$EFI_VENDOR"
|
271 | |
fi
|
272 | 253 |
|
273 | 254 |
mmd -i "${_CHROOT_DIR}/grub-efi-temp/boot/grub/efi.img" ::boot
|
274 | 255 |
mmd -i "${_CHROOT_DIR}/grub-efi-temp/boot/grub/efi.img" ::boot/grub
|