diff --git a/package/mender-grubenv/Config.in b/package/mender-grubenv/Config.in index 38da5b84fe..f27eb09e34 100644 --- a/package/mender-grubenv/Config.in +++ b/package/mender-grubenv/Config.in @@ -3,6 +3,7 @@ config BR2_PACKAGE_MENDER_GRUBENV depends on BR2_TARGET_GRUB2_ARCH_SUPPORTS depends on BR2_PACKAGE_MENDER # runtime depends on BR2_TARGET_GRUB2 + depends on !(BR2_TARGET_GRUB2_HAS_LEGACY_BOOT && BR2_TARGET_GRUB2_HAS_EFI_BOOT) help Contains the boot scripts and tools used by Mender to integrate with the GRUB bootloader. @@ -34,3 +35,7 @@ comment "mender-grubenv needs a grub2 bootloader" depends on BR2_TARGET_GRUB2_ARCH_SUPPORTS depends on BR2_PACKAGE_MENDER depends on !BR2_TARGET_GRUB2 + +comment "mender-grubenv does not support both legacy and EFI grub2 bootloaders at the same time" + depends on BR2_PACKAGE_MENDER + depends on BR2_TARGET_GRUB2_HAS_LEGACY_BOOT && BR2_TARGET_GRUB2_HAS_EFI_BOOT diff --git a/package/mender-grubenv/mender-grubenv.mk b/package/mender-grubenv/mender-grubenv.mk index d7bdcc99eb..6b8800e1de 100644 --- a/package/mender-grubenv/mender-grubenv.mk +++ b/package/mender-grubenv/mender-grubenv.mk @@ -13,7 +13,7 @@ MENDER_GRUBENV_LICENSE_FILES = LICENSE MENDER_GRUBENV_DEPENDENCIES = grub2 MENDER_GRUBENV_INSTALL_IMAGES = YES -ifeq ($(BR2_TARGET_GRUB2_I386_PC)$(BR2_TARGET_GRUB2_ARM_UBOOT),y) +ifeq ($(BR2_TARGET_GRUB_LEGACY),y) MENDER_GRUBENV_ENV_DIR = /boot/grub else MENDER_GRUBENV_ENV_DIR = /boot/EFI/BOOT @@ -31,14 +31,41 @@ MENDER_GRUBENV_DEFINES = \ # These grub modules must be built in for the grub scripts to work properly. # Without them, the system will not boot. MENDER_GRUBENV_MANDATORY_MODULES = loadenv hashsum echo halt gcry_sha256 test regexp -MENDER_GRUBENV_MODULES_MISSING = \ - $(filter-out $(call qstrip,$(BR2_TARGET_GRUB2_BUILTIN_MODULES)),\ + +ifeq ($(BR2_TARGET_GRUB2_HAS_LEGACY_BOOT),y) +MENDER_GRUBENV_MODULES_MISSING_PC = \ + $(filter-out $(call qstrip,$(BR2_TARGET_GRUB2_BUILTIN_MODULES_PC)),\ $(MENDER_GRUBENV_MANDATORY_MODULES)) +define MENDER_GRUBENV_INSTALL_I386_CFG + mkdir -p $(BINARIES_DIR)/boot-part/grub + cp -dpfr $(TARGET_DIR)$(MENDER_GRUBENV_ENV_DIR)/grub.cfg \ + $(TARGET_DIR)$(MENDER_GRUBENV_ENV_DIR)/mender_grubenv* \ + $(BINARIES_DIR)/boot-part/grub +endef +endif # BR2_TARGET_GRUB2_HAS_LEGACY_BOOT + +ifeq ($(BR2_TARGET_GRUB2_HAS_EFI_BOOT),y) +MENDER_GRUBENV_MODULES_MISSING_EFI = \ + $(filter-out $(call qstrip,$(BR2_TARGET_GRUB2_BUILTIN_MODULES_EFI)),\ + $(MENDER_GRUBENV_MANDATORY_MODULES)) + +define MENDER_GRUBENV_INSTALL_EFI_CFG + mkdir -p $(BINARIES_DIR)/efi-part/EFI/BOOT + cp -dpfr $(TARGET_DIR)$(MENDER_GRUBENV_ENV_DIR)/grub.cfg \ + $(TARGET_DIR)$(MENDER_GRUBENV_ENV_DIR)/mender_grubenv* \ + $(BINARIES_DIR)/efi-part/EFI/BOOT +endef +endif # BR2_TARGET_GRUB2_HAS_EFI_BOOT + ifeq ($(BR2_PACKAGE_MENDER_GRUBENV)$(BR_BUILDING),yy) -ifneq ($(MENDER_GRUBENV_MODULES_MISSING),) -$(error The following missing grub2 modules must be enabled for mender-grubenv \ - to work: $(MENDER_GRUBENV_MODULES_MISSING)) +ifneq ($(MENDER_GRUBENV_MODULES_MISSING_EFI),) +$(error The following missing grub2 efi modules must be enabled for mender-grubenv \ + to work: $(MENDER_GRUBENV_MODULES_MISSING_EFI)) +endif +ifneq ($(MENDER_GRUBENV_MODULES_MISSING_PC),) +$(error The following missing grub2 pc modules must be enabled for mender-grubenv \ + to work: $(MENDER_GRUBENV_MODULES_MISSING_PC)) endif endif @@ -54,21 +81,9 @@ define MENDER_GRUBENV_INSTALL_TARGET_CMDS $(MENDER_GRUBENV_MAKE_ENV) $(MAKE) DESTDIR=$(TARGET_DIR) -C $(@D) install endef -# Overwrite the default grub2 config files with the ones in this package. -ifeq ($(BR2_TARGET_GRUB2_I386_PC)$(BR2_TARGET_GRUB2_ARM_UBOOT),y) define MENDER_GRUBENV_INSTALL_IMAGES_CMDS - mkdir -p $(BINARIES_DIR)/boot-part/grub - cp -dpfr $(TARGET_DIR)/boot/grub/grub.cfg \ - $(TARGET_DIR)/boot/grub/mender_grubenv* \ - $(BINARIES_DIR)/boot-part/grub + $(MENDER_GRUBENV_INSTALL_I386_CFG) + $(MENDER_GRUBENV_INSTALL_EFI_CFG) endef -else -define MENDER_GRUBENV_INSTALL_IMAGES_CMDS - mkdir -p $(BINARIES_DIR)/efi-part/EFI/BOOT - cp -dpfr $(TARGET_DIR)/boot/EFI/BOOT/grub.cfg \ - $(TARGET_DIR)/boot/EFI/BOOT/mender_grubenv* \ - $(BINARIES_DIR)/efi-part/EFI/BOOT -endef -endif $(eval $(generic-package))