etc | ||
netboot | ||
.gitignore | ||
LICENSE | ||
README.md |
PXE Boot Configuration Repository
This Git repository contains configuration files and scripts for setting up PXE boot using DNSMasq, Lighttpd, TFTP-HPA, and Netboot.xyz. This is meant to run on FreeBSD systems but can be adapted to work with Linux or any UNIX that can run Dnsmasq as a proxying DHCP server.
Configuration is done using FreeBSD's rc.conf
for network booting. Please follow the instructions below to set up your PXE boot environment.
Table of Contents
Introduction
PXE (Preboot eXecution Environment) booting allows you to boot and install operating systems over the network. This repository provides a streamlined configuration for setting up a server providing PXE boot service using netboot.xyz, using DNSMasq and TFTP-HPA on a FreeBSD system. Additionally, it includes configurations for the rc.conf
file to enable network booting on FreeBSD.
To ensure compliance with GPL licenses, this repository does not include iPXE and Netboot.xyz binaries. Instead, a shell script is provided that can download these binaries for you.
Prerequisites
Before you begin, ensure you have the following prerequisites:
- A FreeBSD system (tested on FreeBSD 13.2)
- dnsmasq and optionally tftpd-hpa
- Storage for your PXE-boot binaries
- Administrative privileges on the FreeBSD system
- Internet connectivity on the FreeBSD system
- A network segment for PXE boot clients
Repository Contents
- etc/dnsmaqs-dhcp.conf: DNSMasq configuration file for DHCP and TFTP boot.
- etc/rc.conf.local: Example
rc.conf
file for enabling network booting on FreeBSD. - download-ipxe-netboot.sh: Shell script to download iPXE and Netboot.xyz binaries.
Prerequisites
-
Clone this Git repository to your FreeBSD system:
git clone https://github.com/yourusername/pxe-boot-config.git
-
Install the following packages
dnsmasq
,tftpd-hpa
pkg install dnsmasq tftp # optional: pkg install ipxe # go to /usr/local/share/ipxe for ipxe binaries
-
Copy the
netboot
folder in this configuration to/netboot
or elsewhere. If you choose elsewhere, be sure to modify the files underetc
to have the correct referneces. -
Deploy the following configuration files at
/usr/local/etc
or/etc/
- /usr/local/etc/dnsmaqs-dhcp.conf: Update DHCP settings and paths as needed.
- /etc/rc.conf.local: (FreeBSD only) Configure daemons and services required
Usage
Follow these steps to set up PXE booting on your FreeBSD system:
-
Install dependencies and set up the configuration files as described in the Prerequisites section.
-
Run the
download-ipxe-netboot.sh
script to download iPXE and Netboot.xyz binaries. This script will fetch the necessary binaries and place them in the appropriate directories../download-ipxe-netboot.sh
-
Start and enable the DNSMasq and TFTP services:
sudo service dnsmasq enable sudo service dnsmasq start # Optional: You may use the dnsmasq-provided tftp server if you cannot use tftpd-hpa. Modify dnsmasq.conf accordingly sudo service tftpd enable sudo service tftpd start
-
Ensure that your PXE boot clients are configured to boot from the network. Refer to your client's BIOS/UEFI settings for PXE boot options.
-
Boot your PXE clients and follow your chosen OS installation process.
License
This repository is provided under the BSD 2-Clause. Specifically, the downloader script, the documentation, and the autoexec.ipxe
file.
Please note that the iPXE and Netboot.xyz binaries are subject to their respective GPL licenses.
To avoid GPL violations, the download-ipxe-netboot.sh
script is provided to fetch these binaries directly from their official sources, or proivde your own substitutions.
Please review the licenses of iPXE and Netboot.xyz before using this repository in production environments.