This utility generates a netboot directory tree from an Ubuntu Server Live ISO image, an image based on the subiquity
installer. The tree contents are similar to the contents of the netboot.tar.gz
file that debian-installer builds provide. Example:
$ ./ubuntu-server-netboot --url http://releases.ubuntu.com/focal/ubuntu-20.04.2-live-server-amd64.iso
INFO: Downloading http://releases.ubuntu.com/focal/ubuntu-20.04.2-live-server-amd64.iso
INFO: Attempting to download http://archive.ubuntu.com/ubuntu/dists/focal-updates/main/uefi/grub2-amd64/current/grubx64.efi.signed
INFO: Netboot generation complete: /tmp/tmpo54145m2/ubuntu-installer
The --url
parameter is used for 2 reasons:
ubuntu-server-netboot
will download the image at runtime to extract the necessary files from it.- Subiquity-based installs need to download an image at install-time.
ubuntu-server-netboot
will generate configuration files that point the installer to this URL.
If you have a local copy of the ISO, you can point to it with the --iso
parameter to avoid having ubuntu-server-netboot
download an extra copy. Just be sure that --iso
and --url
point to the same version of the ISO.
Optionally, you can place --autoinstall-url
to tell the netbooting process to enable subiquity automation. See our autoinstall example and [the autoinstall and Automated Server Installs
Introduction of Ubuntu Server guide](Automated Server Installs Introduction) for more details.
You can also add additional kernel command line arguments (e.g. "console=ttyS0"
) to the generated configuration files using the --extra-args
parameter.
Copy the files generated under the interim folder /tmp/tmpxxx/ubuntu-installer/
to your tftp root folder for netboot, for example /srv/tftp
or /var/lib/tftpboot
.
You may check your tftpd configuration of the root directory, for instance, tftpd-hpa is /etc/default/tftpd-hpa
. Let's copy:
$ sudo cp -r /tmp/tmpxxx/ubuntu-installer/* /srv/tftp
Then your netboot server is ready to go if the corresponding DHCP is set up.
For more details on setting up a PXE environment for x86 systems using a legacy BIOS, see this discourse post.
For more details on setting up a PXE environment for UEFI-based systems, see this discourse post.
Today ubuntu-server-netboot
needs to run on Ubuntu or another Debian derivative with the following packages installed:
- genisoimage
- mtools
- python3-distro-info
- pxelinux (x86-only)
- syslinux-common (x86-only)
This script is tested with Ubuntu 18.04 ("bionic beaver") and above.
Please report bugs to this github issue tracker. The github templates including "Issue" and "Pull requests" are originally forked from this "cookiecutter" templates for python.
Place pytest
to cover the basic test sets.