From f24da5c0f16092d492a206c6de801e5a20b7b55e Mon Sep 17 00:00:00 2001 From: Andreas Schwab Date: Sat, 13 Dec 2014 17:24:41 +0100 Subject: [PATCH] Use grub2-efi on aarch64 --- package/yast2-bootloader.changes | 6 ++++++ package/yast2-bootloader.spec | 2 +- src/include/bootloader/grub2/dialogs.rb | 10 ++++++---- src/modules/BootCommon.rb | 8 ++++---- src/modules/BootGRUB2EFI.rb | 2 ++ src/modules/BootSupportCheck.rb | 5 ++++- 6 files changed, 23 insertions(+), 10 deletions(-) diff --git a/package/yast2-bootloader.changes b/package/yast2-bootloader.changes index 572af880a..5c42755d7 100644 --- a/package/yast2-bootloader.changes +++ b/package/yast2-bootloader.changes @@ -1,3 +1,9 @@ +------------------------------------------------------------------- +Tue Jan 20 10:54:52 UTC 2015 - schwab@suse.de + +- Use grub2-efi on aarch64 +- 3.1.115 + ------------------------------------------------------------------- Tue Jan 13 08:48:38 UTC 2015 - jreidinger@suse.com diff --git a/package/yast2-bootloader.spec b/package/yast2-bootloader.spec index 3d8344c2f..62bcfd119 100644 --- a/package/yast2-bootloader.spec +++ b/package/yast2-bootloader.spec @@ -17,7 +17,7 @@ Name: yast2-bootloader -Version: 3.1.114 +Version: 3.1.115 Release: 0 BuildRoot: %{_tmppath}/%{name}-%{version}-build diff --git a/src/include/bootloader/grub2/dialogs.rb b/src/include/bootloader/grub2/dialogs.rb index 2ba2d0991..352bfe233 100644 --- a/src/include/bootloader/grub2/dialogs.rb +++ b/src/include/bootloader/grub2/dialogs.rb @@ -59,7 +59,7 @@ def boot_code_tab "contents" => VBox( VSquash(HBox( Top(VBox(VSpacing(1), "loader_type")), - Arch.s390 ? Empty() : "loader_location")), + Arch.s390 || Arch.aarch64 ? Empty() : "loader_location")), MarginBox(1, 0.5, "distributor"), MarginBox(1, 0.5, Left("activate")), MarginBox(1, 0.5, Left("generic_mbr")), @@ -285,11 +285,13 @@ def grub2Widgets end def grub2efiWidgets - if Arch.x86_64 - if @_grub2_efi_widgets.nil? + if @_grub2_efi_widgets.nil? + if Arch.x86_64 @_grub2_efi_widgets = { "loader_location" => grub2SecureBootWidget } - @_grub2_efi_widgets.merge! Grub2Options() + else + @_grub2_efi_widgets = {} end + @_grub2_efi_widgets.merge! Grub2Options() end deep_copy(@_grub2_efi_widgets) diff --git a/src/modules/BootCommon.rb b/src/modules/BootCommon.rb index 9c71017f2..8ee7c4b69 100644 --- a/src/modules/BootCommon.rb +++ b/src/modules/BootCommon.rb @@ -407,8 +407,8 @@ def getLoaderType(recheck) @loader_type = "grub2" if ["s390", "ppc", "grub"].include? @loader_type Builtins.y2milestone("Bootloader detection returned %1", @loader_type) - if (Arch.i386 || Arch.x86_64) && boot_efi? - # use grub2-efi as default bootloader for x86_64/i386 EFI + if (Arch.i386 || Arch.x86_64 || Arch.aarch64) && boot_efi? + # use grub2-efi as default bootloader for x86_64/i386/aarch64 EFI @loader_type = "grub2-efi" end @@ -492,8 +492,8 @@ def getBootloaders return SUPPORTED_BOOTLOADERS + ["default"] end ret = [getLoaderType(false)] - ret << "grub2" # grub2 everywhere - ret << "grub2-efi" if Arch.x86_64 + ret << "grub2" unless Arch.aarch64 # grub2 everywhere except aarch64 + ret << "grub2-efi" if Arch.x86_64 || Arch.aarch64 ret << "none" # avoid double entry for selected one ret.uniq diff --git a/src/modules/BootGRUB2EFI.rb b/src/modules/BootGRUB2EFI.rb index c3f14e71a..4bab68c3c 100644 --- a/src/modules/BootGRUB2EFI.rb +++ b/src/modules/BootGRUB2EFI.rb @@ -133,6 +133,8 @@ def BootGRUB2EFI packages = ["grub2-i386-efi"] elsif Arch.x86_64 packages = ["grub2-x86_64-efi", "shim", "mokutil"] + elsif Arch.aarch64 + packages = ["grub2-arm64-efi"] else # do not raise exception as we call constructor everywhere even if it doesn't make sense packages = [] diff --git a/src/modules/BootSupportCheck.rb b/src/modules/BootSupportCheck.rb index b9fca7d49..3ff525bd2 100644 --- a/src/modules/BootSupportCheck.rb +++ b/src/modules/BootSupportCheck.rb @@ -77,7 +77,7 @@ def CorrectLoaderType return true if lt == "none" # grub2 is sooo cool... - return true if lt == "grub2" + return true if lt == "grub2" && !Arch.aarch64 if Arch.i386 || Arch.x86_64 if efi? @@ -86,6 +86,9 @@ def CorrectLoaderType return true if lt == "grub2" end end + + return true if lt == "grub2-efi" && Arch.aarch64 + Builtins.y2error( "Unsupported combination of hardware platform %1 and bootloader %2", Arch.architecture,