From 14f1c4f735471dd2fb683ec96c79988f6003a174 Mon Sep 17 00:00:00 2001 From: Jeremi Piotrowski Date: Thu, 25 Apr 2024 10:22:58 +0000 Subject: [PATCH 1/4] grub_install: Remove core.{elf,efi} after copying We currently carry multiple copies of the same grub core.elf or core.efi on the boot partition. Save some space by removing duplicates that are never used at runtime. CPIO build needed to be adapted because it publishes grub efi files. Signed-off-by: Jeremi Piotrowski --- build_library/grub_install.sh | 9 +++++---- build_library/vm_image_util.sh | 8 ++++---- 2 files changed, 9 insertions(+), 8 deletions(-) diff --git a/build_library/grub_install.sh b/build_library/grub_install.sh index d6f186f48b..6661e021d8 100755 --- a/build_library/grub_install.sh +++ b/build_library/grub_install.sh @@ -204,8 +204,9 @@ case "${FLAGS_target}" in sudo sbsign --key /usr/share/sb_keys/shim.key \ --cert /usr/share/sb_keys/shim.pem \ "${ESP_DIR}/${GRUB_DIR}/${CORE_NAME}" - sudo cp "${ESP_DIR}/${GRUB_DIR}/${CORE_NAME}.signed" \ + sudo mv "${ESP_DIR}/${GRUB_DIR}/${CORE_NAME}.signed" \ "${ESP_DIR}/EFI/boot/grubx64.efi" + sudo rm "${ESP_DIR}/${GRUB_DIR}/${CORE_NAME}" # Sign the mokmanager(mm) with the shim-embedded key sudo sbsign --key /usr/share/sb_keys/shim.key \ --cert /usr/share/sb_keys/shim.pem \ @@ -218,7 +219,7 @@ case "${FLAGS_target}" in --output "${ESP_DIR}/EFI/boot/bootx64.efi" \ "/usr/lib/shim/shim.efi" else - sudo cp "${ESP_DIR}/${GRUB_DIR}/${CORE_NAME}" \ + sudo mv "${ESP_DIR}/${GRUB_DIR}/${CORE_NAME}" \ "${ESP_DIR}/EFI/boot/grubx64.efi" sudo cp "/usr/lib/shim/shim.efi" \ "${ESP_DIR}/EFI/boot/bootx64.efi" @@ -238,7 +239,7 @@ case "${FLAGS_target}" in x86_64-xen) info "Installing default x86_64 Xen bootloader." sudo mkdir -p "${ESP_DIR}/xen" "${ESP_DIR}/boot/grub" - sudo cp "${ESP_DIR}/${GRUB_DIR}/${CORE_NAME}" \ + sudo mv "${ESP_DIR}/${GRUB_DIR}/${CORE_NAME}" \ "${ESP_DIR}/xen/pvboot-x86_64.elf" sudo cp "${BUILD_LIBRARY_DIR}/menu.lst" \ "${ESP_DIR}/boot/grub/menu.lst" @@ -247,7 +248,7 @@ case "${FLAGS_target}" in info "Installing default arm64 UEFI bootloader." sudo mkdir -p "${ESP_DIR}/EFI/boot" #FIXME(andrejro): shim not ported to aarch64 - sudo cp "${ESP_DIR}/${GRUB_DIR}/${CORE_NAME}" \ + sudo mv "${ESP_DIR}/${GRUB_DIR}/${CORE_NAME}" \ "${ESP_DIR}/EFI/boot/bootaa64.efi" if [[ -n "${FLAGS_copy_efi_grub}" ]]; then # copying from vfat so ignore permissions diff --git a/build_library/vm_image_util.sh b/build_library/vm_image_util.sh index cd0a3745a5..b067362fc9 100644 --- a/build_library/vm_image_util.sh +++ b/build_library/vm_image_util.sh @@ -728,13 +728,13 @@ _write_cpio_disk() { # Pull the kernel and loader out of the filesystem ln -fs flatcar_production_image.vmlinuz "${dst_dir}/${vmlinuz_name}" - local grub_arch + local efi_file case $BOARD in - amd64-usr) grub_arch="x86_64-efi" ;; - arm64-usr) grub_arch="arm64-efi" ;; + amd64-usr) efi_file="grubx64.efi" ;; + arm64-usr) efi_file="bootaa64.efi" ;; esac - cp "${base_dir}/boot/flatcar/grub/${grub_arch}/core.efi" "${dst_dir}/${grub_name}" + cp "${base_dir}/boot/EFI/boot/${efi_file}" "${dst_dir}/${grub_name}" VM_GENERATED_FILES+=( "${dst_dir}/${vmlinuz_name}" "${dst_dir}/${grub_name}" ) } From 0624d8cc4ad279b60fc5461bb865e21b04f9c117 Mon Sep 17 00:00:00 2001 From: Jeremi Piotrowski Date: Thu, 25 Apr 2024 10:30:31 +0000 Subject: [PATCH 2/4] grub_install: Remove core grub modules from EFI partition Since we build them into the grub executable, they are not needed on disk. The only case I am unsure of is legacy BIOS boot, so left those on disk. Signed-off-by: Jeremi Piotrowski Signed-off-by: Adrian Vladu --- build_library/grub_install.sh | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/build_library/grub_install.sh b/build_library/grub_install.sh index 6661e021d8..6426dea9f0 100755 --- a/build_library/grub_install.sh +++ b/build_library/grub_install.sh @@ -183,6 +183,12 @@ sudo grub-mkimage \ --output "${ESP_DIR}/${GRUB_DIR}/${CORE_NAME}" \ "${CORE_MODULES[@]}" +if [[ "${FLAGS_target}" != i386-pc ]]; then + for mod in "${CORE_MODULES[@]}"; do + sudo rm "${ESP_DIR}/${GRUB_DIR}/${mod}.mod" + done +fi + # Now target specific steps to make the system bootable case "${FLAGS_target}" in i386-pc) From e7d9faadc87c965f15e6267d2fc5e5a2f5424e41 Mon Sep 17 00:00:00 2001 From: Adrian Vladu Date: Thu, 20 Jun 2024 15:05:37 +0300 Subject: [PATCH 3/4] grub_install: Remove core grub modules from EFI partition for i386-pc The image also boots on Hyper-V Generation 1 VM (BIOS) if the modules are removed. Signed-off-by: Adrian Vladu --- build_library/grub_install.sh | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/build_library/grub_install.sh b/build_library/grub_install.sh index 6426dea9f0..6149131760 100755 --- a/build_library/grub_install.sh +++ b/build_library/grub_install.sh @@ -183,11 +183,9 @@ sudo grub-mkimage \ --output "${ESP_DIR}/${GRUB_DIR}/${CORE_NAME}" \ "${CORE_MODULES[@]}" -if [[ "${FLAGS_target}" != i386-pc ]]; then - for mod in "${CORE_MODULES[@]}"; do - sudo rm "${ESP_DIR}/${GRUB_DIR}/${mod}.mod" - done -fi +for mod in "${CORE_MODULES[@]}"; do + sudo rm "${ESP_DIR}/${GRUB_DIR}/${mod}.mod" +done # Now target specific steps to make the system bootable case "${FLAGS_target}" in From 6fbfa5c034277db9849280810a9fbb58bc4b3b58 Mon Sep 17 00:00:00 2001 From: Adrian Vladu Date: Fri, 21 Jun 2024 11:09:32 +0300 Subject: [PATCH 4/4] grub_install: add changelog for the file removals Signed-off-by: Adrian Vladu --- changelog/changes/2024-06-21-remove-unused-grub-files.md | 1 + 1 file changed, 1 insertion(+) create mode 100644 changelog/changes/2024-06-21-remove-unused-grub-files.md diff --git a/changelog/changes/2024-06-21-remove-unused-grub-files.md b/changelog/changes/2024-06-21-remove-unused-grub-files.md new file mode 100644 index 0000000000..f4bd5a0df7 --- /dev/null +++ b/changelog/changes/2024-06-21-remove-unused-grub-files.md @@ -0,0 +1 @@ +- Removed unused grub executable duplicate files and removed grub modules that are already assembled in the grub executable ([#1955](https://github.com/flatcar/scripts/pull/1955)).