PXE Boot Menu Generator
Build matched PXELINUX, iPXE and GRUB boot menus from one entry list with default and fallback checks for safer network-boot handoffs.{{ summaryTitle }}
{{ summaryLine }}
{{ summaryAnnouncement }}
{{ values.ipxe_text }}
{{ chartExportStatus }}
The chart renderer is unavailable. Menu artifacts and the validation ledger remain available.
| Kind | Item | State | Detail | Copy |
|---|---|---|---|---|
| {{ row.kind }} | {{ row.item }} | {{ row.state }} | {{ row.detail }} |
{{ ledgerExportStatus }}
A network boot menu sits between firmware discovery and the operating system or utility that should start next. If its default points to the wrong entry, a short unattended timeout can reinstall a machine, open a rescue environment, or leave a remote host waiting for input. Menu text deserves the same review as the images and automation it launches.
Preboot Execution Environment (PXE) is the wider boot process, not one menu language. Firmware obtains network settings and a boot program, then that program interprets its own configuration. PXELINUX commonly serves legacy BIOS clients, iPXE adds a scriptable network-aware environment, and GRUB is often used in UEFI or distribution-specific paths. One logical entry therefore needs different commands in each output.
| Menu family | Typical handoff | Important difference |
|---|---|---|
| PXELINUX | BIOS-oriented Syslinux boot | Timeout uses tenths of a second, and initrd syntax varies with deployed Syslinux capability. |
| iPXE | HTTP-capable scripted network boot | Menu timeout uses milliseconds; relative asset URLs resolve from the script unless a base URL is supplied. |
| GRUB | Firmware or distribution boot menu | Timeout uses seconds; linuxefi and initrdefi are not portable to every GRUB build. |
Linux entries need a kernel, may need an initial RAM disk, and may carry a long kernel command line. Chain entries hand control to another boot object. Local and reboot entries provide recovery paths rather than loading an operating system. A menu can be syntactically tidy while still referring to missing files, an unreachable server, an incompatible boot module, or kernel arguments meant for another image.
Operational safety comes from pairing a conservative default with a tested fallback. A timed menu suits unattended provisioning only when the default is known to be safe for every client in that lane. Waiting indefinitely is safer during maintenance but can strand remote machines. Keep rescue and local-disk paths available unless another recovery method is proven on the same hardware and firmware.
How to Use This Tool:
Describe the logical entries once, then review how each bootloader renders them.
- Enter a clear Menu title and choose the Primary artifact operators are most likely to copy first.
- Set a Default entry ID that exists in the final entry list. Choose a timed default or an indefinite wait, then enter a whole timeout from 1 through 86,400 seconds.
- Paste comma-separated Boot entry rows in the order ID, title, type, kernel or chain target, initrd, arguments, category, and optional shortcut. Supported types are
linux,chain,local, andreboot. - Choose the PXELINUX menu module and initrd syntax, the GRUB Linux-command style, and the generated fallback policy. Treat graphical Syslinux modules, separate
INITRD, and EFI command variants as compatibility decisions. - Set an iPXE asset base URL only when relative kernels and initrds should resolve somewhere other than the script location. Enable DHCP retry only when an indefinite retry is acceptable.
- Review all three generated menus and the Validation ledger. Correct missing defaults, duplicate IDs, absent kernel paths, unsafe titles, and unsupported shortcuts before placing any artifact on boot infrastructure.
Interpreting Results:
Boot menus ready to review means the entries passed local structural checks and all three text artifacts were produced. It does not mean a client can fetch the assets or execute the selected commands. Review findings identify choices that depend on the deployed bootloader, such as chain support, a graphical Syslinux module, separate INITRD, GRUB EFI command variants, or the absence of generated fallbacks.
Test the primary path and every recovery path on the actual firmware classes you support. Confirm the default entry first, then wait through the real timeout and boot one kernel-plus-initrd pair. A successful menu display is not enough if the next network request or kernel handoff fails.
Technical Details:
Each source row becomes a normalized entry ID and a boot action. IDs are lowercased, unsupported characters become hyphens, leading and trailing hyphens are removed, and the result is limited to 63 characters. The final ID set includes any generated local-disk or reboot fallbacks before the default is checked.
Formula Core
The visible timeout is entered in seconds, then converted to the native unit used by each menu language.
A wait-forever policy emits PXELINUX timeout 0, omits the iPXE timeout option, and emits GRUB timeout -1. These are format-specific wait values, not the entered timeout field.
Transformation Core
| Entry type | PXELINUX | iPXE | GRUB |
|---|---|---|---|
| Linux | KERNEL plus APPEND, with initrd inline or separate | kernel, named initrd, then boot | linux/linuxefi, then initrd/initrdefi |
| Chain | chain.c32 with an argument | chain with failure handling | chainloader, then boot |
| Local | LOCALBOOT 0 | exit | exit |
| Reboot | reboot.c32 | reboot | reboot |
For iPXE, absolute URLs and slash-prefixed paths remain unchanged. Other relative kernel, initrd, and chain targets join the optional asset base URL; without a base URL, iPXE resolves them relative to the script URL. When an initrd is present, its basename is added to the kernel arguments unless an initrd= argument already exists.
Rule Core
- Each ID must be unique after normalization, and the default must match a final ID exactly.
- Linux rows require a kernel path; chain rows require a target.
- A shortcut is empty or one lowercase letter or digit.
- Titles reject line breaks and command separators; the menu title follows the same separator rule.
- The asset base is empty or an HTTP/HTTPS URL without spaces.
- Boot-row input is limited to 12,000 characters; menu titles to 100 characters.
Limitations and Privacy Notes:
Generation happens without contacting boot servers or referenced assets. The checks cannot prove file existence, TLS trust, DHCP behavior, firmware compatibility, command availability, kernel-argument correctness, or whether a chain target is safe. Boot rows and generated menus may contain internal hostnames, installation URLs, and provisioning parameters; review them for secrets before copying or sharing.
Worked Examples:
Eight-second unattended install menu
An 8-second timed default becomes TIMEOUT 80 in PXELINUX, --timeout 8000 in iPXE, and set timeout=8 in GRUB. The default ID must survive normalization and match one final entry before any menu is produced.
Relative iPXE assets
A Linux row names ubuntu/vmlinuz and ubuntu/initrd. With a trusted HTTPS asset base, iPXE joins both relative paths to that base. PXELINUX and GRUB keep the source paths unchanged, so their server layout still needs a separate deployment check.
References:
- Syslinux configuration syntax, Syslinux Project.
- choose command, iPXE Project, updated February 2025.
- kernel command, iPXE Project, updated May 2023.
- menuentry, GNU GRUB Manual 2.14.
- timeout, GNU GRUB Manual 2.14.