No, just 'loading' an iso will not work. It is much more complex than that and you really need to educate yourself on OS boot processes. There is truck loads on the interwebs. There is no shortcut to reading a lot.
Any system actually extracts the information from the ISO and runs it. it doesn't just 'load an iso'.
I suggest you start with the basic tftpserver contrib so you really understand what is happening, start with a text file and use a tftp client to get it, and then set up a simple linux system to boot. I have amended the wiki a little - you need to extract the correct files from the chosen distro ISO into the correct directories as per the config files.
There is no shortcut to understanding this stuff.Remember The contrib has set up your basic PXE environment with DHCP etc. You need to organise the configuration menus and the boot files.
The boot loader has to be smart enough to be able to load a kernel and other stuff over a network connection. Some of it can directly via tftp. Some of it has to be over say nfs. See the various configs that I pasted for examples.
For a linux boot you need syslinux with the pxelinux loader (or a.n.other network system eg gpxe)
For a lot of distros you will need NFS support - I have added a few notes on the wiki. Have a look at say Clonezilla for testing as it need no NFS. Rough guide from vague memory as follows:
Get the syslinux zip or tar.gz and copy these to the right places in /tftpboot
Copy the c32 files to /tftpboot/com32
bios\com32\elflink\ldlinux.c32
bios\com32\libutil\libutil.c32
bios\com32\modules\linux.c32
bios\com32\menu\menu.c32
I actually put memdisk in /tftpboot/images
bios\memdisk\memdisk
I put pxelinux.0 in the /tftpboot directory
bios\core\pxelinux.0
Get the Clonezilla ISO.
Open the Clonezilla ISO and extract vmlinuz, initrd.img and filesystem.squashfs from /live to /tftpboot/images/clonezilla
(you can see the syslinux dir it uses to boot on the ISO - have look in /syslinux/syslinux.cfg for more)
Make a pxelinux.cfg directory
Create a file called /tftpboot/pxelinux.cfg/default containing this and setting your server IP:
UI menu.c32
MENU TITLE Network Boot
TIMEOUT 50
default com32/vesamenu.c32
LABEL CloneZilla
MENU LABEL CloneZilla
KERNEL images/clonezilla/vmlinuz
APPEND initrd=images/clonezilla/initrd.img boot=live config noswap nolocales edd=on nomodeset ocs_live_run="ocs-live-general" ocs_live_extra_param="" ocs_live_keymap="" ocs_live_batch="no" ocs_lang="" vga=788 nosplash noprompt fetch=tftp://YourServeriP/images/clonezilla/filesystem.squashfs
Checks logs to make sure first the client gets an IP and then that it requests and servers the correct files. This is all pretty low level so there is not a lot of logging. Check /var/log/messages & /var/log/tftpd/current (or journactl)
Once you have got a basic linux system to boot then think about tackling Windows.
You will really need to go and read the Microsoft page first and really understand it.
https://docs.microsoft.com/en-us/windows/deployment/configure-a-pxe-server-to-load-windows-pe#pxe-boot-process-summaryFor Windows you can ignore the pxelinux stuff because.... it is for linux booting. You can see the Windows boot process above.
They talk about mapping the tftp boot directory to a local drive but don't do that.
Put all the correct files into a directory such as C:\local_dir\tftpboot_tmp and then SCP the lot to /tftpboot on the server.