Browse Source

Merge pull request #496 from netbootxyz/development

Release 2.0.4-RC
Antony Messerli 5 years ago
parent
commit
b5207d79e2

+ 5 - 4
README.md

@@ -108,8 +108,9 @@ In addition to being able to host netboot.xyz locally, you can also create your
 |Devuan| https://devuan.org | Yes | No |
 |Elementary OS| https://elementary.io | No | Yes |
 |Fedora| https://fedoraproject.org | Yes | Yes |
+|Feren OS| https://ferenos.weebly.com/ | Yes | No |
 |Flatcar Linux|https://www.flatcar-linux.org| Yes | No |
-|FreeBSD|https://freebsd.org| No, disk image | No |
+|FreeBSD|https://freebsd.org| Yes, disk image | No |
 |FreeDOS|http://www.freedos.org| ISO - Memdisk| No |
 |Gentoo|https://gentoo.org| Not Working | No |
 |IPFire|https://www.ipfire.org| Yes | No |
@@ -144,9 +145,9 @@ In addition to being able to host netboot.xyz locally, you can also create your
 | Name       | URL                     | Installer Kernel | Live OS |
 |------------|-------------------------|------------------|---------|
 |ALT Linux Rescue|https://en.altlinux.org/Rescue| ISO - Memdisk | - |
-|Breakin|http://www.advancedclustering.com/products/software/breakin/| ISO - Memdisk | - |
-|Clonezilla|http://www.clonezilla.org/| ISO - Memdisk | - |
-|DBAN|http://www.dban.org/| ISO - Memdisk | - |
+|Breakin|http://www.advancedclustering.com/products/software/breakin/| Yes | Yes |
+|Clonezilla|http://www.clonezilla.org/| - | Yes |
+|DBAN|http://www.dban.org/| Yes | Yes |
 |GParted|http://gparted.org| ISO - Memdisk | - |
 |Grml|http://grml.org| ISO - Memdisk | - |
 |Memtest|http://www.memtest.org/| Yes | - |

+ 125 - 1
endpoints.yml

@@ -544,7 +544,7 @@ endpoints:
     flavor: eoan
     kernel: voyager-eoan-squash
   kde-neon-user:
-    path: /ubuntu-squash/releases/download/20191226-1116-4cec4542/
+    path: /ubuntu-squash/releases/download/20200102-1116-4cec4542/
     files:
     - vmlinuz
     - filesystem.squashfs
@@ -601,3 +601,127 @@ endpoints:
     os: Deepin
     version: '15'
     kernel: deepin-15-squash
+  mfsbsd-8:
+    path: /asset-mirror/releases/download/8.4-b6071b6e/
+    files:
+    - default.img
+    - special-edition.img
+    os: freebsd
+    version: '8'
+  mfsbsd-9:
+    path: /asset-mirror/releases/download/9.2-1dfc6379/
+    files:
+    - default.img
+    - special-edition.img
+    os: freebsd
+    version: '9'
+  mfsbsd-10:
+    path: /asset-mirror/releases/download/10.3-b257c1ce/
+    files:
+    - default.img
+    - special-edition.img
+    os: freebsd
+    version: '10'
+  mfsbsd-11:
+    path: /asset-mirror/releases/download/11.2-aecc58ac/
+    files:
+    - default.img
+    - special-edition.img
+    os: freebsd
+    version: '11'
+  mfsbsd-12:
+    path: /asset-mirror/releases/download/12.1-4e5dcbb5/
+    files:
+    - default.img
+    - special-edition.img
+    os: freebsd
+    version: '12'
+  q4os-3.10-default-squash:
+    path: /debian-squash/releases/download/3.10-0e917808/
+    files:
+    - filesystem.squashfs
+    - initrd
+    - vmlinuz
+    os: Q4OS
+    version: '3.10'
+    flavor: trinity
+    kernel: q4os-3.10-default-squash
+  q4os-3.10-plasma-squash:
+    path: /debian-squash/releases/download/3.10-15a7415a/
+    files:
+    - filesystem.squashfs
+    os: Q4OS
+    version: '3.10'
+    flavor: plasma
+    kernel: q4os-3.10-default-squash
+  feren-squash:
+    path: /ubuntu-squash/releases/download/12-2019-37ab2592/
+    files:
+    - filesystem.squashfs
+    - initrd
+    - vmlinuz
+    os: feren
+    version: standard
+    kernel: feren-squash
+  feren-classic-squash:
+    path: /ubuntu-squash/releases/download/12-2019-df757635/
+    files:
+    - filesystem.squashfs
+    - initrd
+    - vmlinuz
+    os: feren
+    version: classic
+    kernel: feren-classic-squash
+  clonezilla-debian-stable:
+    path: /debian-squash/releases/download/2.6.4-10-3f4ea5e2/
+    files:
+    - filesystem.squashfs
+    - initrd
+    - vmlinuz
+    os: clonezilla
+    version: debian
+    flavor: stable
+    kernel: clonezilla-debian-stable
+  clonezilla-debian-testing:
+    path: /debian-squash/releases/download/2.6.5-8-9840b479/
+    files:
+    - filesystem.squashfs
+    - initrd
+    - vmlinuz
+    os: clonezilla
+    version: debian
+    flavor: testing
+    kernel: clonezilla-debian-testing
+  clonezilla-ubuntu-stable:
+    path: /ubuntu-squash/releases/download/20191024-e0c9e5fa/
+    files:
+    - filesystem.squashfs
+    - initrd
+    - vmlinuz
+    os: clonezilla
+    version: ubuntu
+    flavor: stable
+    kernel: clonezilla-ubuntu-stable
+  clonezilla-ubuntu-testing:
+    path: /ubuntu-squash/releases/download/20191226-6edb0075/
+    files:
+    - filesystem.squashfs
+    - initrd
+    - vmlinuz
+    os: clonezilla
+    version: ubuntu
+    flavor: testing
+    kernel: clonezilla-ubuntu-testing
+  breakin:
+    path: /asset-mirror/releases/download/4.26.1-4c4e2fd9/
+    files:
+    - vmlinuz
+    - initrd
+    os: breakin
+    version: 4.26.1
+  dban:
+    path: /asset-mirror/releases/download/2.3.0-73f014c0/
+    files:
+    - DBAN.BZI
+    os: dban
+    version: 2.3.0

+ 28 - 36
roles/netbootxyz/defaults/main.yml

@@ -35,6 +35,9 @@ generate_version_file: false
 generate_checksums: true
 checksums_filename: "{{ site_name }}-sha256-checksums.txt"
 
+# pciids
+pciids_url: https://raw.githubusercontent.com/netbootxyz/pciids/master/pciids.ipxe
+
 # bootloader options
 generate_disks: true
 generate_disks_legacy: true
@@ -180,24 +183,8 @@ releases:
         code_name: "alpha"
   freebsd:
     name: "FreeBSD"
-    enabled: false
+    enabled: true
     menu: "bsd"
-    versions:
-      - name: "FreeBSD 12.0"
-        code_name: "12.0"
-        image_subdir: "12"
-      - name: "FreeBSD 11.2"
-        code_name: "11.2"
-        image_subdir: "11"
-      - name: "FreeBSD 11.1"
-        code_name: "11.1"
-        image_subdir: "11"
-      - name: "FreeBSD 11.0"
-        code_name: "11.0"
-        image_subdir: "11"
-      - name: "FreeBSD 10.4"
-        code_name: "10.4"
-        image_subdir: "10"
   freedos:
     name: "FreeDOS"
     mirror: "http://www.freedos.org"
@@ -231,7 +218,7 @@ releases:
     mirror: "http://http.kali.org"
     base_dir: "kali"
     enabled: true
-    menu: "security"
+    menu: "linux"
     versions:
       - name: "Rolling Edition (2019.4)"
         code_name: "rolling"
@@ -376,64 +363,69 @@ releases:
         code_name: "xenial"
 
 # utility values
-utilities:
+utilitiespcbios:
   avg:
     name: "AVG Rescue CD"
     enabled: true
-    menu: "pcbios"
     type: "memdisk"
     version: "160420a12074"
     util_path: "http://download.avg.com/filedir/inst/avg_arl_cdi_all_120_160420a12074.iso"
   breakin:
     name: "Breakin"
     enabled: true
-    menu: "pcbios"
-    type: "memdisk"
-    version: "4.26.1-53"
-    util_path: "http://www.advancedclustering.com/wp-content/uploads/2017/02/bootimage-4.26.1-53.iso"
+    type: "direct"
+    kernel: "${live_endpoint}{{ endpoints.breakin.path }}vmlinuz sshpasswd=breakin startup=breakin initrd=initrd"
+    initrd: "${live_endpoint}{{ endpoints.breakin.path }}initrd"
   clonezilla:
     name: "Clonezilla"
     enabled: true
-    menu: "pcbios"
-    type: "memdisk"
-    version: "2.6.4-10"
-    util_path: "http://master.dl.sourceforge.net/project/clonezilla/clonezilla_live_stable/2.6.4-10/clonezilla-live-2.6.4-10-amd64.iso"
+    type: "ipxemenu"
   dban:
     name: "DBAN"
     enabled: true
-    menu: "pcbios"
-    type: "memdisk"
-    version: "2.3.0"
-    util_path: "http://master.dl.sourceforge.net/project/dban/dban/dban-2.3.0/dban-2.3.0_i586.iso"
+    type: "ipxemenu"
   gparted:
     name: "GParted"
     enabled: true
-    menu: "pcbios"
     type: "memdisk"
     version: "1.0.0-3"
     util_path: "http://master.dl.sourceforge.net/project/gparted/gparted-live-stable/1.0.0-3/gparted-live-1.0.0-3-amd64.iso"
   memtest:
     name: "Memtest"
     enabled: true
-    menu: "pcbios"
     type: "memtest"
     version: "5.01.0"
     util_path: "https://boot.netboot.xyz/utils/memtest86-5.01.0"
   supergrub:
     name: "SuperGRUB"
     enabled: true
-    menu: "pcbios"
     type: "memdisk"
     version: "2.04s1"
     util_path: "http://master.dl.sourceforge.net/project/supergrub2/2.04s1/super_grub2_disk_2.04s1/super_grub2_disk_hybrid_2.04s1.iso"
   ubcd:
     name: "Ultimate Boot CD (UBCD)"
     enabled: true
-    menu: "pcbios"
     type: "memdisk"
     version: "538"
     util_path: "http://mirror.sysadminguide.net/ubcd/ubcd538.iso"
 
+# efi utility values
+utilitiesefi:
+  breakin:
+    name: "Breakin"
+    enabled: true
+    type: "direct"
+    kernel: "${live_endpoint}{{ endpoints.breakin.path }}vmlinuz sshpasswd=breakin startup=breakin initrd=initrd"
+    initrd: "${live_endpoint}{{ endpoints.breakin.path }}initrd"
+  clonezilla:
+    name: "Clonezilla"
+    enabled: true
+    type: "ipxemenu"
+  dban:
+    name: "DBAN"
+    enabled: true
+    type: "ipxemenu"
+
 bootloaders:
   legacy:
     - type: "ISO"

+ 6 - 1
roles/netbootxyz/tasks/generate_menus.yml

@@ -52,4 +52,9 @@
     with_filetree: "templates/menu/"
     when: item.state == "file"
     tags:
-    - skip_ansible_lint
+    - skip_ansible_lint
+
+  - name: Retrieve pciids.ipxe
+    get_url:
+      url: "{{ pciids_url }}"
+      dest: "{{ netbootxyz_root }}/pciids.ipxe"

+ 1 - 1
roles/netbootxyz/tasks/main.yml

@@ -21,4 +21,4 @@
 
   - include: generate_signatures.yml
     when:
-    - generate_signatures | default(false) | bool
+    - generate_signatures | default(false) | bool

+ 25 - 1
roles/netbootxyz/templates/disks/netboot.xyz-gce.j2

@@ -7,7 +7,8 @@ set fg_cya ${esc:string}[36m
 set fg_whi ${esc:string}[37m
 set HTTPS_ERR HTTPS appears to have failed... attempting HTTP
 set HTTP_ERR HTTP has failed, localbooting...
-set version 1.04
+set ipxe_version ${version}
+set version {{ boot_version }}
 set ipxe_cloud_config gce
 
 :start
@@ -23,6 +24,7 @@ goto menu
 menu netboot.xyz Failsafe Menu
 item localboot Boot to local drive
 item netconfig Manual network configuration
+item vlan Manual VLAN configuration
 item retry Retry boot
 item debug iPXE Debug Shell
 item reboot Reboot System
@@ -44,6 +46,28 @@ ifopen net${net}
 echo Attempting chainload of netboot.xyz...
 goto menu || goto failsafe
 
+:vlan
+echo VLAN Configuration:
+echo Available interfaces...
+ifstat
+imgfree
+echo -n Set network interface number [0 for net0, defaults to 0]: ${} && read net
+isset ${net} || set net 0
+echo -n Set VLAN 802.1Q tag [0 to 4094]: ${} && read vlan
+vcreate --tag ${vlan} net${net}
+ifconf --configurator dhcp net${net}-${vlan} || echo DHCP failed trying manual && goto netvlan
+echo Attempting chainload of ${boot_domain}...
+goto menu || goto failsafe
+
+:netvlan
+echo -n IP: && read net${net}-${vlan}/ip
+echo -n Subnet mask: && read net${net}-${vlan}/netmask
+echo -n Gateway: && read net${net}-${vlan}/gateway
+echo -n DNS: && read dns
+ifopen net${net}-${vlan}
+echo Attempting chainload of ${boot_domain}...
+goto menu || goto failsafe
+
 :menu
 set conn_type https
 chain --autofree https://boot.netboot.xyz/menu.ipxe || echo ${HTTPS_ERR}

+ 25 - 1
roles/netbootxyz/templates/disks/netboot.xyz-packet.j2

@@ -8,7 +8,8 @@ set fg_cya ${esc:string}[36m
 set fg_whi ${esc:string}[37m
 set HTTPS_ERR HTTPS appears to have failed... attempting HTTP
 set HTTP_ERR HTTP has failed, localbooting...
-set version 1.04
+set ipxe_version ${version}
+set version {{ boot_version }}
 set ipxe_cloud_config packet
 
 :start
@@ -24,6 +25,7 @@ goto menu
 menu netboot.xyz Failsafe Menu
 item localboot Boot to local drive
 item netconfig Manual network configuration
+item vlan Manual VLAN configuration
 item retry Retry boot
 item debug iPXE Debug Shell
 item reboot Reboot System
@@ -45,6 +47,28 @@ ifopen net${net}
 echo Attempting chainload of netboot.xyz...
 goto menu || goto failsafe
 
+:vlan
+echo VLAN Configuration:
+echo Available interfaces...
+ifstat
+imgfree
+echo -n Set network interface number [0 for net0, defaults to 0]: ${} && read net
+isset ${net} || set net 0
+echo -n Set VLAN 802.1Q tag [0 to 4094]: ${} && read vlan
+vcreate --tag ${vlan} net${net}
+ifconf --configurator dhcp net${net}-${vlan} || echo DHCP failed trying manual && goto netvlan
+echo Attempting chainload of ${boot_domain}...
+goto menu || goto failsafe
+
+:netvlan
+echo -n IP: && read net${net}-${vlan}/ip
+echo -n Subnet mask: && read net${net}-${vlan}/netmask
+echo -n Gateway: && read net${net}-${vlan}/gateway
+echo -n DNS: && read dns
+ifopen net${net}-${vlan}
+echo Attempting chainload of ${boot_domain}...
+goto menu || goto failsafe
+
 :menu
 set conn_type https
 chain --autofree https://boot.netboot.xyz/menu.ipxe || echo ${HTTPS_ERR}

+ 24 - 0
roles/netbootxyz/templates/disks/netboot.xyz.j2

@@ -10,6 +10,7 @@ set HTTPS_ERR HTTPS appears to have failed... attempting HTTP
 set HTTP_ERR HTTP has failed, localbooting...
 set site_name {{ site_name }}
 set boot_domain {{ boot_domain }}
+set ipxe_version ${version}
 set version {{ boot_version }}
 
 :start
@@ -28,6 +29,7 @@ goto menu
 menu ${boot_domain} Failsafe Menu
 item localboot Boot to local drive
 item netconfig Manual network configuration
+item vlan Manual VLAN configuration
 item retry Retry boot
 item debug iPXE Debug Shell
 item reboot Reboot System
@@ -49,6 +51,28 @@ ifopen net${net}
 echo Attempting chainload of ${boot_domain}...
 goto menu || goto failsafe
 
+:vlan
+echo VLAN Configuration:
+echo Available interfaces...
+ifstat
+imgfree
+echo -n Set network interface number [0 for net0, defaults to 0]: ${} && read net
+isset ${net} || set net 0
+echo -n Set VLAN 802.1Q tag [0 to 4094]: ${} && read vlan
+vcreate --tag ${vlan} net${net}
+ifconf --configurator dhcp net${net}-${vlan} || echo DHCP failed trying manual && goto netvlan
+echo Attempting chainload of ${boot_domain}...
+goto menu || goto failsafe
+
+:netvlan
+echo -n IP: && read net${net}-${vlan}/ip
+echo -n Subnet mask: && read net${net}-${vlan}/netmask
+echo -n Gateway: && read net${net}-${vlan}/gateway
+echo -n DNS: && read dns
+ifopen net${net}-${vlan}
+echo Attempting chainload of ${boot_domain}...
+goto menu || goto failsafe
+
 :tftpmenu
 isset ${hostname} && chain --autofree tftp://${next-server}/HOSTNAME-${hostname}.ipxe || echo Custom boot by Hostname not found trying MAC...
 chain --autofree tftp://${next-server}/MAC-${mac:hexraw}.ipxe || echo Custom boot by MAC not found booting default...

+ 7 - 0
roles/netbootxyz/templates/menu/boot.cfg.j2

@@ -60,6 +60,7 @@ iseq ${buildarch} x86_64 && goto x86_64 ||
 iseq ${buildarch} arm64 && goto arm64 ||
 goto architectures_end
 :x86_64
+iseq ${platform} efi && goto efi ||
 goto architectures_end
 :arm64
 set menu_freedos 0
@@ -67,6 +68,12 @@ set menu_live 0
 set menu_security 0
 set menu_windows 0
 set menu_utils 0
+iseq ${platform} efi && goto efi ||
+goto architectures_end
+:efi
+set menu_bsd 0
+set menu_freedos 0
+set menu_security 0
 goto architectures_end
 :architectures_end
 goto clouds

+ 45 - 0
roles/netbootxyz/templates/menu/clonezilla.ipxe.j2

@@ -0,0 +1,45 @@
+#!ipxe
+
+goto ${menu} ||
+
+:live_menu
+set os Clonezilla
+menu ${os} - Current Arch [ ${arch} ]
+iseq ${arch} x86_64 && set arch_a amd64 || set arch_a ${arch}
+item --gap ${os} Versions
+item debian ${space} ${os} Debian Based
+item ubuntu ${space} ${os} Ubuntu Based
+choose live_version || goto live_exit
+menu ${os} ${live_version}
+item --gap ${os} Flavors
+goto ${live_version}
+
+:debian
+{% for key, value in endpoints.items() %}
+{% if value.os == "clonezilla" and value.version == "debian" %}
+item {{ value.path }} ${space} {{ value.os | title }} {{ value.version | title }} {{ value.flavor | title }}
+{% endif %}
+{% endfor %}
+choose path || goto live_menu
+goto clonezilla-boot
+
+:ubuntu
+{% for key, value in endpoints.items() %}
+{% if value.os == "clonezilla" and value.version == "ubuntu" %}
+item {{ value.path }} ${space} {{ value.os | title }} {{ value.version | title }} {{ value.flavor | title }}
+{% endif %}
+{% endfor %}
+choose path || goto live_menu
+goto clonezilla-boot
+
+:clonezilla-boot
+imgfree
+set url ${live_endpoint}${path}
+kernel ${url}vmlinuz boot=live username=user union=overlay config components noswap edd=on nomodeset ocs_live_run="ocs-live-general" ocs_live_batch=no net.ifnames=0 nosplash noprompt fetch=${url}filesystem.squashfs initrd=initrd
+initrd ${url}initrd
+boot
+
+:live_exit
+clear menu
+exit 0
+

+ 38 - 0
roles/netbootxyz/templates/menu/dban.ipxe

@@ -0,0 +1,38 @@
+#!ipxe
+
+goto ${menu} ||
+
+:dban_menu
+menu DBAN {{ endpoints.dban.version }} (Darik's Boot and Nuke)
+set kernel_url ${live_endpoint}{{ endpoints.dban.path }}DBAN.BZI
+item --gap THIS SOFTWARE DESTROYS DATA
+item --gap EVERY BOOT OPTION IS DESTRUCTIVE
+item --gap DO NOT PROCEED IF YOU DO NOT KNOW WHAT THIS IS
+item dban_exit ${space} Go Back
+item dban_options ${space} Proceed I know what I am doing
+choose menu || goto dban_exit
+goto ${menu}
+
+:dban_options
+clear menu
+menu DBAN {{ endpoints.dban.version }} (Darik's Boot and Nuke)
+item --gap Choose a wipe method:
+item dodshort ${space} Wipe all disks with the short DoD 5220.22-M method
+item dod522022m ${space} Wipe all disks with the DoD 5220.22-M method
+item dod3pass ${space} Wipe all disks with the DoD 5220.22-M method (3 pass)
+item ops2 ${space} Wipe all disks with the RCMP TSSIT OPS-II method
+item gutmann ${space} Wipe all disks with the Gutmann method
+item prng ${space} Wipe all disks with the PRNG Stream method
+item quick ${space} Wipe all disks with the Quick Erase method
+choose nuke_method || goto dban_exit
+goto dban_boot
+
+
+:dban_boot
+imgfree
+kernel ${kernel_url} nuke="dwipe --autonuke --method ${nuke_method}" silent vga=785
+boot
+
+:dban_exit
+clear menu
+exit 0

+ 11 - 17
roles/netbootxyz/templates/menu/freebsd.ipxe.j2

@@ -6,28 +6,22 @@
 :freebsd_menu
 set os {{ releases.freebsd.name }}
 menu ${os}
-{% for item in releases.freebsd.versions %}
-item {{ item.code_name }} ${space} ${os} {{ item.name }}
+{% for key, value in endpoints.items() | sort %}
+{% if value.os == "freebsd" %}
+item {{ value.path }} ${space} ${os} {{ value.version }}
+{% endif %}
 {% endfor %}
 choose ver || goto freebsd_exit
+goto type_select
 
-{% for item in releases.freebsd.versions %}
-iseq ${ver} {{ item.code_name }} && set image_ver {{ item.code_name }}-RELEASE ||
-{% endfor %}
-
-iseq ${arch} x86_64 && goto freebsd_x64 ||
-set freebsd_arch i386
-goto boot_freebsd
-
-:freebsd_x64
-set freebsd_arch amd64
+:type_select
+menu ${os}
+item default.img ${space} Default
+item special-edition.img ${space} Special Edition
+choose type || goto freebsd_exit
 goto boot_freebsd
 
 :boot_freebsd
-{% for item in releases.freebsd.versions %}
-iseq ${ver} {{ item.code_name }} && set image_subdir {{ item.image_subdir }}/${freebsd_arch} ||
-{% endfor %}
-set src https://mfsbsd.vx.sk/files/images/${image_subdir}/mfsbsd-${image_ver}-${freebsd_arch}.img
 imgfree
 echo This loads an mfsbsd installer (http://mfsbsd.vx.sk/).
 echo Root password for all images: mfsroot
@@ -38,7 +32,7 @@ echo route delete default; route add default <public ip x.x.x.1>
 echo echo "nameserver x.x.x.x" > /etc/resolv.conf
 echo Once network is configured, you can launch the usual installer:
 echo bsdinstall
-initrd ${src}
+initrd ${live_endpoint}${ver}${type}
 chain ${memdisk} harddisk raw
 exit
 

+ 36 - 0
roles/netbootxyz/templates/menu/live-feren.ipxe.j2

@@ -0,0 +1,36 @@
+#!ipxe
+
+goto ${menu} ||
+
+:live_menu
+set os Feren OS Live
+menu ${os} - Current Arch [ ${arch} ]
+iseq ${arch} x86_64 && set arch_a amd64 || set arch_a ${arch}
+item --gap ${os} Versions
+item current ${space} ${os} Current
+choose live_version || goto live_exit
+menu ${os} ${live_version}
+item --gap ${os} Flavors
+goto ${live_version}
+
+:current
+{% for key, value in endpoints.items() %}
+{% if value.os == "feren" %}
+item {{ value.path }} ${space} {{ value.os | title }} {{ value.version | title }}
+{% endif %}
+{% endfor %}
+choose path || goto live_menu
+goto feren-boot
+
+:feren-boot
+imgfree
+set squash_url ${live_endpoint}${path}filesystem.squashfs
+set kernel_url ${live_endpoint}${path}
+kernel ${kernel_url}vmlinuz ip=dhcp boot=casper netboot=http fetch=${squash_url} initrd=initrd
+initrd ${kernel_url}initrd
+boot
+
+:live_exit
+clear menu
+exit 0
+

+ 11 - 2
roles/netbootxyz/templates/menu/live-q4os.ipxe.j2

@@ -7,12 +7,21 @@ set os Q4OS Live
 menu ${os} - Current Arch [ ${arch} ]
 iseq ${arch} x86_64 && set arch_a amd64 || set arch_a ${arch}
 item --gap ${os} Versions
+item 3.10 ${space} ${os} 3.10
 item 3.9 ${space} ${os} 3.9
 choose live_version || goto live_exit
 menu ${os} ${live_version}
 item --gap ${os} Flavors
 goto ${live_version}
 
+:3.10
+{% for key, value in endpoints.items() | sort %}
+{% if value.os == "Q4OS" and 'squash' in key and value.version == "3.10" %}
+item {{ key }} ${space} {{ value.os | title }} {{ value.version }} {{ value.flavor | title}}
+{% endif %}
+{% endfor %}
+goto flavor_select
+
 :3.9
 {% for key, value in endpoints.items() | sort %}
 {% if value.os == "Q4OS" and 'squash' in key and value.version == "3.9" %}
@@ -36,11 +45,11 @@ set squash_url ${live_endpoint}{{ value.path }}filesystem.squashfs
 set kernel_url ${live_endpoint}{{ value.path }}
 {% endif %}
 {% endfor %}
-goto {{ value.version }}-boot
+goto q4os-boot
 {% endif %}
 {% endfor %}
 
-:3.9-boot
+:q4os-boot
 imgfree
 kernel ${kernel_url}vmlinuz boot=live fetch=${squash_url} initrd=initrd
 initrd ${kernel_url}initrd

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

@@ -11,6 +11,7 @@ item live-debian ${space} Debian
 item live-deepin ${space} Deepin
 item live-elementary ${space} elementary OS
 item live-fedora ${space} Fedora
+item live-feren ${space} Feren OS
 item live-kali ${space} Kali
 item live-neon ${space} KDE Neon
 item live-lite ${space} Linux Lite

+ 34 - 0
roles/netbootxyz/templates/menu/lspci.ipxe.j2

@@ -0,0 +1,34 @@
+#!ipxe
+
+# gather pci devices and list them
+clear addr
+pciscan addr && goto pciscan_found ||
+echo No pci devices found...
+exit
+:pciscan_found
+
+set spaces2:hex 20:20
+set spaces4:hex 20:20:20:20
+
+imgfetch pciids.ipxe
+iseq ${sigs_enabled} true && goto verify_sigs || goto skip_verify
+:verify_sigs
+imgverify pciids.ipxe ${sigs}pciids.ipxe.sig ||
+:skip_verify
+
+clear addr
+menu PCI device list
+:scan pciscan addr || goto scan_done
+  clear ven
+  clear dev
+  set vendor ${pci/${addr}.0.2}
+  set device ${pci/${addr}.2.2}
+  chain pciids.ipxe
+  item --gap ${addr:busdevfn} ${spaces4:string} ${ven}
+  item b${addr:busdevfn} ${spaces2:string} ${vendor}:${device} ${dev}
+  goto scan
+:scan_done
+choose press_enter ||
+
+imgfree pciids.ipxe
+exit

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

@@ -57,6 +57,7 @@ iseq ${arch} x86_64 && set bits 64 || set bits 32
 item changebits ${space} Architecture: ${arch} (${bits}bit)
 item shell ${space} iPXE shell
 item netinfo ${space} Network card info
+item lspci ${space} PCI Device List
 item about ${space} About netboot.xyz
 {% if sigs_menu | bool %}
 item --gap Signature Checks:

+ 8 - 30
roles/netbootxyz/templates/menu/utils-efi.ipxe.j2

@@ -2,8 +2,8 @@
 
 menu Utilities - Image Sig Checks: [${img_sigs_enabled}]
 item --gap Utilities:
-{% for key, value in utilities.items() | sort(attribute='1.name') %}
-{% if value.enabled | bool and value.menu == "efi" %}
+{% for key, value in utilitiesefi.items() | sort(attribute='1.name') %}
+{% if value.enabled %}
 item {{ key }} ${space} {{ value.name }}
 {% endif %}
 {% endfor %}
@@ -17,38 +17,16 @@ goto ${menu} ||
 chain ${menu}.ipxe || goto utils_exit
 goto utils_exit
 
-{% for key, value in utilities.items() | sort %}
-{% if value.enabled | bool and value.menu == "efi" %}
+{% for key, value in utilitiesefi.items() | sort %}
+{% if value.enabled | bool and value.type == "direct" %}
 :{{ key }}
-set util_path {{ value.util_path }}
-set util_file {{ value.util_path | basename }}
-set util_version {{ value.version }}
-goto boot_{{ value.type }}
-{% endif %}
-{% endfor %}
-
-:boot_memdisk
 imgfree
-kernel ${memdisk} iso raw
-initrd --name ${util_file} ${util_path}
-echo
-echo MD5sums:
-md5sum memdisk ${util_file}
-iseq ${img_sigs_enabled} true && goto verify_sigs || goto skip_sigs
-:verify_sigs
-echo
-echo Checking signatures...
-imgverify memdisk ${sigs}memdisk.sig || goto error
-imgverify ${util_file} ${sigs}${menu}/${util_file}.sig || goto error
-echo Signatures verified!
-echo
-:skip_sigs
+kernel {{ value.kernel }}
+initrd {{ value.initrd }}
 boot
 goto utils_exit
-
-:boot_memtest
-chain https://${util_path} && goto main_menu ||
-goto utils_exit
+{% endif %}
+{% endfor %}
 
 :nbxyz-custom
 echo EXPERIMENTAL

+ 19 - 6
roles/netbootxyz/templates/menu/utils-pcbios.ipxe.j2

@@ -2,8 +2,8 @@
 
 menu Utilities - Image Sig Checks: [${img_sigs_enabled}]
 item --gap Utilities:
-{% for key, value in utilities.items() | sort(attribute='1.name') %}
-{% if value.enabled | bool and value.menu == "pcbios" %}
+{% for key, value in utilitiespcbios.items() | sort(attribute='1.name') %}
+{% if value.enabled %}
 item {{ key }} ${space} {{ value.name }}
 {% endif %}
 {% endfor %}
@@ -17,8 +17,8 @@ goto ${menu} ||
 chain ${menu}.ipxe || goto utils_exit
 goto utils_exit
 
-{% for key, value in utilities.items() | sort %}
-{% if value.enabled | bool and value.menu == "pcbios" %}
+{% for key, value in utilitiespcbios.items() | sort %}
+{% if value.enabled | bool and value.type == "memdisk" %}
 :{{ key }}
 set util_path {{ value.util_path }}
 set util_file {{ value.util_path | basename }}
@@ -27,6 +27,17 @@ goto boot_{{ value.type }}
 {% endif %}
 {% endfor %}
 
+{% for key, value in utilitiespcbios.items() | sort %}
+{% if value.enabled | bool and value.type == "direct" %}
+:{{ key }}
+imgfree
+kernel {{ value.kernel }}
+initrd {{ value.initrd }}
+boot
+goto utils_exit
+{% endif %}
+{% endfor %}
+
 :boot_memdisk
 imgfree
 kernel ${memdisk} iso raw
@@ -46,8 +57,10 @@ echo
 boot
 goto utils_exit
 
-:boot_memtest
-chain https://${util_path} && goto main_menu ||
+:memtest
+imgfree
+kernel {{ utilitiespcbios.memtest.util_path }}
+boot
 goto utils_exit
 
 :nbxyz-custom

+ 2 - 1
roles/netbootxyz/templates/version.ipxe.j2

@@ -1,4 +1,5 @@
 #!ipxe
 {% if upstream_version %}
 set upstream_version {{ upstream_version }}
-{% endif %}
+{% endif %}
+exit

+ 1 - 1
user_overrides.yml

@@ -32,4 +32,4 @@ generate_checksums: true
 
 # set licensed media locations in boot.cfg
 # win_base_url:
-# rhel_base_url: 
+# rhel_base_url: 

+ 1 - 1
version.txt

@@ -1 +1 @@
-2.0.3
+2.0.4