summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJybz <j.biernacki@free.fr>2023-10-31 16:40:52 +0100
committerJybz <j.biernacki@free.fr>2024-01-07 21:55:46 +0100
commitf02528807875645e1c889bd12134a6c13321cdf2 (patch)
treed14771744d6e2cf56f27df7bee62c1414129c720
parent0290f6c1bc88fe6e7fafb46d7630867593520f91 (diff)
downloaddrakx-f02528807875645e1c889bd12134a6c13321cdf2.tar
drakx-f02528807875645e1c889bd12134a6c13321cdf2.tar.gz
drakx-f02528807875645e1c889bd12134a6c13321cdf2.tar.bz2
drakx-f02528807875645e1c889bd12134a6c13321cdf2.tar.xz
drakx-f02528807875645e1c889bd12134a6c13321cdf2.zip
feat: enable aarch64 build
Includes PTerjan work.
-rw-r--r--Makefile.config2
-rw-r--r--images/Makefile2
-rw-r--r--images/grub2.config28
-rwxr-xr-ximages/make_boot_img82
-rw-r--r--kernel/list_modules.pm3
-rw-r--r--mdk-stage1/init.c2
-rw-r--r--mdk-stage1/rescue-gui.c2
-rw-r--r--perl-install/any.pm2
-rwxr-xr-xperl-install/c/Makefile.PL2
-rw-r--r--perl-install/common.pm2
-rw-r--r--perl-install/install/share/list.xml9
-rwxr-xr-xtools/install-xml-file-list2
12 files changed, 87 insertions, 51 deletions
diff --git a/Makefile.config b/Makefile.config
index dabf65a5b..0c408328e 100644
--- a/Makefile.config
+++ b/Makefile.config
@@ -13,7 +13,7 @@ ARCH := $(ARCH:arm%=arm)
PKG_ARCH := $(ARCH:i386=i586)
-ifeq (x86_64, $(ARCH))
+ifneq (,$(filter $(ARCH), x86_64 aarch64))
LIB = lib64
else
LIB = lib
diff --git a/images/Makefile b/images/Makefile
index e97ab5d45..abbbbfb44 100644
--- a/images/Makefile
+++ b/images/Makefile
@@ -2,7 +2,7 @@ include ../Makefile.config
VERSION=2.91
PRODUCT=drakx-installer-images
-KERNELS=$(shell rpm -qf /lib/modules/4.*)
+KERNELS=$(shell rpm -qf /lib/modules/6.*)
IMAGES_DEST = $(ROOTDEST)/install/images
diff --git a/images/grub2.config b/images/grub2.config
index 9ea55dfd2..0e1c57e90 100644
--- a/images/grub2.config
+++ b/images/grub2.config
@@ -1,12 +1,22 @@
+if test ${grub_cpu} == arm64 ; then set larch=aarch64 ;
+elif test ${grub_cpu} == arm ; then set larch=armv7hl ;
+elif test ${grub_cpu} == i386 ; then set larch=i386 ;
+elif test ${grub_cpu} == x86_64 ; then set larch=x86_64 ;
+else set larch=x86_64 ;
+fi
+
insmod efi_gop
-insmod efi_uga
-insmod video_bochs
-insmod video_cirrus
+if [ ${grub_cpu} == i386 -o ${grub_cpu} == x86_64 ] ; then
+ insmod efi_uga
+ insmod video_bochs
+ insmod video_cirrus
+fi
insmod video_fb
+
insmod font
-if loadfont ${prefix}/fonts/unicode.pf2
+if loadfont ($root)/EFI/BOOT/fonts/unicode.pf2
then
insmod gfxterm
set gfxmode=1024x768,800x600,640x480
@@ -20,16 +30,16 @@ export theme
set timeout=10
-search --no-floppy --set=root -l 'Mageia-9-x86_64-netinstall'
+search --no-floppy --set=root -l 'Mageia-9-netinstall'
menuentry 'Start Mageia 10 (Cauldron) Install' {
- linux /isolinux/x86_64/vmlinuz audit=0 quiet noiswmd
- initrd /isolinux/x86_64/all.rdz
+ linux /isolinux/${larch}/vmlinuz audit=0 quiet noiswmd
+ initrd /isolinux/${larch}/all.rdz
}
menuentry 'Start Mageia 10 (Cauldron) Rescue' {
- linux /isolinux/x86_64/vmlinuz audit=0 noiswmd rescue
- initrd /isolinux/x86_64/all.rdz
+ linux /isolinux/${larch}/vmlinuz audit=0 noiswmd rescue
+ initrd /isolinux/${larch}/all.rdz
}
menuentry 'Memory Test' {
diff --git a/images/make_boot_img b/images/make_boot_img
index c7823b324..7ce9711ea 100755
--- a/images/make_boot_img
+++ b/images/make_boot_img
@@ -37,8 +37,9 @@ mkdir "images";
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 =~ /i.86|x86_64/, 'isolinux', 'all.img', 'hd_grub.img'),
+ 'boot.iso',
+);
my @images = @ARGV ? @ARGV : map { "images/$_" } @all_images;
@@ -266,7 +267,7 @@ sub syslinux_all_files {
rename("images/all.rdz-$_", "$dir/$arch/all.rdz");
} @$kernels;
- _ "install -m 644 -D /boot/memtest* $dir/memtest";
+ _ "install -m 644 -D /boot/memtest* $dir/memtest" if arch() =~ /.*86.*/;
output("$dir/help.msg", syslinux_msg('help.msg.xml'));
output("$dir/advanced.msg", syslinux_msg('advanced.msg.xml',
@@ -313,50 +314,63 @@ EOF
sub boot_iso {
my ($iso, $kernels) = @_;
+ my $arch = arch();
syslinux_all_files('.boot_iso/isolinux', $kernels);
- output('.boot_iso/VERSION', VERSION($kernels));
+ output('.boot_iso/VERSION', VERSION($kernels));
- # 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";
- _ "cp /usr/lib/syslinux/ldlinux.c32 .boot_iso/isolinux/ldlinux.c32";
- _ "cp /usr/lib/syslinux/libcom32.c32 .boot_iso/isolinux/libcom32.c32";
- _ "cp /usr/lib/syslinux/libgpl.c32 .boot_iso/isolinux/libgpl.c32";
- _ "cp /usr/lib/syslinux/libmenu.c32 .boot_iso/isolinux/libmenu.c32";
- _ "cp /usr/lib/syslinux/libutil.c32 .boot_iso/isolinux/libutil.c32";
- _ "cp /usr/lib/syslinux/chain.c32 .boot_iso/isolinux/chain.c32";
-
- my $with_gfxboot = 0;
- _ "cp /usr/share/gfxboot/themes/Mageia/install/* .boot_iso/isolinux" if $with_gfxboot;
-# _ "cp /home/pixel/cooker/soft/theme/mandriva-gfxboot-theme/inst/* .boot_iso/isolinux" if $with_gfxboot;
- #_ "cp /home/teuf/mdv/src/mandriva-gfxboot-theme/inst/* .boot_iso/isolinux" if $with_gfxboot;
- _ "cp /usr/lib/syslinux/gfxboot.c32 .boot_iso/isolinux/gfxboot.c32" if $with_gfxboot;
-
- output('.boot_iso/isolinux/isolinux.cfg', syslinux_cfg_all('', $with_gfxboot));
-
- if ($ENV{BOOT_AUTOMATIC_METHOD}) {
- _ "sed -i 's#\\(append .*\\)\\(splash quiet\\|rescue\\)\$#\\1\\2 automatic=$ENV{BOOT_AUTOMATIC_METHOD}#' .boot_iso/isolinux/isolinux.cfg";
+ if ($arch =~ /.*86.*/) {
+ # 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";
+ _ "cp /usr/lib/syslinux/ldlinux.c32 .boot_iso/isolinux/ldlinux.c32";
+ _ "cp /usr/lib/syslinux/libcom32.c32 .boot_iso/isolinux/libcom32.c32";
+ _ "cp /usr/lib/syslinux/libgpl.c32 .boot_iso/isolinux/libgpl.c32";
+ _ "cp /usr/lib/syslinux/libmenu.c32 .boot_iso/isolinux/libmenu.c32";
+ _ "cp /usr/lib/syslinux/libutil.c32 .boot_iso/isolinux/libutil.c32";
+ _ "cp /usr/lib/syslinux/chain.c32 .boot_iso/isolinux/chain.c32";
+
+ my $with_gfxboot = 0;
+ _ "cp /usr/share/gfxboot/themes/Mageia/install/* .boot_iso/isolinux" if $with_gfxboot;
+ #_ "cp /home/pixel/cooker/soft/theme/mandriva-gfxboot-theme/inst/* .boot_iso/isolinux" if $with_gfxboot;
+ #_ "cp /home/teuf/mdv/src/mandriva-gfxboot-theme/inst/* .boot_iso/isolinux" if $with_gfxboot;
+ _ "cp /usr/lib/syslinux/gfxboot.c32 .boot_iso/isolinux/gfxboot.c32" if $with_gfxboot;
+
+ output('.boot_iso/isolinux/isolinux.cfg', syslinux_cfg_all('', $with_gfxboot));
+
+ if ($ENV{BOOT_AUTOMATIC_METHOD}) {
+ _ "sed -i 's#\\(append .*\\)\\(splash quiet\\|rescue\\)\$#\\1\\2 automatic=$ENV{BOOT_AUTOMATIC_METHOD}#' .boot_iso/isolinux/isolinux.cfg";
+ }
+ my $options = "-joliet -joliet-long -rational-rock -verbose -T -eltorito-boot isolinux/isolinux.bin -eltorito-catalog isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table";
+ } else {
+ my $options = "-joliet -joliet-long -rational-rock -verbose -T -no-emul-boot -boot-load-size 4 -boot-info-table";
}
- 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 $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";
+ my $cmd = "xorriso -as mkisofs -untranslated-filenames -appid 'Mageia-$ENV{DISTRIB_VERSION}-netinstall' -volid 'Mageia-$ENV{DISTRIB_VERSION}-netinstall' -volset 'Mageia-$ENV{DISTRIB_VERSION}' $options";
+
# create efi stuff on the fly
- if ($arch =~ /x86_64/) {
+ if (!($arch =~ /i.86/)) {
_ "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_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";
- _ "cp -f grub2.config .boot_iso/EFI/BOOT/grub.cfg";
+
+ _ "cp -f grub2.config wip-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";
+ _ "sed -i '/linux /s|\\$| automatic=$ENV{BOOT_AUTOMATIC_METHOD}|' wip-grub.cfg";
+ _ "sed -i 's#timeout=[0-9]*#timeout=1#' wip-grub.cfg";
+ }
+ use feature "switch";
+ given ($arch) {
+ when ('aarch64') { _ "/usr/bin/grub2-mkstandalone -O arm64-efi -o .boot_iso/EFI/BOOT/bootaa64.efi 'boot/grub/grub.cfg=./wip-grub.cfg' "; }
+ when ('armv7hl') { _ "/usr/bin/grub2-mkstandalone -O arm-efi -o .boot_iso/EFI/BOOT/bootaa32.efi 'boot/grub/grub.cfg=./wip-grub.cfg' "; }
+ when ('x86_64') { _ "/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"; }
+ default { print STDERR "Unexpected arch" ; }
}
# add theme
+ _ "cp -f wip-grub.cfg .boot_iso/EFI/BOOT/grub.cfg";
_ "cp -r -L /boot/grub2/themes .boot_iso/EFI/BOOT/";
_ "cp -f grub2.theme .boot_iso/EFI/BOOT/themes/maggy/theme.txt";
_ "mkdir -p .boot_iso/EFI/BOOT/fonts";
@@ -368,7 +382,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 =~ /.*86./) {
+ _ "isohybrid -u $iso";
+ }
} else {
_ "$cmd -o $iso .boot_iso";
_ "isohybrid -o 1 $iso";
diff --git a/kernel/list_modules.pm b/kernel/list_modules.pm
index ee0d1f77b..566ce928c 100644
--- a/kernel/list_modules.pm
+++ b/kernel/list_modules.pm
@@ -329,6 +329,9 @@ our %l = (
'cryptoloop',
'ulpi',
+ # Try pinbook pro display
+ qw(rockchipdrm phy-rockchip-inno-dsidphy phy-rockchip-naneng-combphy phy-rockchip-pcie phy-rockchip-typec pcie-rockchip-host io-domain rockchip-nand-controller spi-rockchip-sfc rockchip-rga rockchip_thermal rockchip_saradc hantro_vpu rockchip_rga videobuf2_dma_contig videobuf2_dma_sg videobuf2_vmalloc videobuf2_memops videobuf2_common industrialio_triggered_buffer usb_storage hid_multitouch mmc_block xhci_plat_hcd rtc_rk808 rk808_regulator clk_rk808 dw_hdmi polyval_ce panel_edp gpio_keys panfrost phy_rockchip_emmc phy_rockchip_inno_usb2 gpu_sched io_domain phy_rockchip_typec drm_dp_aux_bus pl330 pwm_rockchip sdhci_of_arasan sdhci_pltfm ohci_platform cqhci spi_rockchip ohci_hcd pwm_bl dw_mmc_rockchip ehci_platform dw_mmc_pltfm dw_mmc cpufreq_dt),
+
# Virtualization:
qw(hv_balloon pci-hyperv pci-hyperv-intf),
qw(mlx5-vfio-pci),
diff --git a/mdk-stage1/init.c b/mdk-stage1/init.c
index 7c48f64ec..7f18c3ee0 100644
--- a/mdk-stage1/init.c
+++ b/mdk-stage1/init.c
@@ -59,7 +59,7 @@ static inline long reboot(unsigned int command)
char * env[] = {
"PATH=/usr/bin:/bin:/sbin:/usr/sbin:/mnt/sbin:/mnt/usr/sbin:/mnt/bin:/mnt/usr/bin",
"LD_LIBRARY_PATH=/lib:/usr/lib:/mnt/lib:/mnt/usr/lib"
-#if defined(__x86_64__)
+#if defined(__x86_64__) || defined(__aarch64__)
":/lib64:/usr/lib64:/mnt/lib64:/mnt/usr/lib64"
#endif
,
diff --git a/mdk-stage1/rescue-gui.c b/mdk-stage1/rescue-gui.c
index c7aae6126..e1b14be2e 100644
--- a/mdk-stage1/rescue-gui.c
+++ b/mdk-stage1/rescue-gui.c
@@ -48,7 +48,7 @@ static inline long reboot(void)
char * env[] = {
"PATH=/usr/bin:/bin:/sbin:/usr/sbin:/mnt/sbin:/mnt/usr/sbin:/mnt/bin:/mnt/usr/bin",
"LD_LIBRARY_PATH=/lib:/usr/lib:/mnt/lib:/mnt/usr/lib"
-#if defined(__x86_64__)
+#if defined(__x86_64__) || defined(__aarch64__)
":/lib64:/usr/lib64:/mnt/lib64:/mnt/usr/lib64"
#endif
,
diff --git a/perl-install/any.pm b/perl-install/any.pm
index 9ffe0a86d..4b697bc5d 100644
--- a/perl-install/any.pm
+++ b/perl-install/any.pm
@@ -991,7 +991,7 @@ sub writeandclean_ldsoconf {
my @default = ('/lib', '/usr/lib'); #- no need to have /lib and /usr/lib in ld.so.conf
my @suggest = ('/usr/lib/qt3/lib'); #- needed for upgrade where package renaming can cause this to disappear
- if (arch() =~ /x86_64/) {
+ if (arch() =~ /.*64$/) {
@default = map { $_, $_ . '64' } @default;
@suggest = map { $_, $_ . '64' } @suggest;
}
diff --git a/perl-install/c/Makefile.PL b/perl-install/c/Makefile.PL
index f776d27f2..8b4c08a6f 100755
--- a/perl-install/c/Makefile.PL
+++ b/perl-install/c/Makefile.PL
@@ -4,7 +4,7 @@ use Config;
# See lib/ExtUtils/MakeMaker.pm for details of how to influence
# the contents of the Makefile that is written.
-my $lib = arch() =~ /x86_64/ ? 'lib64' : 'lib';
+my $lib = arch() =~ /64$/ ? 'lib64' : 'lib';
my $libs = '-lldetect -lparted';
diff --git a/perl-install/common.pm b/perl-install/common.pm
index 508e6b31f..82c101dfa 100644
--- a/perl-install/common.pm
+++ b/perl-install/common.pm
@@ -715,7 +715,7 @@ sub update_gnomekderc_no_create {
}
sub get_libdir() {
- arch() =~ /x86_64/ ? "lib64" : "lib";
+ arch() =~ /64$/ ? "lib64" : "lib";
}
=item is_uefi()
diff --git a/perl-install/install/share/list.xml b/perl-install/install/share/list.xml
index 9c18a3ae9..828a623ce 100644
--- a/perl-install/install/share/list.xml
+++ b/perl-install/install/share/list.xml
@@ -241,11 +241,13 @@
</from>
<filter command="strip">
+<from dir="/lib">
+ ld-linux*.so.*
+</from>
<from dir="/LIB">
libnss_files.so.2
libnss_dns.so.2
libresolv.so.2
- ld-linux*.so.*
<!-- needed for mount.ntfs-3g -->
libfuse.so.2
@@ -575,6 +577,11 @@
asm/unistd_32.ph
asm/unistd_64.ph
</if>
+ <if ARCH="aarch64">
+ asm-generic/unistd.ph
+ asm-generic/bitsperlong.ph
+ asm/bitsperlong.ph
+ </if>
asm/unistd.ph
auto/B/B.so
auto/Cwd/Cwd.so
diff --git a/tools/install-xml-file-list b/tools/install-xml-file-list
index 64c70b9c6..f0bf5fd23 100755
--- a/tools/install-xml-file-list
+++ b/tools/install-xml-file-list
@@ -25,7 +25,7 @@ my $verbose;
my $initial_dir = cwd();
my $ARCH = arch() =~ /i.86/ ? 'i386' : arch();
$ARCH =~ s/^(arm).*/$1/;
-my $LIB = arch() =~ /x86_64/ ? "lib64" : "lib";
+my $LIB = arch() =~ /64$/ ? "lib64" : "lib";
my $base_cpio_options = '-pumd --quiet';