From 802501cc8500eb060bf8577175b702db4d8eeb01 Mon Sep 17 00:00:00 2001
From: Antony
Date: Wed, 13 Jan 2021 20:49:25 -0600
Subject: [PATCH] Add support for iPXE hybrid disks
Combins EFI and Legacy into one disk
---
roles/netbootxyz/defaults/main.yml | 10 +++++++++
roles/netbootxyz/tasks/generate_disks.yml | 7 +++++++
.../tasks/generate_disks_hybrid.yml | 21 +++++++++++++++++++
roles/netbootxyz/templates/index.html.j2 | 20 ++++++++++++++++++
script/netbootxyz-overrides.yml | 1 +
5 files changed, 59 insertions(+)
create mode 100644 roles/netbootxyz/tasks/generate_disks_hybrid.yml
diff --git a/roles/netbootxyz/defaults/main.yml b/roles/netbootxyz/defaults/main.yml
index e366e204..612b8ffd 100644
--- a/roles/netbootxyz/defaults/main.yml
+++ b/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
diff --git a/roles/netbootxyz/tasks/generate_disks.yml b/roles/netbootxyz/tasks/generate_disks.yml
index 5751aea8..7232c5ff 100644
--- a/roles/netbootxyz/tasks/generate_disks.yml
+++ b/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"
diff --git a/roles/netbootxyz/tasks/generate_disks_hybrid.yml b/roles/netbootxyz/tasks/generate_disks_hybrid.yml
new file mode 100644
index 00000000..c351a712
--- /dev/null
+++ b/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
diff --git a/roles/netbootxyz/templates/index.html.j2 b/roles/netbootxyz/templates/index.html.j2
index ebd621c7..56c32130 100644
--- a/roles/netbootxyz/templates/index.html.j2
+++ b/roles/netbootxyz/templates/index.html.j2
@@ -34,6 +34,26 @@ exit
Powered by netboot.xyz
+{% if generate_disks_hybrid == true %}
+ Hybrid iPXE Bootloaders - Legacy/EFI
+
+{% endif %}
+
{% if generate_disks_legacy == true %}
Legacy (PCBIOS) iPXE Bootloaders
diff --git a/script/netbootxyz-overrides.yml b/script/netbootxyz-overrides.yml
index 30dedea4..9d5d14d9 100644
--- a/script/netbootxyz-overrides.yml
+++ b/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