From 62de5f53a816b2c1185b7bb49cceccf1afb5dafc Mon Sep 17 00:00:00 2001 From: Stefan Agner Date: Wed, 16 Mar 2022 15:38:18 +0100 Subject: [PATCH] Improve OS 8 GRUB upgrade (#1793) * Drop unnecessary device tree utilities They have been used for Barebox which uses device tree to configure the state storage and its location. With the change to GRUB the tools are no longer required. * Determine manual GRUB update depending on installed tools Manually update the GRUB environment if no grub environment tools are installed. This makes a upgrade work even after a previous downgrade (in that case a grubenv file might still be present in the UEFI ESP). --- buildroot-external/configs/generic_aarch64_defconfig | 1 - buildroot-external/configs/generic_x86_64_defconfig | 1 - buildroot-external/configs/ova_defconfig | 1 - buildroot-external/ota/rauc-hook | 8 +++++--- 4 files changed, 5 insertions(+), 6 deletions(-) diff --git a/buildroot-external/configs/generic_aarch64_defconfig b/buildroot-external/configs/generic_aarch64_defconfig index 2851b654e..9b1b288c7 100644 --- a/buildroot-external/configs/generic_aarch64_defconfig +++ b/buildroot-external/configs/generic_aarch64_defconfig @@ -78,7 +78,6 @@ BR2_PACKAGE_LINUX_FIRMWARE_RTL_87XX_BT=y BR2_PACKAGE_LINUX_FIRMWARE_RTL_88XX_BT=y BR2_PACKAGE_LINUX_FIRMWARE_USB_NIC_RTL_815X=y BR2_PACKAGE_LINUX_FIRMWARE_USB_SERIAL_TI=y -BR2_PACKAGE_DT_UTILS=y BR2_PACKAGE_GPTFDISK=y BR2_PACKAGE_GPTFDISK_SGDISK=y BR2_PACKAGE_CA_CERTIFICATES=y diff --git a/buildroot-external/configs/generic_x86_64_defconfig b/buildroot-external/configs/generic_x86_64_defconfig index 3658d54bc..4f9ad9897 100644 --- a/buildroot-external/configs/generic_x86_64_defconfig +++ b/buildroot-external/configs/generic_x86_64_defconfig @@ -63,7 +63,6 @@ BR2_PACKAGE_LINUX_FIRMWARE_RTL_87XX_BT=y BR2_PACKAGE_LINUX_FIRMWARE_RTL_88XX_BT=y BR2_PACKAGE_LINUX_FIRMWARE_USB_NIC_RTL_815X=y BR2_PACKAGE_LINUX_FIRMWARE_USB_SERIAL_TI=y -BR2_PACKAGE_DT_UTILS=y BR2_PACKAGE_GPTFDISK=y BR2_PACKAGE_GPTFDISK_SGDISK=y BR2_PACKAGE_CA_CERTIFICATES=y diff --git a/buildroot-external/configs/ova_defconfig b/buildroot-external/configs/ova_defconfig index d12596c60..6c15c992b 100644 --- a/buildroot-external/configs/ova_defconfig +++ b/buildroot-external/configs/ova_defconfig @@ -64,7 +64,6 @@ BR2_PACKAGE_LINUX_FIRMWARE_RTL_87XX_BT=y BR2_PACKAGE_LINUX_FIRMWARE_RTL_88XX_BT=y BR2_PACKAGE_LINUX_FIRMWARE_USB_NIC_RTL_815X=y BR2_PACKAGE_LINUX_FIRMWARE_USB_SERIAL_TI=y -BR2_PACKAGE_DT_UTILS=y BR2_PACKAGE_GPTFDISK=y BR2_PACKAGE_GPTFDISK_SGDISK=y BR2_PACKAGE_CA_CERTIFICATES=y diff --git a/buildroot-external/ota/rauc-hook b/buildroot-external/ota/rauc-hook index 68ae4018b..e003cf6a9 100755 --- a/buildroot-external/ota/rauc-hook +++ b/buildroot-external/ota/rauc-hook @@ -64,10 +64,12 @@ post_install_kernel() { systemctl start mnt-boot.mount fi - # If grubenv is missing, initialize with boot order which will try the right - # boot slot first - if [ -d "${BOOT_MNT}"/EFI/BOOT/ ] && [ ! -f "${BOOT_MNT}"/EFI/BOOT/grubenv ]; then + # OS 7 -> 8 upgrade path: + # If grub is installed, and the current system lacks GRUB environment + # manipulation tools, manually create a grubenv for the right boot slot + if [ -f "${BOOT_MNT}"/EFI/BOOT/grub.cfg ] && ! command -v grub-editenv > /dev/null; then cp -f "${BOOT_MNT}/EFI/BOOT/grubenv-${RAUC_SLOT_BOOTNAME}" "${BOOT_MNT}"/EFI/BOOT/grubenv + echo "Copied default GRUB environment grubenv-${RAUC_SLOT_BOOTNAME} as grubenv." fi }