Below is a partial list of the differences I have observed in PXE netboot for Ubuntu and RHEL:
Remote monitoring of PXE installation
RHEL supports monitoring remote installs via vnc or vnc reverse-connect, but Ubuntu does not support vnc. Ubuntu does allow remote installation via ssh but only for manual installs; You cannot monitor a fully automated Ubuntu install remotely.
To enable vnc for a PXE install on RHEL 7.0, for example, you would add the following options to the APPEND line in your PXE default config file menu entry (for Legacy BIOS)
MENU LABEL Boot RHEL 7.0 (ks install)
APPEND ip=dhcp inst.repo=http://192.168.95.97:8080 inst.vnc ksdevice=link inst.ks=http://192.168.95.97:8000/rhel7.0-ks.cfg
If you want to enable vnc reverse connect you would add something like inst.vncconnect=22.214.171.124:5500 after inst.vnc on the APPEND line.
In the case of Ubuntu you would enable D-I preseed from your PXE default config as follows:
MENU LABEL Boot Ubuntu 16.04 (manual netinst over ssh)
APPEND ip=dhcp auto=true priority=critical locale=en_US.UTF-8 kdb-chooser/method=us netcfg/choose_interface=auto url=http://192.168.95.97:8000/netconsole.cfg
It is important that you specify auto=true for automated install and priority=critical so that D-I will not ask the user for information (except for absolutely critical cases). You can specify the location of the D-I preseed file over http (among other methods) with url=
Then the preseed file must contain instructions to start sshd so that you can make an ssh connection to the Debian Installer and control the installation manually. Here is my D-I preseed file for Ubuntu PXE install over ssh:
# D-I preseed file to enable remote installs of Ubuntu/Debian
# over SSH
#d-i debian-installer/locale string ko_KR.UTF-8
d-i debian-installer/language string en
d-i debian-installer/country string KR
d-i debian-installer/locale string en_US.UTF-8
d-i keyboard-configuration/xkb-keymap select us
d-i debconf/priority select critical
d-i auto-install/enabled boolean true
d-i netcfg/choose_interface select auto
d-i netcfg/get_hostname string unassigned-hostname
### Network console
# Use the following settings if you wish to make use of the network-console
# component for remote installation over SSH. This only makes sense if you
# intend to perform the remainder of the installation manually.
d-i anna/choose_modules string network-console
d-i network-console/password password foofoo
d-i network-console/password-again password foofoo
d-i preseed/early_command string anna-install network-console
Kickstart syntax support
RHEL and its variants natively support Kickstart syntax for automated installs (although the syntax varies between versions of RHEL; I strongly recommend checking your syntax with ksvalidator) but Ubuntu only supports a subset of Kickstart commands. For example, installing to multiple disks with something like
part /boot --fstype=ext4 --ondisk=sda --size=512
part / --fstype=ext4 --ondisk=sda --size=1 --grow
part /var --fstype=ext4 --ondisk=sdb --size=1 --grow
is NOT supported in Ubuntu-flavored kickstart files. You can only install to a single disk when using Ubuntu kickstart syntax. There are many more such gotchas so it's a good idea to stick with the Debian/Ubuntu native automated install solution D-I preseed.
For all PXE installs, you need a DHCP server to assign IP's to netboot clients. But a fully-automated Ubuntu PXE D-I preseed installation also requires that you have a DNS server running. If you do not have a name server running on the subnet for PXE netboot, D-I will stop and ask you to enter the address of the name server or press ENTER for no name server.
Since I use dnsmasq, I made sure that the following was commented out in /etc/dnsmasq.conf so that DNS would run:
# Listen on this specific port instead of the standard DNS port
# (53). Setting this to zero completely disables DNS function,
# leaving only DHCP and/or TFTP.
I am sure there are many more differences, but these are the ones I've encountered so far. If you know of more, please let me know in the comments.