curtin-dev team mailing list archive
-
curtin-dev team
-
Mailing list archive
-
Message #03774
[Merge] ~alanbach/curtin:lp2090874 into curtin:master
Alan Baghumian has proposed merging ~alanbach/curtin:lp2090874 into curtin:master.
Commit message:
Add support for arm64 bootloader artifact
detection support for rpm based distributions.
LP: #2090874
Requested reviews:
curtin developers (curtin-dev)
Related bugs:
Bug #2090874 in curtin: "find_efi_loader is missing bindings for aarch64 artifacts"
https://bugs.launchpad.net/curtin/+bug/2090874
For more details, see:
https://code.launchpad.net/~alanbach/curtin/+git/curtin/+merge/478095
This updated the find_efi_loader() to include the following additional artifacts for arm64 machines:
os.path.join(efi_path, bootid, 'shimaa64.efi')
os.path.join(efi_path, 'BOOT', 'BOOTAA64.EFI')
os.path.join(efi_path, bootid, 'grubaa64.efi')
The change also adds 11 new unit tests for the arm64 family of artifacts based off the existing amd64 tests.
Before:
----------------------------------------------------------------------
TOTAL 11279 3402 5104 566 68%
----------------------------------------------------------------------
Ran 1407 tests in 19.312s
After:
----------------------------------------------------------------------
TOTAL 11279 3402 5104 566 68%
----------------------------------------------------------------------
Ran 1418 tests in 19.552s
--
Your team curtin developers is requested to review the proposed merge of ~alanbach/curtin:lp2090874 into curtin:master.
diff --git a/curtin/commands/install_grub.py b/curtin/commands/install_grub.py
index 18bc33d..3d4b757 100644
--- a/curtin/commands/install_grub.py
+++ b/curtin/commands/install_grub.py
@@ -243,6 +243,9 @@ def find_efi_loader(target, bootid):
os.path.join(efi_path, bootid, 'shimx64.efi'),
os.path.join(efi_path, 'BOOT', 'BOOTX64.EFI'),
os.path.join(efi_path, bootid, 'grubx64.efi'),
+ os.path.join(efi_path, bootid, 'shimaa64.efi'),
+ os.path.join(efi_path, 'BOOT', 'BOOTAA64.EFI'),
+ os.path.join(efi_path, bootid, 'grubaa64.efi'),
]
for loader in possible_loaders:
tloader = target_path(target, path=loader)
diff --git a/tests/unittests/test_commands_install_grub.py b/tests/unittests/test_commands_install_grub.py
index 0289c4b..7b7b547 100644
--- a/tests/unittests/test_commands_install_grub.py
+++ b/tests/unittests/test_commands_install_grub.py
@@ -578,6 +578,9 @@ class TestFindEfiLoader(CiTestCase):
os.path.join(self.efi_path, self.bootid, 'shimx64.efi'),
os.path.join(self.efi_path, 'BOOT', 'BOOTX64.EFI'),
os.path.join(self.efi_path, self.bootid, 'grubx64.efi'),
+ os.path.join(self.efi_path, self.bootid, 'shimaa64.efi'),
+ os.path.join(self.efi_path, 'BOOT', 'BOOTAA64.EFI'),
+ os.path.join(self.efi_path, self.bootid, 'grubaa64.efi'),
]
def test_return_none_with_no_loaders(self):
@@ -624,6 +627,33 @@ class TestFindEfiLoader(CiTestCase):
self.assertTrue(found.endswith(
os.path.join(self.efi_path, self.bootid, 'grubx64.efi')))
+ def test_prefer_existing_bootx_loader_with_no_shim_arm64(self):
+ # touch all loaders in target filesystem
+ loaders = self._possible_loaders()[4:]
+ for loader in loaders:
+ tloader = os.path.join(self.target, loader)
+ util.ensure_dir(os.path.dirname(tloader))
+ with open(tloader, 'w+') as fh:
+ fh.write('\n')
+
+ found = install_grub.find_efi_loader(self.target, self.bootid)
+ self.assertTrue(found.endswith(
+ os.path.join(self.efi_path, 'BOOT', 'BOOTAA64.EFI')))
+
+ def test_prefer_existing_grub_loader_with_no_other_loader_arm64(self):
+ # touch all loaders in target filesystem
+ loaders = self._possible_loaders()[5:]
+ for loader in loaders:
+ tloader = os.path.join(self.target, loader)
+ util.ensure_dir(os.path.dirname(tloader))
+ with open(tloader, 'w+') as fh:
+ fh.write('\n')
+
+ found = install_grub.find_efi_loader(self.target, self.bootid)
+ print(found)
+ self.assertTrue(found.endswith(
+ os.path.join(self.efi_path, self.bootid, 'grubaa64.efi')))
+
class TestGetGrubInstallCommand(CiTestCase):
@@ -808,6 +838,34 @@ class TestGenUefiInstallCommands(CiTestCase):
grub_name, grub_target, grub_cmd, update_nvram, distroinfo,
devices, self.target))
+ def test_redhat_install_arm64(self):
+ self.m_os_release.return_value = {'ID': 'rhel'}
+ distroinfo = install_grub.distro.get_distroinfo()
+ grub_name = 'grub2-efi-aa64'
+ grub_target = 'arm64-efi'
+ grub_cmd = 'grub2-install'
+ update_nvram = True
+ devices = ['/dev/disk-a-part1']
+ disk = '/dev/disk-a'
+ part = '1'
+ self.m_get_disk_part.return_value = (disk, part)
+
+ expected_install = [
+ ['efibootmgr', '-v'],
+ [grub_cmd, '--target=%s' % grub_target,
+ '--efi-directory=/boot/efi',
+ '--bootloader-id=redhat', '--recheck'],
+ ]
+ expected_post = [
+ ['grub2-mkconfig', '-o', '/boot/grub2/grub.cfg'],
+ ['efibootmgr', '-v']
+ ]
+ self.assertEqual(
+ (expected_install, expected_post),
+ install_grub.gen_uefi_install_commands(
+ grub_name, grub_target, grub_cmd, update_nvram, distroinfo,
+ devices, self.target))
+
def test_redhat_install_existing(self):
# simulate existing bootloaders already installed in target system
# by touching the files grub would have installed, including shim
@@ -818,6 +876,9 @@ class TestGenUefiInstallCommands(CiTestCase):
os.path.join(target_efi_path, bootid, 'shimx64.efi'),
os.path.join(target_efi_path, 'BOOT', 'BOOTX64.EFI'),
os.path.join(target_efi_path, bootid, 'grubx64.efi'),
+ os.path.join(target_efi_path, bootid, 'shimaa64.efi'),
+ os.path.join(target_efi_path, 'BOOT', 'BOOTAA64.EFI'),
+ os.path.join(target_efi_path, bootid, 'grubaa64.efi'),
]
for loader in loaders:
util.ensure_dir(os.path.dirname(loader))
@@ -854,6 +915,55 @@ class TestGenUefiInstallCommands(CiTestCase):
grub_name, grub_target, grub_cmd, update_nvram, distroinfo,
devices, self.target))
+ def test_redhat_install_existing_arm64(self):
+ # simulate existing bootloaders already installed in target system
+ # by touching the files grub would have installed, including shim
+ def _enable_loaders(bootid):
+ efi_path = 'boot/efi/EFI'
+ target_efi_path = os.path.join(self.target, efi_path)
+ loaders = [
+ os.path.join(target_efi_path, bootid, 'shimx64.efi'),
+ os.path.join(target_efi_path, 'BOOT', 'BOOTX64.EFI'),
+ os.path.join(target_efi_path, bootid, 'grubx64.efi'),
+ os.path.join(target_efi_path, bootid, 'shimaa64.efi'),
+ os.path.join(target_efi_path, 'BOOT', 'BOOTAA64.EFI'),
+ os.path.join(target_efi_path, bootid, 'grubaa64.efi'),
+ ]
+ for loader in loaders:
+ util.ensure_dir(os.path.dirname(loader))
+ with open(loader, 'w+') as fh:
+ fh.write('\n')
+
+ self.m_os_release.return_value = {'ID': 'rhel'}
+ distroinfo = install_grub.distro.get_distroinfo()
+ _enable_loaders("redhat")
+ grub_name = 'grub2-efi-aa64'
+ grub_target = 'arm64-efi'
+ grub_cmd = 'grub2-install'
+ update_nvram = True
+ devices = ['/dev/disk-a-part1']
+ disk = '/dev/disk-a'
+ part = '1'
+ self.m_get_disk_part.return_value = (disk, part)
+
+ expected_loader = '/EFI/redhat/shimx64.efi'
+ expected_install = [
+ ['efibootmgr', '-v'],
+ ['efibootmgr', '--create', '--write-signature',
+ '--label', 'redhat', '--disk', disk, '--part', part,
+ '--loader', expected_loader],
+ ]
+ expected_post = [
+ ['grub2-mkconfig', '-o', '/boot/efi/EFI/redhat/grub.cfg'],
+ ['efibootmgr', '-v']
+ ]
+
+ self.assertEqual(
+ (expected_install, expected_post),
+ install_grub.gen_uefi_install_commands(
+ grub_name, grub_target, grub_cmd, update_nvram, distroinfo,
+ devices, self.target))
+
def test_redhat_install_existing_no_nvram(self):
# verify grub install command is not executed if update_nvram is False
# on redhat.
@@ -864,6 +974,9 @@ class TestGenUefiInstallCommands(CiTestCase):
os.path.join(target_efi_path, bootid, 'shimx64.efi'),
os.path.join(target_efi_path, 'BOOT', 'BOOTX64.EFI'),
os.path.join(target_efi_path, bootid, 'grubx64.efi'),
+ os.path.join(target_efi_path, bootid, 'shimaa64.efi'),
+ os.path.join(target_efi_path, 'BOOT', 'BOOTAA64.EFI'),
+ os.path.join(target_efi_path, bootid, 'grubaa64.efi'),
]
for loader in loaders:
util.write_file(loader, content="")
@@ -895,6 +1008,50 @@ class TestGenUefiInstallCommands(CiTestCase):
grub_name, grub_target, grub_cmd, update_nvram, distroinfo,
devices, self.target))
+ def test_redhat_install_existing_no_nvram_arm64(self):
+ # verify grub install command is not executed if update_nvram is False
+ # on redhat.
+ def _enable_loaders(bootid):
+ efi_path = 'boot/efi/EFI'
+ target_efi_path = os.path.join(self.target, efi_path)
+ loaders = [
+ os.path.join(target_efi_path, bootid, 'shimx64.efi'),
+ os.path.join(target_efi_path, 'BOOT', 'BOOTX64.EFI'),
+ os.path.join(target_efi_path, bootid, 'grubx64.efi'),
+ os.path.join(target_efi_path, bootid, 'shimaa64.efi'),
+ os.path.join(target_efi_path, 'BOOT', 'BOOTAA64.EFI'),
+ os.path.join(target_efi_path, bootid, 'grubaa64.efi'),
+ ]
+ for loader in loaders:
+ util.write_file(loader, content="")
+
+ self.m_os_release.return_value = {'ID': 'redhat'}
+ distroinfo = install_grub.distro.get_distroinfo()
+ bootid = distroinfo.variant
+ _enable_loaders(bootid)
+ grub_name = 'grub2-efi-aa64'
+ grub_target = 'arm-efi'
+ grub_cmd = 'grub2-install'
+ update_nvram = False
+ devices = ['/dev/disk-a-part1']
+ disk = '/dev/disk-a'
+ part = '1'
+ self.m_get_disk_part.return_value = (disk, part)
+
+ expected_install = [
+ ['efibootmgr', '-v'],
+ ]
+ expected_post = [
+ ['grub2-mkconfig', '-o', '/boot/efi/EFI/%s/grub.cfg' % bootid],
+ ['efibootmgr', '-v']
+ ]
+
+ self.assertEqual(
+ (expected_install, expected_post),
+ install_grub.gen_uefi_install_commands(
+ grub_name, grub_target, grub_cmd, update_nvram, distroinfo,
+ devices, self.target))
+
def test_suse_install(self):
self.m_os_release.return_value = {'ID': 'suse'}
distroinfo = install_grub.distro.get_distroinfo()
@@ -923,6 +1080,34 @@ class TestGenUefiInstallCommands(CiTestCase):
grub_name, grub_target, grub_cmd, update_nvram, distroinfo,
devices, self.target))
+ def test_suse_install_arm64(self):
+ self.m_os_release.return_value = {'ID': 'suse'}
+ distroinfo = install_grub.distro.get_distroinfo()
+ grub_name = 'grub2-efi-aa64'
+ grub_target = 'arm-efi'
+ grub_cmd = 'grub2-install'
+ update_nvram = True
+ devices = ['/dev/disk-a-part1']
+ disk = '/dev/disk-a'
+ part = '1'
+ self.m_get_disk_part.return_value = (disk, part)
+
+ expected_install = [
+ ['efibootmgr', '-v'],
+ [grub_cmd, '--target=%s' % grub_target,
+ '--efi-directory=/boot/efi',
+ '--bootloader-id=suse', '--recheck'],
+ ]
+ expected_post = [
+ ['grub2-mkconfig', '-o', '/boot/grub2/grub.cfg'],
+ ['efibootmgr', '-v']
+ ]
+ self.assertEqual(
+ (expected_install, expected_post),
+ install_grub.gen_uefi_install_commands(
+ grub_name, grub_target, grub_cmd, update_nvram, distroinfo,
+ devices, self.target))
+
def test_suse_install_existing(self):
# simulate existing bootloaders already installed in target system
# by touching the files grub would have installed, including shim
@@ -933,6 +1118,9 @@ class TestGenUefiInstallCommands(CiTestCase):
os.path.join(target_efi_path, bootid, 'shimx64.efi'),
os.path.join(target_efi_path, 'BOOT', 'BOOTX64.EFI'),
os.path.join(target_efi_path, bootid, 'grubx64.efi'),
+ os.path.join(target_efi_path, bootid, 'shimaa64.efi'),
+ os.path.join(target_efi_path, 'BOOT', 'BOOTAA64.EFI'),
+ os.path.join(target_efi_path, bootid, 'grubaa64.efi'),
]
for loader in loaders:
util.ensure_dir(os.path.dirname(loader))
@@ -969,6 +1157,55 @@ class TestGenUefiInstallCommands(CiTestCase):
grub_name, grub_target, grub_cmd, update_nvram, distroinfo,
devices, self.target))
+ def test_suse_install_existing_arm64(self):
+ # simulate existing bootloaders already installed in target system
+ # by touching the files grub would have installed, including shim
+ def _enable_loaders(bootid):
+ efi_path = 'boot/efi/EFI'
+ target_efi_path = os.path.join(self.target, efi_path)
+ loaders = [
+ os.path.join(target_efi_path, bootid, 'shimx64.efi'),
+ os.path.join(target_efi_path, 'BOOT', 'BOOTX64.EFI'),
+ os.path.join(target_efi_path, bootid, 'grubx64.efi'),
+ os.path.join(target_efi_path, bootid, 'shimaa64.efi'),
+ os.path.join(target_efi_path, 'BOOT', 'BOOTAA64.EFI'),
+ os.path.join(target_efi_path, bootid, 'grubaa64.efi'),
+ ]
+ for loader in loaders:
+ util.ensure_dir(os.path.dirname(loader))
+ with open(loader, 'w+') as fh:
+ fh.write('\n')
+
+ self.m_os_release.return_value = {'ID': 'suse'}
+ distroinfo = install_grub.distro.get_distroinfo()
+ _enable_loaders("suse")
+ grub_name = 'grub2-efi-aa64'
+ grub_target = 'arm64-efi'
+ grub_cmd = 'grub2-install'
+ update_nvram = True
+ devices = ['/dev/disk-a-part1']
+ disk = '/dev/disk-a'
+ part = '1'
+ self.m_get_disk_part.return_value = (disk, part)
+
+ expected_loader = '/EFI/suse/shimx64.efi'
+ expected_install = [
+ ['efibootmgr', '-v'],
+ ['efibootmgr', '--create', '--write-signature',
+ '--label', 'suse', '--disk', disk, '--part', part,
+ '--loader', expected_loader],
+ ]
+ expected_post = [
+ ['grub2-mkconfig', '-o', '/boot/efi/EFI/suse/grub.cfg'],
+ ['efibootmgr', '-v']
+ ]
+
+ self.assertEqual(
+ (expected_install, expected_post),
+ install_grub.gen_uefi_install_commands(
+ grub_name, grub_target, grub_cmd, update_nvram, distroinfo,
+ devices, self.target))
+
def test_suse_install_existing_no_nvram(self):
# verify grub install command is not executed if update_nvram is False
# on suse.
@@ -979,6 +1216,9 @@ class TestGenUefiInstallCommands(CiTestCase):
os.path.join(target_efi_path, bootid, 'shimx64.efi'),
os.path.join(target_efi_path, 'BOOT', 'BOOTX64.EFI'),
os.path.join(target_efi_path, bootid, 'grubx64.efi'),
+ os.path.join(target_efi_path, bootid, 'shimaa64.efi'),
+ os.path.join(target_efi_path, 'BOOT', 'BOOTAA64.EFI'),
+ os.path.join(target_efi_path, bootid, 'grubaa64.efi'),
]
for loader in loaders:
util.write_file(loader, content="")
@@ -1010,6 +1250,50 @@ class TestGenUefiInstallCommands(CiTestCase):
grub_name, grub_target, grub_cmd, update_nvram, distroinfo,
devices, self.target))
+ def test_suse_install_existing_no_nvram_arm64(self):
+ # verify grub install command is not executed if update_nvram is False
+ # on suse.
+ def _enable_loaders(bootid):
+ efi_path = 'boot/efi/EFI'
+ target_efi_path = os.path.join(self.target, efi_path)
+ loaders = [
+ os.path.join(target_efi_path, bootid, 'shimx64.efi'),
+ os.path.join(target_efi_path, 'BOOT', 'BOOTX64.EFI'),
+ os.path.join(target_efi_path, bootid, 'grubx64.efi'),
+ os.path.join(target_efi_path, bootid, 'shimaa64.efi'),
+ os.path.join(target_efi_path, 'BOOT', 'BOOTAA64.EFI'),
+ os.path.join(target_efi_path, bootid, 'grubaa64.efi'),
+ ]
+ for loader in loaders:
+ util.write_file(loader, content="")
+
+ self.m_os_release.return_value = {'ID': 'suse'}
+ distroinfo = install_grub.distro.get_distroinfo()
+ bootid = distroinfo.variant
+ _enable_loaders(bootid)
+ grub_name = 'grub2-efi-aa64'
+ grub_target = 'arm-efi'
+ grub_cmd = 'grub2-install'
+ update_nvram = False
+ devices = ['/dev/disk-a-part1']
+ disk = '/dev/disk-a'
+ part = '1'
+ self.m_get_disk_part.return_value = (disk, part)
+
+ expected_install = [
+ ['efibootmgr', '-v'],
+ ]
+ expected_post = [
+ ['grub2-mkconfig', '-o', '/boot/efi/EFI/%s/grub.cfg' % bootid],
+ ['efibootmgr', '-v']
+ ]
+
+ self.assertEqual(
+ (expected_install, expected_post),
+ install_grub.gen_uefi_install_commands(
+ grub_name, grub_target, grub_cmd, update_nvram, distroinfo,
+ devices, self.target))
+
def test_ol_install(self):
self.m_os_release.return_value = {'ID': 'ol'}
distroinfo = install_grub.distro.get_distroinfo()
@@ -1038,6 +1322,34 @@ class TestGenUefiInstallCommands(CiTestCase):
grub_name, grub_target, grub_cmd, update_nvram, distroinfo,
devices, self.target))
+ def test_ol_install_arm64(self):
+ self.m_os_release.return_value = {'ID': 'ol'}
+ distroinfo = install_grub.distro.get_distroinfo()
+ grub_name = 'grub2-efi-aa64'
+ grub_target = 'arm64-efi'
+ grub_cmd = 'grub2-install'
+ update_nvram = True
+ devices = ['/dev/disk-a-part1']
+ disk = '/dev/disk-a'
+ part = '1'
+ self.m_get_disk_part.return_value = (disk, part)
+
+ expected_install = [
+ ['efibootmgr', '-v'],
+ [grub_cmd, '--target=%s' % grub_target,
+ '--efi-directory=/boot/efi',
+ '--bootloader-id=redhat', '--recheck'],
+ ]
+ expected_post = [
+ ['grub2-mkconfig', '-o', '/boot/grub2/grub.cfg'],
+ ['efibootmgr', '-v']
+ ]
+ self.assertEqual(
+ (expected_install, expected_post),
+ install_grub.gen_uefi_install_commands(
+ grub_name, grub_target, grub_cmd, update_nvram, distroinfo,
+ devices, self.target))
+
def test_ol_install_existing(self):
# simulate existing bootloaders already installed in target system
# by touching the files grub would have installed, including shim
@@ -1048,6 +1360,9 @@ class TestGenUefiInstallCommands(CiTestCase):
os.path.join(target_efi_path, bootid, 'shimx64.efi'),
os.path.join(target_efi_path, 'BOOT', 'BOOTX64.EFI'),
os.path.join(target_efi_path, bootid, 'grubx64.efi'),
+ os.path.join(target_efi_path, bootid, 'shimaa64.efi'),
+ os.path.join(target_efi_path, 'BOOT', 'BOOTAA64.EFI'),
+ os.path.join(target_efi_path, bootid, 'grubaa64.efi'),
]
for loader in loaders:
util.ensure_dir(os.path.dirname(loader))
@@ -1084,6 +1399,55 @@ class TestGenUefiInstallCommands(CiTestCase):
grub_name, grub_target, grub_cmd, update_nvram, distroinfo,
devices, self.target))
+ def test_ol_install_existing_arm64(self):
+ # simulate existing bootloaders already installed in target system
+ # by touching the files grub would have installed, including shim
+ def _enable_loaders(bootid):
+ efi_path = 'boot/efi/EFI'
+ target_efi_path = os.path.join(self.target, efi_path)
+ loaders = [
+ os.path.join(target_efi_path, bootid, 'shimx64.efi'),
+ os.path.join(target_efi_path, 'BOOT', 'BOOTX64.EFI'),
+ os.path.join(target_efi_path, bootid, 'grubx64.efi'),
+ os.path.join(target_efi_path, bootid, 'shimaa64.efi'),
+ os.path.join(target_efi_path, 'BOOT', 'BOOTAA64.EFI'),
+ os.path.join(target_efi_path, bootid, 'grubaa64.efi'),
+ ]
+ for loader in loaders:
+ util.ensure_dir(os.path.dirname(loader))
+ with open(loader, 'w+') as fh:
+ fh.write('\n')
+
+ self.m_os_release.return_value = {'ID': 'ol'}
+ distroinfo = install_grub.distro.get_distroinfo()
+ _enable_loaders("redhat")
+ grub_name = 'grub2-efi-aa64'
+ grub_target = 'arm64-efi'
+ grub_cmd = 'grub2-install'
+ update_nvram = True
+ devices = ['/dev/disk-a-part1']
+ disk = '/dev/disk-a'
+ part = '1'
+ self.m_get_disk_part.return_value = (disk, part)
+
+ expected_loader = '/EFI/redhat/shimx64.efi'
+ expected_install = [
+ ['efibootmgr', '-v'],
+ ['efibootmgr', '--create', '--write-signature',
+ '--label', 'redhat', '--disk', disk, '--part', part,
+ '--loader', expected_loader],
+ ]
+ expected_post = [
+ ['grub2-mkconfig', '-o', '/boot/efi/EFI/redhat/grub.cfg'],
+ ['efibootmgr', '-v']
+ ]
+
+ self.assertEqual(
+ (expected_install, expected_post),
+ install_grub.gen_uefi_install_commands(
+ grub_name, grub_target, grub_cmd, update_nvram, distroinfo,
+ devices, self.target))
+
def test_ol_install_existing_no_nvram(self):
# verify grub install command is not executed if update_nvram is False
# on ol.
@@ -1094,6 +1458,9 @@ class TestGenUefiInstallCommands(CiTestCase):
os.path.join(target_efi_path, bootid, 'shimx64.efi'),
os.path.join(target_efi_path, 'BOOT', 'BOOTX64.EFI'),
os.path.join(target_efi_path, bootid, 'grubx64.efi'),
+ os.path.join(target_efi_path, bootid, 'shimaa64.efi'),
+ os.path.join(target_efi_path, 'BOOT', 'BOOTAA64.EFI'),
+ os.path.join(target_efi_path, bootid, 'grubaa64.efi'),
]
for loader in loaders:
util.write_file(loader, content="")
@@ -1124,6 +1491,49 @@ class TestGenUefiInstallCommands(CiTestCase):
grub_name, grub_target, grub_cmd, update_nvram, distroinfo,
devices, self.target))
+ def test_ol_install_existing_no_nvram_arm64(self):
+ # verify grub install command is not executed if update_nvram is False
+ # on ol.
+ def _enable_loaders(bootid):
+ efi_path = 'boot/efi/EFI'
+ target_efi_path = os.path.join(self.target, efi_path)
+ loaders = [
+ os.path.join(target_efi_path, bootid, 'shimx64.efi'),
+ os.path.join(target_efi_path, 'BOOT', 'BOOTX64.EFI'),
+ os.path.join(target_efi_path, bootid, 'grubx64.efi'),
+ os.path.join(target_efi_path, bootid, 'shimaa64.efi'),
+ os.path.join(target_efi_path, 'BOOT', 'BOOTAA64.EFI'),
+ os.path.join(target_efi_path, bootid, 'grubaa64.efi'),
+ ]
+ for loader in loaders:
+ util.write_file(loader, content="")
+
+ self.m_os_release.return_value = {'ID': 'ol'}
+ distroinfo = install_grub.distro.get_distroinfo()
+ _enable_loaders("redhat")
+ grub_name = 'grub2-efi-aa64'
+ grub_target = 'arm64-efi'
+ grub_cmd = 'grub2-install'
+ update_nvram = False
+ devices = ['/dev/disk-a-part1']
+ disk = '/dev/disk-a'
+ part = '1'
+ self.m_get_disk_part.return_value = (disk, part)
+
+ expected_install = [
+ ['efibootmgr', '-v'],
+ ]
+ expected_post = [
+ ['grub2-mkconfig', '-o', '/boot/efi/EFI/redhat/grub.cfg'],
+ ['efibootmgr', '-v']
+ ]
+
+ self.assertEqual(
+ (expected_install, expected_post),
+ install_grub.gen_uefi_install_commands(
+ grub_name, grub_target, grub_cmd, update_nvram, distroinfo,
+ devices, self.target))
+
class TestGenInstallCommands(CiTestCase):
Follow ups