Remote Debian Boot via Netboot.xyz, iSCSI, and ZFS
Configure netboot.xyz with iSCSI and ZFS to boot Debian from a network drive.
Deploy the netboot.xyz configuration, create the ZFS pool and iSCSI target, update DNSMasq to point to the TFTP server, and test booting a Debian 13 installer over the network.
Summary
The article describes a step‑by‑step setup for booting Debian 13 from a network drive using Netboot.xyz, iSCSI, and ZFS on a Debian‑based server. The author first installs required packages (apache2, git, ansible, tftpd‑hpa, targetcli‑fb) and clones the Netboot.xyz repo, then customizes user_overrides.yml to generate menus, disks, and checksums while disabling local vars. Custom iPXE scripts (debian13‑iscsi.ipxe and custom.ipxe) are created to point to the iSCSI target and the Debian installer assets, which are downloaded into /var/www/html/assets/debian13. The TFTP server is configured at /srv/tftp/ipxe with the Netboot.xyz binaries, and DNSMasq on an Asus router is set up to serve PXE/ iPXE boot files for BIOS, UEFI, and iPXE clients. A ZFS pool “tank” is created with a 32 GB ZVOL “tank/debian‑disk‑12700k” that is exported as an iSCSI target (iqn.2026‑05.xyz.716697.pve‑vt:tank‑debian‑disk‑12700k) with authentication and write‑protect enabled. The author then uses Ansible to deploy Netboot.xyz, configures TFTP, and verifies the iSCSI setup via targetcli. Finally, the Debian installer boots over the network, allowing installation on multiple machines without local storage. This configuration demonstrates a fully remote, network‑bootable environment that can be reused for other OS deployments.
Key changes
- Netboot.xyz configured to generate menus, disks, checksums, and disable local vars, with site_name and boot_domain set to 192.168.50.167.
- Custom iPXE scripts (debian13-iscsi.ipxe and custom.ipxe) created to boot Debian 13 via an iSCSI target.
- Debian 13 installer assets (initrd.gz and linux) downloaded to /var/www/html/assets/debian13 for network boot.
- TFTP server set up at /srv/tftp/ipxe with Netboot.xyz binaries (undionly.kpxe, snp.efi, efi.efi).
- DNSMasq on an Asus router configured to serve PXE/ iPXE boot files for BIOS, UEFI, and iPXE clients using DHCP tags.
- ZFS pool “tank” created with a 32 GB ZVOL “tank/debian-disk-12700k” exported as iSCSI target iqn.2026-05.xyz.716697.pve-vt:tank-debian-disk-12700k.
- iSCSI target configured with authentication (userid, password, mutual_userid, mutual_password) and write‑protect enabled.
- Debian 13 installed over network boot using the custom iPXE menu, enabling OS installation on multiple machines.