Pārlūkot izejas kodu

Add support for iPXE hybrid disks

Combins EFI and Legacy into one disk
Antony 4 gadi atpakaļ
vecāks
revīzija
802501cc85

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

@@ -11,6 +11,15 @@ bootloaders:
     ipxe_bin: snp.efi
     output_bin: -arm64.efi
     type: DHCP-snp
+  hybrid:
+  - desc: Used for CD/DVD, Virtual CDs, DRAC/iLO, VMware, Virtual Box
+    ipxe_bin: ipxe.iso
+    output_bin: .iso
+    type: ISO
+  - desc: Used for creation of USB Keys
+    ipxe_bin: ipxe.usb
+    output_bin: .usb
+    type: USB 
   legacy:
   - desc: Used for CD/DVD, Virtual CDs, DRAC/iLO, VMware, Virtual Box
     ipxe_bin: ipxe.iso
@@ -79,6 +88,7 @@ generate_checksums: true
 generate_disks: true
 generate_disks_arm: false
 generate_disks_efi: true
+generate_disks_hybrid: false
 generate_disks_legacy: true
 generate_disks_rpi: false
 generate_menus: true

+ 7 - 0
roles/netbootxyz/tasks/generate_disks.yml

@@ -18,3 +18,10 @@
     when:
     - generate_disks_rpi | default(false) | bool
     - bootloader_filename == "netboot.xyz"
+
+  - include: generate_disks_hybrid.yml
+    when:
+    - generate_disks_hybrid | default(false) | bool
+    - generate_disks_legacy | default(true) | bool
+    - generate_disks_efi | default(true) | bool
+    - bootloader_filename == "netboot.xyz"

+ 21 - 0
roles/netbootxyz/tasks/generate_disks_hybrid.yml

@@ -0,0 +1,21 @@
+---
+
+  - name: Generate hybrid ISO image
+    shell: |
+      ./util/genfsimg -o {{ netbootxyz_root }}/ipxe/{{ bootloader_filename }}-hybrid.iso \
+        {{ netbootxyz_root }}/ipxe/{{ bootloader_filename }}.efi \
+        {{ netbootxyz_root }}/ipxe/{{ bootloader_filename }}.lkrn
+    args:
+      chdir: "{{ ipxe_source_dir }}/src"
+    tags:
+    - skip_ansible_lint
+
+  - name: Generate hybrid USB image
+    shell: |
+      ./util/genfsimg -o {{ netbootxyz_root }}/ipxe/{{ bootloader_filename }}-hybrid.usb \
+        {{ netbootxyz_root }}/ipxe/{{ bootloader_filename }}.efi \
+        {{ netbootxyz_root }}/ipxe/{{ bootloader_filename }}.lkrn
+    args:
+      chdir: "{{ ipxe_source_dir }}/src"
+    tags:
+    - skip_ansible_lint

+ 20 - 0
roles/netbootxyz/templates/index.html.j2

@@ -34,6 +34,26 @@ exit
   Powered by <a href=https://netboot.xyz>netboot.xyz</a>
   </p>
 
+{% if generate_disks_hybrid == true %}
+  <p>Hybrid iPXE Bootloaders - Legacy/EFI</p>
+  <table style="width:100%">
+    <!-- table header -->
+    <tr>
+       <th> Type </th>
+       <th> Bootloader </th>
+       <th> Description </th>
+    </tr>
+    <!-- table rows -->
+    {% for item in bootloaders.hybrid %}
+    <tr>
+       <td> {{ item.type }} </td>
+       <td> <a href="ipxe/{{ site_name }}{{ item.output_bin }}">{{ site_name }}{{ item.output_bin }}</a> </td>
+       <td> {{ item.desc }} </td>
+    </tr>
+    {% endfor %}
+  </table>
+{% endif %}
+
 {% if generate_disks_legacy == true %}
   <p>Legacy (PCBIOS) iPXE Bootloaders</p>
   <table style="width:100%">

+ 1 - 0
script/netbootxyz-overrides.yml

@@ -2,6 +2,7 @@
 sigs_menu: true
 sigs_enabled: true
 generate_disks_arm: true
+generate_disks_hybrid: true
 generate_disks_rpi: true
 generate_version_file: true
 bootloader_multiple: true