With the release of Ubuntu 20.04 LTS support for the network installer was dropped in favor of the standard Ubuntu Live server image.

For 20.04 LTS, users can use the new Ubuntu Live installer to setup and configure a network install.

The alternative downloads pages points to a discourse thread for setting up a network installation using a Preboot eXecution Environment (PXE). PXE is a specification for a client-server environment which allows any client to boot a software assembly only using a PXE-capable network interface controller. PXE relies on DHCP and TFTP for providing the boot environment.

Such an enivronment can be created with dnsmasq’s DHCP subsystem. The following steps need to be performed for booting Ubuntu 20.04 LTS on a host using PXE. Note. This guide is a modification of the above mentioned discourse thread.

  1. The first step installes dnsmasq and configures a static ip address on the same host. This guide uses a NIC in a seperate network containing only the apu board. Dnsmasq is setup to only listen on this NIC in order to avoid collision with other DHCP servers.

    sudo apt-get install dnsmasq
    sudo ip addr add dev enp0s1 192.168.0.1/24
    

    The configuration file used for DHCP and TFTP at /etc/dnsmasq.d/pxe.conf should contain, where enp0s1 is the network interface with physical access to the client.

    interface=enp0s1,lo
    bind-interfaces
    dhcp-range=192.168.0.100,192.168.0.200
    dhcp-boot=pxelinux.0
    enable-tftp
    tftp-root=/srv/tftp
    
  2. Next a boot environment is setup in the TFTP servers root directory using the Ubuntu Live server image.

    mkdir -p /srv/tftp /srv/tftp/pxelinux.cfg
    wget http://archive.ubuntu.com/ubuntu/dists/eoan/main/installer-amd64/current/images/netboot/ubuntu-installer/amd64/pxelinux.0
    sudo cp pxelinux.0 /srv/tftp
    
    wget http://cdimage.ubuntu.com/ubuntu-server/daily-live/current/focal-live-server-amd64.iso
    sudo mount focal-live-server-amd64.iso /mnt
    sudo cp /mnt/casper/initrd /srv/tftp
    sudo cp /mnt/casper/vmlinuz /srv/tftp
    sudo cp -r /mnt/isolinux /srv/tftp
    umount focal-live-server-amd64.iso
    

    The default pxe configuration /srv/tftp/pxelinux.cfg/default should contain this configuration.

    DEFAULT install
    LABEL install
        KERNEL vmlinuz
        INITRD initrd
        APPEND ip=dhcp url=http://192.168.0.1:8080/focal-live-server-amd64.iso vga=off console=ttyS0,115200u8
    
  3. The last steps serves the previously downloaded Ubuntu Live server image, since no internet access was configured previously.

    mkdir -p ubuntu
    cp focal-live-server-amd64.iso ubuntu
    docker run -v $(pwd)/ubuntu:/usr/share/nginx/html:ro --rm -p 8080:80 -it nginx