explaingit

netbootxyz/netboot.xyz

11,765JinjaAudience · ops devopsComplexity · 3/5Setup · moderate

TLDR

A network booting tool that lets you install any of dozens of operating systems by picking from a menu at machine startup, with no USB drive or ISO download required.

Mindmap

mindmap
  root((netboot.xyz))
    What it does
      Network OS booting
      No USB needed
      OS installer menu
    Boot formats
      ISO files
      USB images
      DHCP boot files
      UEFI and BIOS
    Use cases
      OS installation
      Home lab provisioning
    Audience
      Sysadmins
      Home lab users
Click or tap to explore — scroll the page freely

Code map

Detail Auto

An interactive map of this repo's files and how they connect — its source is parsed live in your browser. Click Visualize to build it.

filefunction / class

Things people build with this

USE CASE 1

Boot into any of dozens of Linux or other OS installers over the network without writing a USB drive

USE CASE 2

Configure a DHCP server to automatically serve the netboot.xyz menu to all new machines on a network

USE CASE 3

Run a self-hosted copy of netboot.xyz with custom boot menu entries and your own boot file server

USE CASE 4

Boot a Raspberry Pi 4 or ARM64 machine over the network using the dedicated ARM image

Tech stack

JinjaAnsibleDockeriPXE

Getting it running

Difficulty · moderate Time to first run · 30min

Requires a DHCP server or firmware that supports iPXE network booting, first-time setup varies significantly by router and hardware model.

License terms are not stated in the explanation.

In plain English

netboot.xyz is a tool that lets you start up (boot) a computer into an operating system installer over the network, without needing to first download an ISO file and write it to a USB drive. Instead, the computer connects to netboot.xyz during startup and shows a menu where you can pick which operating system you want to install. The underlying technology is called iPXE, which is a way to tell a computer to look for boot instructions from the network rather than from a local disk. When a computer starts and iPXE is active, it can load the netboot.xyz menu, which then lets you choose from a range of operating systems. This works within the BIOS or firmware interface on the computer. The project provides bootloader files in several formats to cover different hardware setups. There are ISO files for use with virtual machines or remote management interfaces, USB disk images for writing to a thumb drive, kernel files for loading through an existing bootloader like GRUB, and DHCP boot files that a network server can send to computers automatically when they start. There are separate versions for older BIOS-based machines, modern UEFI firmware, ARM64 processors, and the Raspberry Pi 4. For people who want to run their own copy of the service rather than using the public hosted version, the repository includes scripts to build and deploy everything yourself. The build system is based on Ansible, a configuration management tool. There is also a Docker option for building locally. Settings can be overridden through a configuration file to change things like where the boot files are served from. Full documentation, a list of supported operating systems, and guides for different booting methods are available on the project's website.

Copy-paste prompts

Prompt 1
Using netboot.xyz, set up a DHCP server option so that all new machines on my home network automatically load the netboot.xyz OS installer menu at startup.
Prompt 2
I want to self-host netboot.xyz using Docker. Walk me through pulling the image, mounting a config override file, and pointing it to a custom boot file server URL.
Prompt 3
Show me how to add a custom entry to the netboot.xyz menu for an operating system that is not in the default list.
Prompt 4
I have one UEFI machine and one BIOS machine. Which netboot.xyz bootloader files do I need for each, and where do I place them on the DHCP server?
Prompt 5
Build the netboot.xyz boot files locally using the Ansible-based build system and explain what each output file is for.
Open on GitHub → Explain another repo

← netbootxyz on gitmyhub — every repo by this author, as a profile.

Verify against the repo before relying on details.