Jelajahi Sumber

Merge pull request #1006 from netbootxyz/ubuntu_arm

Adds support for Ubuntu arm64 builds
Antony Messerli 3 tahun lalu
induk
melakukan
0700038d95

+ 2 - 0
roles/netbootxyz/defaults/main.yml

@@ -593,6 +593,8 @@ releases:
     menu: linux
     menu: linux
     mirror: http://archive.ubuntu.com
     mirror: http://archive.ubuntu.com
     name: Ubuntu
     name: Ubuntu
+    ports_dir: ubuntu-ports
+    ports_mirror: http://ports.ubuntu.com
     versions:
     versions:
     - code_name: hirsute
     - code_name: hirsute
       name: 21.04 Hirsute Hippo
       name: 21.04 Hirsute Hippo

+ 1 - 0
roles/netbootxyz/templates/menu/linux-arm.ipxe.j2

@@ -13,6 +13,7 @@ item gentoo ${space} Gentoo
 item fedora ${space} Fedora
 item fedora ${space} Fedora
 item rhel ${space} Red Hat Enterprise Linux
 item rhel ${space} Red Hat Enterprise Linux
 item rockylinux ${space} Rocky Linux
 item rockylinux ${space} Rocky Linux
+item ubuntu ${space} Ubuntu
 choose menu || goto linux_exit
 choose menu || goto linux_exit
 echo ${cls}
 echo ${cls}
 goto ${menu} ||
 goto ${menu} ||

+ 12 - 6
roles/netbootxyz/templates/menu/ubuntu.ipxe.j2

@@ -9,6 +9,7 @@ goto ${menu}
 set os Ubuntu
 set os Ubuntu
 set os_arch ${arch}
 set os_arch ${arch}
 iseq ${os_arch} x86_64 && set os_arch amd64 ||
 iseq ${os_arch} x86_64 && set os_arch amd64 ||
+iseq ${os_arch} arm64 && set os_arch arm64 ||
 clear ubuntu_version
 clear ubuntu_version
 clear install_type
 clear install_type
 clear older_release
 clear older_release
@@ -41,8 +42,11 @@ goto boot_type
 
 
 :mirrorcfg
 :mirrorcfg
 set mirrorcfg mirror/suite=${ubuntu_version}
 set mirrorcfg mirror/suite=${ubuntu_version}
-set dir ${ubuntu_base_dir}/dists/${ubuntu_version}-updates/main/installer-${os_arch}/current/images/netboot/
-iseq ${ubuntu_version} focal && set dir ${ubuntu_base_dir}/dists/${ubuntu_version}-updates/main/installer-${os_arch}/current/legacy-images/netboot/ ||
+iseq ${os_arch} arm64 && set ubuntu_mirror {{ releases.ubuntu.ports_mirror }} ||
+iseq ${os_arch} amd64 && set dir ${ubuntu_base_dir}/dists/${ubuntu_version}-updates/main/installer-${os_arch}/current/images/netboot/ ||
+iseq ${os_arch} amd64 && iseq ${ubuntu_version} focal && set dir ${ubuntu_base_dir}/dists/${ubuntu_version}-updates/main/installer-${os_arch}/current/legacy-images/netboot/ ||
+iseq ${os_arch} arm64 && set dir {{ releases.ubuntu.ports_dir }}/dists/${ubuntu_version}-updates/main/installer-${os_arch}/current/images/netboot/ ||
+iseq ${os_arch} arm64 && iseq ${ubuntu_version} focal && set dir {{ releases.ubuntu.ports_dir }}/dists/${ubuntu_version}-updates/main/installer-${os_arch}/current/legacy-images/netboot/ ||
 goto boot_type
 goto boot_type
 
 
 :boot_type
 :boot_type
@@ -75,11 +79,11 @@ goto deb_install
 
 
 :deb_install
 :deb_install
 iseq ${install_type} deb && goto deb_boot ||
 iseq ${install_type} deb && goto deb_boot ||
-iseq ${install_type} sub && goto ${ubuntu_version} ||
+iseq ${install_type} sub && goto ${ubuntu_version}_${os_arch} ||
 
 
 :deb_boot
 :deb_boot
 echo Loading Ubuntu PXE netboot installer
 echo Loading Ubuntu PXE netboot installer
-set dir ${dir}${menu}-installer/${os_arch}
+set dir ${dir}ubuntu-installer/${os_arch}
 imgfree
 imgfree
 kernel ${ubuntu_mirror}/${dir}/linux ${install_params} ${mirrorcfg} {{ kernel_params }}
 kernel ${ubuntu_mirror}/${dir}/linux ${install_params} ${mirrorcfg} {{ kernel_params }}
 initrd ${ubuntu_mirror}/${dir}/initrd.gz
 initrd ${ubuntu_mirror}/${dir}/initrd.gz
@@ -91,7 +95,7 @@ boot
 {% for key, value in endpoints.items() | sort %}
 {% for key, value in endpoints.items() | sort %}
 {% if value.os == "ubuntu" and 'netboot' in key %}
 {% if value.os == "ubuntu" and 'netboot' in key %}
 {% set kernel_name = value.kernel %}
 {% set kernel_name = value.kernel %}
-:{{ value.codename }}
+:{{ value.codename }}_{{ value.arch }}
 {% for key, value in endpoints.items() | sort %}
 {% for key, value in endpoints.items() | sort %}
 {% if key == kernel_name %}
 {% if key == kernel_name %}
 set kernel_url ${live_endpoint}{{ value.path }}
 set kernel_url ${live_endpoint}{{ value.path }}
@@ -105,7 +109,9 @@ goto sub_boot
 
 
 :sub_boot
 :sub_boot
 imgfree
 imgfree
-isset ${dhcp-server} && set netboot_params ip=dhcp url=http://releases.ubuntu.com/${codename}/ubuntu-${version_number}-live-server-${os_arch}.iso || set netboot_params
+iseq ${os_arch} amd64 && set ubuntu_iso_url http://releases.ubuntu.com/${codename}/ubuntu-${version_number}-live-server-${os_arch}.iso ||
+iseq ${os_arch} arm64 && set ubuntu_iso_url http://cdimage.ubuntu.com/releases/${version_number}/release/${codename}/ubuntu-${version_number}-live-server-${os_arch}.iso ||
+isset ${dhcp-server} && set netboot_params ip=dhcp url=${ubuntu_iso_url} || set netboot_params
 echo Loading Ubuntu Subiquity Network Installer...
 echo Loading Ubuntu Subiquity Network Installer...
 kernel ${kernel_url}vmlinuz root=/dev/ram0 ramdisk_size=1500000 ${netboot_params} ${install_params} {{ kernel_params }}
 kernel ${kernel_url}vmlinuz root=/dev/ram0 ramdisk_size=1500000 ${netboot_params} ${install_params} {{ kernel_params }}
 initrd ${kernel_url}initrd
 initrd ${kernel_url}initrd