From cf5f01a8be90d5c96e57f03fef1e352e04b04bf9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marcus=20Sch=C3=A4fer?= Date: Fri, 11 Apr 2025 10:47:44 +0200 Subject: [PATCH] Update LOADER_TYPE setup for grub If the bootloader attribute: bls is set to true, make sure the LOADER_TYPE changes to grub2-bls. This is related to Issue #2773 --- kiwi/bootloader/config/grub2.py | 8 ++++++-- test/unit/bootloader/config/grub2_test.py | 16 ++++++++++++++++ 2 files changed, 22 insertions(+), 2 deletions(-) diff --git a/kiwi/bootloader/config/grub2.py b/kiwi/bootloader/config/grub2.py index e630b7b8f22..6431cdcc395 100644 --- a/kiwi/bootloader/config/grub2.py +++ b/kiwi/bootloader/config/grub2.py @@ -624,8 +624,10 @@ def _supports_platform_modules(self): def _setup_sysconfig_bootloader(self): """ - Create or update etc/sysconfig/bootloader by the following - parameters required according to the grub2 bootloader setup + Create or update etc/sysconfig/bootloader for the following + parameters. Please note this file is consumed by perl-bootloader + only and marked for deletion with the next major release of + kiwi because not a mainline grub config file. * LOADER_TYPE * LOADER_LOCATION @@ -640,6 +642,8 @@ def _setup_sysconfig_bootloader(self): 'LOADER_LOCATION': 'none' if self.firmware.efi_mode() else 'mbr' } + if self.bls: + sysconfig_bootloader_entries['LOADER_TYPE'] = 'grub2-bls' if '--set-trusted-boot' in self.config_options: sysconfig_bootloader_entries['TRUSTED_BOOT'] = 'yes' if self.firmware.efi_mode() == 'uefi': diff --git a/test/unit/bootloader/config/grub2_test.py b/test/unit/bootloader/config/grub2_test.py index 3e099fb982b..329d2ee3203 100644 --- a/test/unit/bootloader/config/grub2_test.py +++ b/test/unit/bootloader/config/grub2_test.py @@ -874,6 +874,7 @@ def test_setup_sysconfig_bootloader(self, mock_sysconfig, mock_exists): sysconfig_bootloader = MagicMock() mock_sysconfig.return_value = sysconfig_bootloader mock_exists.return_value = True + self.bootloader.bls = False self.bootloader._setup_sysconfig_bootloader() mock_sysconfig.assert_called_once_with( 'root_dir/etc/sysconfig/bootloader' @@ -914,6 +915,7 @@ def test_setup_sysconfig_bootloader_no_secure( sysconfig_bootloader = MagicMock() mock_sysconfig.return_value = sysconfig_bootloader mock_exists.return_value = True + self.bootloader.bls = False self.bootloader._setup_sysconfig_bootloader() mock_sysconfig.assert_called_once_with( 'root_dir/etc/sysconfig/bootloader' @@ -945,6 +947,20 @@ def test_setup_sysconfig_bootloader_no_secure( call('SECURE_BOOT', 'no'), call('TRUSTED_BOOT', 'yes') ] + sysconfig_bootloader.__setitem__.reset_mock() + self.bootloader.bls = True + self.bootloader._setup_sysconfig_bootloader() + assert sysconfig_bootloader.__setitem__.call_args_list == [ + call('DEFAULT_APPEND', '"some-cmdline root=UUID=foo"'), + call( + 'FAILSAFE_APPEND', + '"some-cmdline root=UUID=foo failsafe-options"' + ), + call('LOADER_LOCATION', 'none'), + call('LOADER_TYPE', 'grub2-bls'), + call('SECURE_BOOT', 'no'), + call('TRUSTED_BOOT', 'yes') + ] @patch('os.path.exists') def test_setup_live_image_config_custom_template(self, mock_exists):