4 ms·
PXE [0] is a standard for netbooting, typically implementated in the system's boot firmware. A PXE-compatible client sends a DHCP request on boot, to which the
by NobodyNada 2y ago
PXE [0] is a standard for netbooting, typically implementated in the system's boot firmware. A PXE-compatible client sends a DHCP request on boot, to which the network's DHCP server responds with the IP address of a server to netboot from. The client will then connect to this server via TFTP, download an executable image file in the PXE format, and boot it. Using PXE on your own computer requires enabling PXE the firmware setup, setting up a TFTP server to serve the PXE image, and configuring your DHCP server to point to your TFTP server.
iPXE [1] is an open-source implementation of PXE, and much more -- it's much more flexible, it supports additional protocols including HTTP(S) and DNS, it has configuration and scripting options, a basic command-line interface, etc. In order to run iPXE, you need to boot an iPXE image somehow -- e.g. from a MBR or EFI image on a disk drive or USB drive (or even over PXE, I guess). But because iPXE supports more protocols and more configuration, you don't need to set up TFTP and DHCP, and it can chainload into e.g. an EFI image or a Linux kernel instead of being limited to booting images in the PXE format.
An example of iPXE in the wild is the Arch Linux netboot image [2]. They provide pre-configured iPXE images that display an interactive menu to select a mirror, download the Arch Linux installer, and boot it. (It's really convenient since you can just drop the UEFI image at "/efi/boot/bootx64.efi" on a FAT32 thumb drive instead of having to download the whole installer image and 'dd' it onto the drive.)
The submitted project, netboot.xyz, is a similar idea: a preconfigured build of iPXE that lets you interactively download and boot installers for many popular operating systems from a single image.
[0]: https://en.wikipedia.org/wiki/Preboot_Execution_Environment https://en.wikipedia.org/wiki/Preboot_Execution_Environment
[1]: https://ipxe.org/ https://ipxe.org/
[2]: https://archlinux.org/releng/netboot/ https://archlinux.org/releng/netboot/
- ddulaney 2y ago> or even over PXE, I guess This is super common actually! Most built-in PXE only supports TFTP, which is pretty slow compared to TCP-based stuff. It can make sense to use the built-in PXE to grab a (small) iPXE image over TFTP, then have iPXE grab the (big) real image over HTTP(S). This is also useful if you want to store your main image on something like S3 that doesn’t support TFTP. For a while I had a script that would create iPXE images dynamically on the fly with the correct HTTPS URL and auth information embedded in them.
- throw0101d 2y ago> A PXE-compatible client sends a DHCP request on boot, to which the network's DHCP server responds with the IP address of a server to netboot from. Specifically there are particular DHCP options (66, 67) that tell the client about this, and the client software (PXE) understands them: * https://datatracker.ietf.org/doc/html/rfc2132 https://datatracker.ietf.org/doc/html/rfc2132 * https://www.iana.org/assignments/bootp-dhcp-parameters/bootp-dhcp-parameters.xhtml https://www.iana.org/assignments/bootp-dhcp-parameters/bootp... * https://www.iana.org/assignments/dhcpv6-parameters/dhcpv6-parameters.xhtml https://www.iana.org/assignments/dhcpv6-parameters/dhcpv6-pa... (RFC 5970) And while the options previously were interpreted for TFTP use, newer PXE software now understands the use of "http[s]://" in the file name and use that instead of TFTP.
- scoot 2y ago> it can chainload into e.g. an EFI image Off topic, but does anyone know a good resource that explains how to correctly use "e.g."? (I've looked before, but didn't find one) While I may seem like a grammar pedant, there are many things that have entered common use while arguably incorrect that I'm not so bothered about ("That begs the question", for example). However while this (incorrect) use of "e.g." is a hill I will die on, even so, I struggle to explain why it's just plain wrong. (It can be used to replace "for example" when preceding a list if examples that illustrate a point, but not as a generic replacement as in this case.) Someone somewhere must have explained it better...
- ac29 2y ago> It can be used to replace "for example" when preceding a list if examples that illustrate a point I think you've already understood it.
- scoot 2y agoI think so too, but many references fail to explain it in a way that isn't ambiguous at best.
- ddulaney 2y agoIs this wrong? I always mentally replace "e.g." with "for example" (so this sentence is "it can chainload into, for example, an EFI image"). That sounds right to me. This seems like somebody doing it right :)
- scoot 2y agoYes, it wrong. "e.g." isn't a direct substitute for "for example". Honestly, it's best avoided as so many people confuse "e.g." and "i.e.", but if you're going to use it, at least use it correctly.
- sakjur 2y agoChicago Manual of Style [6.51, 5.250], though I'd argue this is pedantry for casual conversation. From 6.51: "[...]Note that in formal writing, Chicago prefers to confine the abbreviations i.e. ("that is") and e.g. ("for example") to parentheses or notes, where they are followed by a comma". I think a secondary argument could be made that i.e. and e.g. are typically used to clarify something in a second clause; e.g., "it can chainload into any form of boot image (e.g., an EFI image or a Linux kernel) rather than being restricted to the PXE image format". I would recommend picking up a copy of CMOS if you are in want of good ways to explain English grammar. English is my secondary language, and it's occasionally helpful for me to have access to a reference for its grammar when I struggle with understanding a concept. Just keep in mind that languages are bendable and any guide is descriptive and not prescriptive for informal communication.