summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPascal Terjan <pterjan@gmail.com>2023-05-05 19:58:15 +0000
committerPascal Terjan <pterjan@gmail.com>2023-05-28 18:52:30 +0000
commit69f18685326a2a977422d7b7ba8251658d33344e (patch)
tree2ea8bb67acd26ac7345c095ca72ed7570c2ed9d7
parent368aad83839e38e2bd77dc3b075feb196827fef8 (diff)
downloaddrakx-69f18685326a2a977422d7b7ba8251658d33344e.tar
drakx-69f18685326a2a977422d7b7ba8251658d33344e.tar.gz
drakx-69f18685326a2a977422d7b7ba8251658d33344e.tar.bz2
drakx-69f18685326a2a977422d7b7ba8251658d33344e.tar.xz
drakx-69f18685326a2a977422d7b7ba8251658d33344e.zip
Add support for generating boot.iso on aarch64
-rwxr-xr-ximages/make_boot_img48
1 files changed, 37 insertions, 11 deletions
diff --git a/images/make_boot_img b/images/make_boot_img
index c7823b324..d573ad620 100755
--- a/images/make_boot_img
+++ b/images/make_boot_img
@@ -38,6 +38,7 @@ my @kernels = chomp_(cat_('all.kernels/.list'));
my @all_images = (
if_($arch =~ /i.86|x86_64/, 'isolinux', 'boot.iso', 'all.img', 'hd_grub.img'),
+ if_($arch =~ /aarch64/, 'boot.iso'),
);
my @images = @ARGV ? @ARGV : map { "images/$_" } @all_images;
@@ -193,6 +194,7 @@ sub entries_append {
sub syslinux_cfg_all {
my ($type, $b_gfxboot) = @_;
+ my $arch = arch();
syslinux_cfg([
(map {
{ kernel => "$arch/vmlinuz", initrd => "$arch/all.rdz", %$_ };
@@ -201,7 +203,7 @@ sub syslinux_cfg_all {
{ label => $arch, kernel => "$arch/vmlinuz", initrd => "$arch/all.rdz",
append => join(' ', grep { $_ } $default_append, $default_acpi, $default_vga, $default_iswmd) };
} @kernels),
- { label => 'memtest', kernel => 'memtest' },
+ if_($arch =~ /i.86|x86_64/, { label => 'memtest', kernel => 'memtest' }),
], $b_gfxboot);
}
sub remove_ending_zero {
@@ -242,6 +244,7 @@ sub boot_img_i386 {
# alias to x86 variant, slightly bigger with images though
sub boot_img_x86_64 { &boot_img_i386 }
+sub boot_img_aarch64 { }
sub VERSION {
my ($kernels) = @_;
@@ -266,7 +269,10 @@ sub syslinux_all_files {
rename("images/all.rdz-$_", "$dir/$arch/all.rdz");
} @$kernels;
- _ "install -m 644 -D /boot/memtest* $dir/memtest";
+ my $arch = arch();
+ if ($arch =~ /i.x6|x86_64/) {
+ _ "install -m 644 -D /boot/memtest* $dir/memtest";
+ }
output("$dir/help.msg", syslinux_msg('help.msg.xml'));
output("$dir/advanced.msg", syslinux_msg('advanced.msg.xml',
@@ -318,6 +324,9 @@ sub boot_iso {
output('.boot_iso/VERSION', VERSION($kernels));
+ my $arch = arch();
+ if ($arch =~ /i.x6|x86_64/) {
+
# for the boot iso, use standard isolinux
_ "cp $isolinux_bin .boot_iso/isolinux/isolinux.bin";
_ "cp /usr/lib/syslinux/ifcpu.c32 .boot_iso/isolinux/ifcpu.c32";
@@ -336,29 +345,44 @@ sub boot_iso {
output('.boot_iso/isolinux/isolinux.cfg', syslinux_cfg_all('', $with_gfxboot));
- if ($ENV{BOOT_AUTOMATIC_METHOD}) {
+ if ($ENV{BOOT_AUTOMATIC_METHOD} && $arch eq 'x86_64') {
_ "sed -i 's#\\(append .*\\)\\(splash quiet\\|rescue\\)\$#\\1\\2 automatic=$ENV{BOOT_AUTOMATIC_METHOD}#' .boot_iso/isolinux/isolinux.cfg";
}
- my $arch = arch();
- my $options = "-J -joliet-long -r -v -T -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table";
+ }
+ my $options = $arch != "aarch64" ? "-J -joliet-long -r -v -T -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table" : "";
my $cmd = "xorriso -as mkisofs -U -A 'Mageia-$ENV{DISTRIB_VERSION}-$arch-netinstall' -V 'Mageia-$ENV{DISTRIB_VERSION}-$arch-netinstall' -volset 'Mageia-$ENV{DISTRIB_VERSION}-$arch' $options";
+
# create efi stuff on the fly
- if ($arch =~ /x86_64/) {
+ if ($arch =~ /x86_64|aarch64/) {
_ "mkdir -p .boot_iso/EFI/BOOT/";
# create efi loader
- my $efi_core = "configfile normal boot linux linux32 loadenv ls reboot search search_label";
+ my $efi_core = "configfile normal boot linux loadenv ls reboot search search_label";
my $efi_part_fs = "part_msdos part_gpt part_apple fat iso9660 udf";
- my $efi_gfx = "gfxmenu gfxterm efi_gop efi_uga video video_bochs video_cirrus video_fb font png";
- _ "/usr/bin/grub2-mkimage --prefix='/EFI/BOOT' -O x86_64-efi -o .boot_iso/EFI/BOOT/bootx64.efi $efi_core $efi_part_fs $efi_gfx";
+ my $efi_gfx = "gfxmenu gfxterm efi_gop video video_fb font png";
+ if ($arch eq 'x86_64') {
+ $efi_core .= " linux32";
+ $efi_gfx .= " efi_uga video_bochs video_cirrus";
+ }
+ if ($arch eq 'aarch64') {
+ $efi_core .= " gzio";
+ }
+ my $grub_fmt = $arch == 'aarch64' ? 'arm64-efi' : 'x86_64-efi';
+ my $grub_img = $arch == 'aarch64' ? 'bootaa64.efi' : 'bootx64.efi';
+ _ "/usr/bin/grub2-mkimage --prefix='/EFI/BOOT' -O $grub_fmt -o .boot_iso/EFI/BOOT/$grub_img $efi_core $efi_part_fs $efi_gfx";
_ "cp -f grub2.config .boot_iso/EFI/BOOT/grub.cfg";
if ($ENV{BOOT_AUTOMATIC_METHOD}) {
_ "sed -i 's#\\(linux .*\\)#\\1 automatic=$ENV{BOOT_AUTOMATIC_METHOD}#' .boot_iso/EFI/BOOT/grub.cfg";
_ "sed -i 's#timeout=[0-9]*#timeout=1#' .boot_iso/EFI/BOOT/grub.cfg";
}
+ if ($arch ne 'x86_64') {
+ _ "sed -i 's#x86_64#$arch#g' .boot_iso/EFI/BOOT/grub.cfg";
+ }
# add theme
_ "cp -r -L /boot/grub2/themes .boot_iso/EFI/BOOT/";
- _ "cp -f grub2.theme .boot_iso/EFI/BOOT/themes/maggy/theme.txt";
+ if ($arch eq 'x86_64') {
+ _ "cp -f grub2.theme .boot_iso/EFI/BOOT/themes/maggy/theme.txt";
+ }
_ "mkdir -p .boot_iso/EFI/BOOT/fonts";
_ "cp -f /usr/share/grub/unicode.pf2 .boot_iso/EFI/BOOT/fonts/";
# create efiboot.img, mtools wants the image to be a power of 32.
@@ -368,7 +392,9 @@ sub boot_iso {
_ "mcopy -s -i $efi_img .boot_iso/EFI ::";
# create iso
_ "$cmd -eltorito-alt-boot -e isolinux/efiboot.img -no-emul-boot -o $iso .boot_iso";
- _ "isohybrid -u $iso";
+ if ($arch =~ /x86_64/) {
+ _ "isohybrid -u $iso";
+ }
} else {
_ "$cmd -o $iso .boot_iso";
_ "isohybrid -o 1 $iso";