Andrew Latham

Using tools like libvirt, virt-manager to network boot (PXE) systems.

TL;DR;

mkdir -p /srv/tftp
cp -r your_pxelinux_stuffs /srv/tftp/
virsh net-edit default

replace

<dhcp>

with

<tftp root='/srv/tftp'/>
<dhcp>
  <bootp file='pxelinux.0'/>

then

virsh net-destroy default && virsh net-start default

Profit

Howto

Install libvirt Create /srv/tftp directory Download http://cdn-fastly.deb.debian.org/debian/dists/testing/main/installer-amd64/current/images/netboot/netboot.tar.gz Unpack the netboot.tar.gz in /srv/tftp Look at the current libvirt config (removed uuid and MAC)

virsh net-dumpxml default
<network>
  <name>default</name>
  <uuid>snip</uuid>
  <forward mode='nat'/>
  <bridge name='virbr0' stp='on' delay='0'/>
  <mac address='snip'/>
  <ip address='192.168.122.1' netmask='255.255.255.0'>
    <dhcp>
      <range start='192.168.122.2' end='192.168.122.254'/>
    </dhcp>
  </ip>
</network>

Edit the config with virsh net-edit default and add

<tftp root='/srv/tftp'/> in the ip section just before the dhcp section and also add

<bootp file='pxelinux.0'/> inside the dhcp section, save and restart the network in virsh

virsh net-destroy default
virsh net-start default
virsh net-dumpxml default
<network>
  <name>default</name>
  <uuid>snip</uuid>
  <forward mode='nat'>
    <nat>
      <port start='1024' end='65535'/>
    </nat>
  </forward>
  <bridge name='virbr0' stp='on' delay='0'/>
  <mac address='snip'/>
  <ip address='192.168.122.1' netmask='255.255.255.0'>
    <tftp root='/srv/tftp'/>
    <dhcp>
      <range start='192.168.122.2' end='192.168.122.254'/>
      <bootp file='pxelinux.0'/>
    </dhcp>
  </ip>
</network>

At this point everything is ready, just select PXE install in virt-manager or do a command line setup with the pxe option and you have an install.