فهرست منبع

Generate arm64 efi disks

Antony Messerli 5 سال پیش
والد
کامیت
f6d0d2b585

+ 3 - 0
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:

+ 0 - 4
roles/netbootxyz/files/ipxe/local/nap.h.efi

@@ -1,4 +0,0 @@
-/* nap.h */
-#undef NAP_EFIX86
-#undef NAP_EFIARM
-#define NAP_NULL

+ 0 - 2
roles/netbootxyz/files/ipxe/local/usb.h.efi

@@ -1,2 +0,0 @@
-/* usb.h */
-#define	USB_EFI	

+ 4 - 0
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

+ 54 - 0
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" }

+ 1 - 0
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"