diff --git a/roles/netbootxyz/defaults/main.yml b/roles/netbootxyz/defaults/main.yml index 8e6733b7..0dcd9363 100644 --- a/roles/netbootxyz/defaults/main.yml +++ b/roles/netbootxyz/defaults/main.yml @@ -36,6 +36,9 @@ checksums_filename: "{{ site_name }}-sha256-checksums.txt" # bootloader options generate_disks: true +generate_disks_legacy: true +generate_disks_efi: true +generate_disks_arm: false bootloader_https_enabled: true bootloader_http_enabled: true bootloader_disks: diff --git a/roles/netbootxyz/files/ipxe/local/nap.h.efi b/roles/netbootxyz/files/ipxe/local/nap.h.efi deleted file mode 100644 index 1e345eb0..00000000 --- a/roles/netbootxyz/files/ipxe/local/nap.h.efi +++ /dev/null @@ -1,4 +0,0 @@ -/* nap.h */ -#undef NAP_EFIX86 -#undef NAP_EFIARM -#define NAP_NULL diff --git a/roles/netbootxyz/files/ipxe/local/usb.h.efi b/roles/netbootxyz/files/ipxe/local/usb.h.efi deleted file mode 100644 index be2ccaef..00000000 --- a/roles/netbootxyz/files/ipxe/local/usb.h.efi +++ /dev/null @@ -1,2 +0,0 @@ -/* usb.h */ -#define USB_EFI diff --git a/roles/netbootxyz/tasks/generate_disks.yml b/roles/netbootxyz/tasks/generate_disks.yml index 44736b3a..3fb5213a 100644 --- a/roles/netbootxyz/tasks/generate_disks.yml +++ b/roles/netbootxyz/tasks/generate_disks.yml @@ -9,3 +9,7 @@ - include: generate_disks_efi.yml when: - generate_disks_efi | default(true) | bool + + - include: generate_disks_arm.yml + when: + - generate_disks_arm | default(false) | bool \ No newline at end of file diff --git a/roles/netbootxyz/tasks/generate_disks_arm.yml b/roles/netbootxyz/tasks/generate_disks_arm.yml index e69de29b..bb43a4fe 100644 --- a/roles/netbootxyz/tasks/generate_disks_arm.yml +++ b/roles/netbootxyz/tasks/generate_disks_arm.yml @@ -0,0 +1,54 @@ +--- + + - name: Copy netboot.xyz local EFI iPXE configs + copy: + src: "ipxe/local/{{ item }}" + dest: "{{ ipxe_source_dir }}/src/config/local/{{ item }}" + with_items: + - colour.h + - crypto.h + + - name: Copy netboot.xyz general.h.efi iPXE config + copy: + src: "ipxe/local/general.h.efi" + dest: "{{ ipxe_source_dir }}/src/config/local/general.h" + + - name: Set trust file to ipxe ca + set_fact: + trust_files: "{{ cert_dir }}/{{ ipxe_ca_filename }}" + when: not generate_signatures + + - name: Combine trust files if set + set_fact: + trust_files: "{{ cert_dir }}/{{ ipxe_ca_filename }},{{ cert_dir }}/{{ cert_file_filename }}" + when: generate_signatures | bool + + # iPXE workaround + # http://lists.ipxe.org/pipermail/ipxe-devel/2018-August/006254.html + # apply patch to fix arm64 builds on amd64 builds + - name: iPXE Workaround for arm + shell: sed -i '/WORKAROUND_CFLAGS/d' arch/arm64/Makefile + args: + chdir: "{{ ipxe_source_dir }}/src" + tags: + - skip_ansible_lint + + - name: Compile iPXE bootloader for EFI arm64 + shell: | + make clean + make CROSS_COMPILE=aarch64-linux-gnu- ARCH=arm64 \ + EMBED={{ bootloader_filename }} \ + TRUST={{ trust_files }} \ + bin-arm64-efi/snp.efi + args: + chdir: "{{ ipxe_source_dir }}/src" + tags: + - skip_ansible_lint + + - name: Copy iPXE arm64 EFI builds to http directory + copy: + src: "{{ ipxe_source_dir }}/src/{{ item.src }}" + dest: "{{ netbootxyz_root }}/ipxe/{{ item.dest }}" + remote_src: True + with_items: + - { src: "bin-arm64-efi/snp.efi", dest: "{{ bootloader_filename }}-arm64.efi" } diff --git a/script/netbootxyz-overrides.yml b/script/netbootxyz-overrides.yml index 24daa4f6..12c88631 100644 --- a/script/netbootxyz-overrides.yml +++ b/script/netbootxyz-overrides.yml @@ -7,6 +7,7 @@ bootloader_disks: - "netboot.xyz" - "netboot.xyz-packet" generate_signatures: true +generate_disks_arm: true sigs_dir: "{{ netbootxyz_root }}/sigs" sigs_location: "http://${boot_domain}/sigs/" cert_dir: "/ansible/certs"