In previous post I described how to setup PXE server and boot Debian installer using it. I mentioned that provided setup is limited and some extensive configuration is needed to make it useful for real world example. Since that time I learned that there is chain command in iPXE, which give ability to use arbitrary TFTP server as boot file source.

Using RPi PXE server

For example by changing my test network topology from previous post to something like that:

pxe_srv_apu2

In short Raspberry Pi contain our PXE server configured in previous post. TL-MR3420 is our DHCP server and PC Engines APU2A4 is our target box where we want to install Debian.

We need to change eth0 configuration, so our PXE server will get IP automatically from DHCP:

Also disable udhcpd:

Then reboot PXE server.

PXE booting

First enter iPXE on APU2 board by pressing <Ctrl-B> during boot. You should see something like that:

Then obtain DHCP address:

Now we can boot over the network using RPi PXE server:

Note that 192.168.0.100 is RPi PXE server and /srv/tftp/pxelinux.0 is path on RPi exposed through TFTP configuration.

Debian installer modification

Hit Tab in the main installer window:

Change boot command line to print output to serial:

Then hit Enter. You will see complains about video mode like this:

Follow this instruction by waiting or hitting Space. Then you should have running installer.

Debian installation

This is typical installation except it happen over serial. As a storage I used 16GB USB stick with guided partitioning. At the end I also installed GRUB on USB stick MBR.

Be patient if serial console will be blank for some time it happen when installing over network.

After reboot you should be able to choose USB stick from boot menu (F10) and your Debian on APU2 should be ready:

Summary

Now when you have Debian installed on your system you can think about various improvements. For example:

  • Xen installation
  • Putting together automated installation using PXE server
  • Setup NFS and TFTP for Linux kernel development and testing

I hope this post was useful. If you think that it can be improved please comment. Thanks for reading.