Before this commit isolinux was used to boot an ISO and thus forms a hard requirement. isolinux however only exists for the x86 platform. This limitation did not allow to create ISO images for other platforms. With this commit a refactoring of the ISO boot setup is introduced. * isolinux is only used if the bios firmware is requested and the platform matches the x86 architecture. A runtime check will check for this condition and exits early if not applicable * in case of the EFI firmware we already used grub in EFI mode but still had isolinux in place for the legacy/CSM boot. That part is now also replaced by a platform specific grub eltorito image and grub's boot_hybrid.img for hybrid boot. On platforms that do not provide those modules the support for it will be skipped With this change in place it's possible to control the ISO boot layout through the firmware setup and all platform specific modules are handled as such. Therefore we also deleted the syslinux requirement. This Fixes #1092
363 lines
13 KiB
Python
363 lines
13 KiB
Python
from kiwi.bootloader.template.grub2 import BootLoaderTemplateGrub2
|
|
|
|
|
|
class TestBootLoaderTemplateGrub2(object):
|
|
def setup(self):
|
|
self.grub2 = BootLoaderTemplateGrub2()
|
|
|
|
def test_get_disk_template(self):
|
|
assert self.grub2.get_disk_template().substitute(
|
|
search_params='--fs-uuid --set=root 0815',
|
|
default_boot='0',
|
|
kernel_file='boot/linux.vmx',
|
|
initrd_file='boot/initrd.vmx',
|
|
boot_options='splash',
|
|
failsafe_boot_options='splash',
|
|
gfxmode='800x600',
|
|
theme='SLE',
|
|
boot_timeout='10',
|
|
title='LimeJeOS-SLE12-Community [ VMX ]',
|
|
bootpath='/boot',
|
|
boot_directory_name='grub2'
|
|
)
|
|
|
|
def test_get_disk_template_console(self):
|
|
assert self.grub2.get_disk_template(
|
|
terminal='console'
|
|
).substitute(
|
|
search_params='--fs-uuid --set=root 0815',
|
|
default_boot='0',
|
|
kernel_file='boot/linux.vmx',
|
|
initrd_file='boot/initrd.vmx',
|
|
boot_options='splash',
|
|
failsafe_boot_options='splash',
|
|
boot_timeout='10',
|
|
title='LimeJeOS-SLE12-Community [ VMX ]',
|
|
bootpath='/boot'
|
|
)
|
|
|
|
def test_get_disk_template_serial_no_hybird(self):
|
|
assert self.grub2.get_disk_template(
|
|
terminal='serial',
|
|
hybrid=False
|
|
).substitute(
|
|
search_params='--fs-uuid --set=root 0815',
|
|
default_boot='0',
|
|
kernel_file='boot/linux.vmx',
|
|
initrd_file='boot/initrd.vmx',
|
|
boot_options='splash',
|
|
failsafe_boot_options='splash',
|
|
boot_timeout='10',
|
|
title='LimeJeOS-SLE12-Community [ VMX ]',
|
|
bootpath='/boot'
|
|
)
|
|
|
|
def test_get_multiboot_disk_template(self):
|
|
assert self.grub2.get_multiboot_disk_template().substitute(
|
|
search_params='--fs-uuid --set=root 0815',
|
|
default_boot='0',
|
|
kernel_file='linux.vmx',
|
|
initrd_file='initrd.vmx',
|
|
boot_options='splash',
|
|
failsafe_boot_options='splash',
|
|
gfxmode='800x600',
|
|
theme='SLE',
|
|
boot_timeout='10',
|
|
title='LimeJeOS-SLE12-Community [ VMX ]',
|
|
bootpath='/boot',
|
|
boot_directory_name='grub2',
|
|
hypervisor='xen.gz'
|
|
)
|
|
|
|
def test_get_multiboot_disk_template_console(self):
|
|
assert self.grub2.get_multiboot_disk_template(
|
|
terminal='console'
|
|
).substitute(
|
|
search_params='--fs-uuid --set=root 0815',
|
|
default_boot='0',
|
|
kernel_file='linux.vmx',
|
|
initrd_file='initrd.vmx',
|
|
boot_options='splash',
|
|
failsafe_boot_options='splash',
|
|
boot_timeout='10',
|
|
title='LimeJeOS-SLE12-Community [ VMX ]',
|
|
bootpath='/boot',
|
|
hypervisor='xen.gz'
|
|
)
|
|
|
|
def test_get_multiboot_disk_template_serial(self):
|
|
assert self.grub2.get_multiboot_disk_template(
|
|
terminal='serial'
|
|
).substitute(
|
|
search_params='--fs-uuid --set=root 0815',
|
|
default_boot='0',
|
|
kernel_file='linux.vmx',
|
|
initrd_file='initrd.vmx',
|
|
boot_options='splash',
|
|
failsafe_boot_options='splash',
|
|
boot_timeout='10',
|
|
title='LimeJeOS-SLE12-Community [ VMX ]',
|
|
bootpath='/boot',
|
|
hypervisor='xen.gz'
|
|
)
|
|
|
|
def test_get_multiboot_install_template(self):
|
|
assert self.grub2.get_multiboot_install_template().substitute(
|
|
search_params='--fs-uuid --set=root 0815',
|
|
default_boot='0',
|
|
kernel_file='linux.vmx',
|
|
initrd_file='initrd.vmx',
|
|
boot_options='splash',
|
|
failsafe_boot_options='splash',
|
|
gfxmode='800x600',
|
|
theme='SLE',
|
|
boot_timeout='10',
|
|
title='LimeJeOS-SLE12-Community [ VMX ]',
|
|
bootpath='/boot',
|
|
boot_directory_name='grub2',
|
|
hypervisor='xen.gz',
|
|
efi_image_name='bootx64.efi'
|
|
)
|
|
|
|
def test_get_multiboot_install_template_console(self):
|
|
assert self.grub2.get_multiboot_install_template(
|
|
terminal='console'
|
|
).substitute(
|
|
search_params='--fs-uuid --set=root 0815',
|
|
default_boot='0',
|
|
kernel_file='linux.vmx',
|
|
initrd_file='initrd.vmx',
|
|
boot_options='splash',
|
|
failsafe_boot_options='splash',
|
|
boot_timeout='10',
|
|
title='LimeJeOS-SLE12-Community [ VMX ]',
|
|
bootpath='/boot',
|
|
hypervisor='xen.gz',
|
|
efi_image_name='bootx64.efi'
|
|
)
|
|
|
|
def test_get_multiboot_install_template_serial(self):
|
|
assert self.grub2.get_multiboot_install_template(
|
|
terminal='serial'
|
|
).substitute(
|
|
search_params='--fs-uuid --set=root 0815',
|
|
default_boot='0',
|
|
kernel_file='linux.vmx',
|
|
initrd_file='initrd.vmx',
|
|
boot_options='splash',
|
|
failsafe_boot_options='splash',
|
|
boot_timeout='10',
|
|
title='LimeJeOS-SLE12-Community [ VMX ]',
|
|
bootpath='/boot',
|
|
hypervisor='xen.gz',
|
|
efi_image_name='bootx64.efi'
|
|
)
|
|
|
|
def test_get_install_template(self):
|
|
assert self.grub2.get_install_template().substitute(
|
|
search_params='--file --set=root /boot/0xd305fb7d',
|
|
default_boot='0',
|
|
kernel_file='boot/linux.vmx',
|
|
initrd_file='boot/initrd.vmx',
|
|
boot_options='cdinst=1 splash',
|
|
failsafe_boot_options='cdinst=1 splash',
|
|
gfxmode='800x600',
|
|
theme='SLE',
|
|
boot_timeout='10',
|
|
title='LimeJeOS-SLE12-Community [ VMX ]',
|
|
bootpath='/boot',
|
|
boot_directory_name='grub2',
|
|
efi_image_name='bootx64.efi'
|
|
)
|
|
|
|
def test_get_install_template_console_no_hybrid(self):
|
|
assert self.grub2.get_install_template(
|
|
terminal='console',
|
|
hybrid=False
|
|
).substitute(
|
|
search_params='--file --set=root /boot/0xd305fb7d',
|
|
default_boot='0',
|
|
kernel_file='boot/linux.vmx',
|
|
initrd_file='boot/initrd.vmx',
|
|
boot_options='cdinst=1 splash',
|
|
failsafe_boot_options='cdinst=1 splash',
|
|
boot_timeout='10',
|
|
title='LimeJeOS-SLE12-Community [ VMX ]',
|
|
bootpath='/boot',
|
|
efi_image_name='bootx64.efi'
|
|
)
|
|
|
|
def test_get_install_template_serial_no_hybrid(self):
|
|
assert self.grub2.get_install_template(
|
|
terminal='serial',
|
|
hybrid=False
|
|
).substitute(
|
|
search_params='--file --set=root /boot/0xd305fb7d',
|
|
default_boot='0',
|
|
kernel_file='boot/linux.vmx',
|
|
initrd_file='boot/initrd.vmx',
|
|
boot_options='cdinst=1 splash',
|
|
failsafe_boot_options='cdinst=1 splash',
|
|
boot_timeout='10',
|
|
title='LimeJeOS-SLE12-Community [ VMX ]',
|
|
bootpath='/boot',
|
|
efi_image_name='bootx64.efi'
|
|
)
|
|
|
|
def test_get_iso_template(self):
|
|
assert self.grub2.get_iso_template().substitute(
|
|
search_params='--file --set=root /boot/0xd305fb7d',
|
|
default_boot='0',
|
|
kernel_file='boot/linux.vmx',
|
|
initrd_file='boot/initrd.vmx',
|
|
boot_options='splash',
|
|
failsafe_boot_options='splash',
|
|
gfxmode='800x600',
|
|
theme='SLE',
|
|
boot_timeout='10',
|
|
title='LimeJeOS-SLE12-Community',
|
|
bootpath='/boot',
|
|
boot_directory_name='grub2',
|
|
efi_image_name='bootx64.efi'
|
|
)
|
|
|
|
def test_get_iso_template_console_no_hybrid(self):
|
|
assert self.grub2.get_iso_template(
|
|
terminal='console',
|
|
hybrid=False
|
|
).substitute(
|
|
search_params='--file --set=root /boot/0xd305fb7d',
|
|
default_boot='0',
|
|
kernel_file='boot/linux.vmx',
|
|
initrd_file='boot/initrd.vmx',
|
|
boot_options='splash',
|
|
failsafe_boot_options='splash',
|
|
boot_timeout='10',
|
|
title='LimeJeOS-SLE12-Community',
|
|
bootpath='/boot',
|
|
efi_image_name='bootx64.efi'
|
|
)
|
|
|
|
def test_get_iso_template_serial_no_hybrid(self):
|
|
assert self.grub2.get_iso_template(
|
|
terminal='serial',
|
|
hybrid=False
|
|
).substitute(
|
|
search_params='--file --set=root /boot/0xd305fb7d',
|
|
default_boot='0',
|
|
kernel_file='boot/linux.vmx',
|
|
initrd_file='boot/initrd.vmx',
|
|
boot_options='splash',
|
|
failsafe_boot_options='splash',
|
|
boot_timeout='10',
|
|
title='LimeJeOS-SLE12-Community',
|
|
bootpath='/boot',
|
|
efi_image_name='bootx64.efi'
|
|
)
|
|
|
|
def test_get_iso_template_checkiso_no_hybrid(self):
|
|
assert self.grub2.get_iso_template(
|
|
hybrid=False, checkiso=True
|
|
).substitute(
|
|
search_params='--file --set=root /boot/0xd305fb7d',
|
|
default_boot='0',
|
|
kernel_file='boot/linux.vmx',
|
|
initrd_file='boot/initrd.vmx',
|
|
boot_options='splash',
|
|
failsafe_boot_options='splash',
|
|
gfxmode='800x600',
|
|
theme='SLE',
|
|
boot_timeout='10',
|
|
title='LimeJeOS-SLE12-Community',
|
|
bootpath='/boot',
|
|
boot_directory_name='grub2',
|
|
efi_image_name='bootx64.efi'
|
|
)
|
|
|
|
def test_get_iso_template_checkiso(self):
|
|
assert self.grub2.get_iso_template(checkiso=True).substitute(
|
|
search_params='--file --set=root /boot/0xd305fb7d',
|
|
default_boot='0',
|
|
kernel_file='boot/linux.vmx',
|
|
initrd_file='boot/initrd.vmx',
|
|
boot_options='splash',
|
|
failsafe_boot_options='splash',
|
|
gfxmode='800x600',
|
|
theme='SLE',
|
|
boot_timeout='10',
|
|
title='LimeJeOS-SLE12-Community',
|
|
bootpath='/boot',
|
|
boot_directory_name='grub2',
|
|
efi_image_name='bootx64.efi'
|
|
)
|
|
|
|
def test_get_multiboot_iso_template(self):
|
|
assert self.grub2.get_multiboot_iso_template().substitute(
|
|
search_params='--fs-uuid --set=root 0815',
|
|
default_boot='0',
|
|
kernel_file='linux.vmx',
|
|
initrd_file='initrd.vmx',
|
|
boot_options='splash',
|
|
failsafe_boot_options='splash',
|
|
gfxmode='800x600',
|
|
theme='SLE',
|
|
boot_timeout='10',
|
|
title='LimeJeOS-SLE12-Community',
|
|
bootpath='/boot',
|
|
boot_directory_name='grub2',
|
|
hypervisor='xen.gz',
|
|
efi_image_name='bootx64.efi'
|
|
)
|
|
|
|
def test_get_multiboot_iso_template_console(self):
|
|
assert self.grub2.get_multiboot_iso_template(
|
|
terminal='console'
|
|
).substitute(
|
|
search_params='--fs-uuid --set=root 0815',
|
|
default_boot='0',
|
|
kernel_file='linux.vmx',
|
|
initrd_file='initrd.vmx',
|
|
boot_options='splash',
|
|
failsafe_boot_options='splash',
|
|
boot_timeout='10',
|
|
title='LimeJeOS-SLE12-Community',
|
|
bootpath='/boot',
|
|
hypervisor='xen.gz',
|
|
efi_image_name='bootx64.efi'
|
|
)
|
|
|
|
def test_get_multiboot_iso_template_serial(self):
|
|
assert self.grub2.get_multiboot_iso_template(
|
|
terminal='serial'
|
|
).substitute(
|
|
search_params='--fs-uuid --set=root 0815',
|
|
default_boot='0',
|
|
kernel_file='linux.vmx',
|
|
initrd_file='initrd.vmx',
|
|
boot_options='splash',
|
|
failsafe_boot_options='splash',
|
|
boot_timeout='10',
|
|
title='LimeJeOS-SLE12-Community',
|
|
bootpath='/boot',
|
|
hypervisor='xen.gz',
|
|
efi_image_name='bootx64.efi'
|
|
)
|
|
|
|
def test_get_multiboot_iso_template_checkiso(self):
|
|
assert self.grub2.get_multiboot_iso_template(checkiso=True).substitute(
|
|
search_params='--fs-uuid --set=root 0815',
|
|
default_boot='0',
|
|
kernel_file='linux.vmx',
|
|
initrd_file='initrd.vmx',
|
|
boot_options='splash',
|
|
failsafe_boot_options='splash',
|
|
gfxmode='800x600',
|
|
theme='SLE',
|
|
boot_timeout='10',
|
|
title='LimeJeOS-SLE12-Community',
|
|
bootpath='/boot',
|
|
boot_directory_name='grub2',
|
|
hypervisor='xen.gz',
|
|
efi_image_name='bootx64.efi'
|
|
)
|