| #!ipxe |
| {# |
| SPDX-FileCopyrightText: © 2020 Open Networking Foundation <support@opennetworking.org> |
| SPDX-License-Identifier: Apache-2.0 |
| #} |
| |
| # variables |
| set menu_timeout 10000 |
| set menu_default exit |
| set http_server_url {{ pxeboot_web_server }} |
| |
| # menu |
| :start |
| menu ONF iPXE Boot Menu |
| item --gap -- ------------------------- System and Network Info ------------------------ |
| item --gap -- MAC: ${net0/mac}, Serial Number: ${serial}, Chipset: ${net0/chip} |
| item --gap -- Manufacturer: ${manufacturer}, Product: ${product} |
| item --gap -- UUID: ${uuid} |
| item --gap -- IP: ${net0/ip}, Netmask: ${net0/netmask}, Gateway: ${net0/gateway} |
| item --gap -- DNS Servers: ${net0/dns}, Domain: ${net0/domain} |
| item --gap -- DHCP Server: ${net0/dhcp-server} |
| item --gap -- ------------------------- Operating systems ------------------------------ |
| {% if "debian10" in pxeboot_boot_images %} |
| item --key d deb10 Debian 10 Installer |
| item --key f deb10f Debian 10 Installer (nonfree firmware) |
| {% endif %} |
| {% if "debian11" in pxeboot_boot_images %} |
| item --key h deb11f Debian 11 Installer (nonfree firmware) |
| item --key h deb11afs Debian 11 Installer (nonfree firmware, auto, serial) |
| item --key h deb11afm Debian 11 Installer (nonfree firmware, auto, MAC) |
| {% endif %} |
| {% if "ubuntu1804" in pxeboot_boot_images %} |
| item --key u ub1804 Ubuntu 18.04 Installer |
| item --key a ub1804as Ubuntu 18.04 Installer (fully automatic, serial) |
| item --key m ub1804am Ubuntu 18.04 Installer (fully automatic, MAC) |
| {% endif %} |
| {% if "ubuntu2004" in pxeboot_boot_images %} |
| item --key v ub2004 Ubuntu 20.04 Installer |
| {% endif %} |
| {% if "openbsd70" in pxeboot_boot_images %} |
| item --key o openbsd70 OpenBSD 7.0 Installer |
| {% endif %} |
| {% if "memtest" in pxeboot_boot_images %} |
| item --key m memtest Memtest |
| {% endif %} |
| item --gap -- ------------------------- Utilities -------------------------------------- |
| item --key c configure Configuration Menu |
| item --key s shell iPXE Shell |
| item --key r reboot Reboot |
| item --key x exit Exit iPXE and continue system boot |
| choose --timeout ${menu_timeout} --default ${menu_default} selected || goto cancel |
| set menu-timeout 0 |
| goto ${selected} |
| |
| # Utility functions |
| :cancel |
| echo Menu canceled, dropping to iPXE shell |
| goto shell |
| |
| :configure |
| config |
| set menu-timeout 0 |
| set submenu-timeout 0 |
| goto start |
| |
| :shell |
| echo Type 'exit' to get the back to the menu |
| shell |
| set menu-timeout 0 |
| set submenu-timeout 0 |
| goto start |
| |
| :failed |
| echo Booting failed, dropping to shell |
| goto shell |
| |
| :reboot |
| reboot |
| |
| :exit |
| exit |
| |
| # diagnostics |
| {% if "memtest" in pxeboot_boot_images %} |
| |
| # memtest |
| :memtest |
| echo Booting Memtest |
| kernel ${http_server_url}/utils/memdisk |
| initrd ${http_server_url}/memtest/memtest.iso |
| imgargs memdisk iso raw |
| boot || goto failed |
| {% endif %} |
| |
| # installers |
| {% if "debian11" in pxeboot_boot_images %} |
| |
| # Debian 11 with nonfree firmware |
| :deb11f |
| echo Booting Debian 11 Installer with nonfree firmware |
| kernel ${http_server_url}/debian11/linux initrd=initrd.gz initrd=firmware.cpio.gz |
| initrd ${http_server_url}/debian11/initrd.gz |
| initrd ${http_server_url}/debian11/firmware.cpio.gz |
| boot || goto failed |
| |
| # Debian 11 with nonfree firmware, auto, serial |
| :deb11afs |
| echo Booting Debian 11 Installer with nonfree firmware, auto, serial |
| kernel ${http_server_url}/debian11/linux initrd=initrd.gz initrd=firmware.cpio.gz initrd=preseed.cfg |
| initrd ${http_server_url}/debian11/initrd.gz |
| initrd ${http_server_url}/debian11/firmware.cpio.gz |
| initrd ${http_server_url}/debian11/${serial}_preseed.cfg preseed.cfg |
| boot || goto failed |
| |
| # Debian 11 with nonfree firmware, auto, MAC |
| :deb11afm |
| echo Booting Debian 11 Installer with nonfree firmware, auto, MAC |
| kernel ${http_server_url}/debian11/linux initrd=initrd.gz initrd=firmware.cpio.gz initrd=preseed.cfg |
| initrd ${http_server_url}/debian11/initrd.gz |
| initrd ${http_server_url}/debian11/firmware.cpio.gz |
| initrd ${http_server_url}/debian11/${net0/mac}_preseed.cfg preseed.cfg |
| boot || goto failed |
| {% endif %} |
| {% if "ubuntu1804" in pxeboot_boot_images %} |
| |
| # Ubuntu 18.04 |
| :ub1804 |
| echo Booting Ubuntu 18.04 Installer |
| kernel ${http_server_url}/ubuntu1804/linux initrd=initrd.gz |
| initrd ${http_server_url}/ubuntu1804/initrd.gz initrd.gz |
| boot || goto failed |
| |
| # Ubuntu 18.04 autoinstall, serial |
| # https://ipxe.org/appnote/debian_preseed |
| :ub1804as |
| echo Booting Ubuntu 18.04 Installer (autoinstall, serial) |
| kernel ${http_server_url}/ubuntu1804/linux initrd=initrd.gz initrd=preseed.cfg |
| initrd ${http_server_url}/ubuntu1804/initrd.gz |
| initrd ${http_server_url}/ubuntu1804/${serial}_preseed.cfg preseed.cfg |
| boot || goto failed |
| |
| # Ubuntu 18.04 autoinstall, MAC |
| # https://ipxe.org/appnote/debian_preseed |
| :ub1804am |
| echo Booting Ubuntu 18.04 Installer (autoinstall, MAC) |
| kernel ${http_server_url}/ubuntu1804/linux initrd=initrd.gz initrd=preseed.cfg |
| initrd ${http_server_url}/ubuntu1804/initrd.gz |
| initrd ${http_server_url}/ubuntu1804/${net0/mac}_preseed.cfg preseed.cfg |
| boot || goto failed |
| {% if pxeboot_image_debug %} |
| |
| # Ubuntu 18.04 autoinstall, text-mode, debug |
| :ub1804adt |
| echo Booting Ubuntu 18.04 Installer, text mode, debug |
| kernel ${http_server_url}/ubuntu1804/linux initrd=initrd.gz initrd=preseed.cfg DEBIAN_FRONTEND=text BOOT_DEBUG=2 |
| initrd ${http_server_url}/ubuntu1804/initrd.gz |
| initrd ${http_server_url}/ubuntu1804/${serial}_preseed.cfg preseed.cfg |
| boot || goto failed |
| {% endif %} |
| {% endif %} |
| {% if "ubuntu2004" in pxeboot_boot_images %} |
| |
| # Ubuntu 20.04 |
| :ub2004 |
| echo Booting Ubuntu 20.04 Installer |
| kernel ${http_server_url}/ubuntu2004/linux initrd=initrd.gz |
| initrd ${http_server_url}/ubuntu2004/initrd.gz |
| boot || goto failed |
| {% endif %} |
| {% if "openbsd70" in pxeboot_boot_images %} |
| |
| # OpenBSD 7.0 |
| :openbsd70 |
| echo Booting OpenBSD 7.0 |
| kernel ${http_server_url}/utils/memdisk |
| initrd ${http_server_url}/openbsd70/cd70.iso |
| imgargs memdisk iso raw |
| boot || goto failed |
| {% endif %} |