summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPascal Terjan <pterjan@mageia.org>2019-12-31 19:25:40 +0000
committerPascal Terjan <pterjan@mageia.org>2020-01-01 14:43:45 +0000
commitb20813c771ce7abd72d7c42338f7b1a6b245ff8a (patch)
treec95376690e96b3213bd72231ae76d1f4f58246a2
parentabaa559f8ac6371dd301f0c194745e644d012ca9 (diff)
downloaddrakx-b20813c771ce7abd72d7c42338f7b1a6b245ff8a.tar
drakx-b20813c771ce7abd72d7c42338f7b1a6b245ff8a.tar.gz
drakx-b20813c771ce7abd72d7c42338f7b1a6b245ff8a.tar.bz2
drakx-b20813c771ce7abd72d7c42338f7b1a6b245ff8a.tar.xz
drakx-b20813c771ce7abd72d7c42338f7b1a6b245ff8a.zip
drakboot: support setting up uefi on aarch64
Partially tested on Amazon EC2, instance still didn't boot (as it needed it to be installed in removable mode (EFI/boot/bootaa64.efi) to be found) but at least drakboot --boot worked (except for failing to enabled acpid service) and things seem to be in the expected place.
-rw-r--r--perl-install/NEWS1
-rw-r--r--perl-install/bootloader.pm5
-rw-r--r--perl-install/common.pm11
3 files changed, 13 insertions, 4 deletions
diff --git a/perl-install/NEWS b/perl-install/NEWS
index 50f4c76d3..93abefc46 100644
--- a/perl-install/NEWS
+++ b/perl-install/NEWS
@@ -2,6 +2,7 @@
- recognize new kernel 5.2 - 5.4 drivers
- drakfont:
o don't crash when fonts.cache-1 to delete doesn't exist anymore (mga#21086)
+- drakboot: initial support for setting up uefi on aarch64
Version 18.21 - 23 June 2019
diff --git a/perl-install/bootloader.pm b/perl-install/bootloader.pm
index 7e956cf87..fa678bce4 100644
--- a/perl-install/bootloader.pm
+++ b/perl-install/bootloader.pm
@@ -318,7 +318,7 @@ sub read {
}
# still no boot loader found? let's check for ESP if using UEFI:
if (is_uefi()) {
- if (-f "/boot/EFI/EFI/mageia/grubx64.efi" || -f "/boot/EFI/EFI/mageia/grubia32.efi") {
+ if (-f "/boot/EFI/EFI/mageia/grubx64.efi" || -f "/boot/EFI/EFI/mageia/grubia32.efi" || -f "/boot/efi/EFI/mageia/grubaa64.efi") {
my $bootloader = bootloader::read_grub2();
return $bootloader if read_($bootloader);
}
@@ -2503,6 +2503,9 @@ sub ensure_pkg_is_installed {
if (uefi_type() eq 'ia32') {
$prefix = 'i386-efi';
$pkg = 'grub2-efi(x86-32)';
+ } elsif (uefi_type() eq 'aa64') {
+ $prefix = 'arm64-efi';
+ $pkg = 'grub2-efi(aarch-64)';
} else {
$prefix = 'x86_64-efi';
$pkg = 'grub2-efi(x86-64)';
diff --git a/perl-install/common.pm b/perl-install/common.pm
index 474d34c21..265f7365c 100644
--- a/perl-install/common.pm
+++ b/perl-install/common.pm
@@ -733,8 +733,11 @@ Returns the short name of the UEFI machine type supported by the kernel stub loa
=cut
sub kernel_uefi_type() {
- # No support for ARM yet
- arch() =~ /i.86/ ? 'ia32' : 'x64';
+ my $arch = arch();
+ if ($arch eq 'aarch64') {
+ return 'aa64'
+ }
+ $arch =~ /i.86/ ? 'ia32' : 'x64';
}
=item uefi_type()
@@ -744,8 +747,10 @@ Returns the UEFI machine type short name
=cut
sub uefi_type() {
+ if (arch() eq 'aarch64') {
+ return 'aa64'
+ }
if (-e '/sys/firmware/efi/fw_platform_size') {
- # No support for ARM yet
cat_('/sys/firmware/efi/fw_platform_size') =~ /32/ ? 'ia32' : 'x64';
} else {
'none';