You can use iPXE to boot into the Fedora Linux installer via HTTP. You can then install Fedora to a local hard disk or to an iSCSI or FCoE SAN target.
These instructions should work for similar Linux distributions, such as Red Hat Enterprise Linux (RHEL) and CentOS.
Create an iPXE script file fedora.ipxe containing:
#!ipxe
# Set repository URI
set mirror http://download.fedoraproject.org/pub/fedora/linux/releases/44
set repo ${mirror}/Everything/x86_64/os
# Start installer
kernel ${repo}/images/pxeboot/vmlinuz inst.repo=${repo}
initrd ${repo}/images/pxeboot/initrd.img
boot
If you have mirrored the Fedora tree locally, then you should change the line
set mirror http://download.fedoraproject.org/pub/fedora/linux/releases/44
to point to the URI of your local mirror. Booting and installing from a local mirror will be several times faster than using the public download.fedoraproject.org mirror.
If you are using UEFI Secure Boot, then you will need to use the Fedora UEFI shim to authorise booting the Fedora kernel. For example:
kernel ${repo}/images/pxeboot/vmlinuz inst.repo=${repo}
initrd ${repo}/images/pxeboot/initrd.img
shim ${repo}/EFI/BOOT/BOOTX64.EFI
boot
The shim command will safely do nothing if the kernel can be booted without using a shim. You can leave the shim line in your script even when UEFI Secure Boot is disabled, or when you are using BIOS rather than UEFI.
Boot using iPXE from the URI of your fedora.ipxe script, e.g. http://my.web.server/fedora.ipxe. You should see iPXE download and boot into the Fedora installer via HTTP:
You can now install Fedora to a local hard disk. Congratulations on successfully network-booting the Fedora installer!
You can install Fedora to an iSCSI or FCoE SAN target instead of to a local disk. To do this, you must modify the fedora.ipxe script to allow for installation to your SAN target disk. For example:
#!ipxe
# Set repository URI
set mirror http://download.fedoraproject.org/pub/fedora/linux/releases/44
set repo ${mirror}/Everything/x86_64/os
# Hook SAN target
sanhook iscsi:192.168.0.1::::iqn.1992-01.com.example.target:fedora
# Start installer if F12 is pressed, otherwise boot from SAN target
prompt --key 0x197e --timeout 2000 Press F12 to install Fedora... || sanboot
kernel ${repo}/images/pxeboot/vmlinuz inst.repo=${repo}
initrd ${repo}/images/pxeboot/initrd.img
boot
You must change the line
sanhook iscsi:192.168.0.1::::iqn.1992-01.com.example.target:fedora
to specify the SAN URI of your iSCSI or FCoE target.
You can use a kickstart file and the inst.ks=… kernel command line parameter to automate the actions taken once iPXE has started the Fedora installer. For example, if you have placed your ks.cfg file in your repository directory:
kernel ${repo}/images/pxeboot/vmlinuz inst.repo=${repo} inst.ks=${repo}/ks.cfg
initrd ${repo}/images/pxeboot/initrd.img
boot
The Fedora initrd image (initrd.img) is a small bootstrap image. Once the initrd starts, it will attempt to download the full installer image (install.img) from the repository specified by the inst.repo=… kernel command line parameter.
You can choose to use iPXE to download both the initrd image and the installer image, and then use the root=… kernel command line parameter to direct Fedora to use the already downloaded installer image. For example:
kernel ${repo}/images/pxeboot/vmlinuz inst.repo=${repo} root=live:/install.img
initrd ${repo}/images/pxeboot/initrd.img
initrd ${repo}/images/install.img /install.img
boot