Using FOG to PXE boot into your favorite installer images
-
WinPE 10 for BIOS and UEFI based systems
- First we’ll create the required directories:
mkdir -p /tftpboot/os/winpe
- Now we’ll mount the WinPE iso over the loop directory. Then we’ll copy the contents of the DVD to the directory we built above.
mount -o loop /{full path where you have the iso stored}/WinPE_amd64.iso /mnt/loop cp /mnt/loop/Boot/BCD /tftpboot/os/winpe/ cp /mnt/loop/Boot/boot.sdi /tftpboot/os/winpe/ cp /mnt/loop/sources/boot.wim /tftpboot/os/winpe/ umount /mnt/loop
- Download and install the latest wimboot kernel and extract it from the zip file.
cd /tmp wget http://git.ipxe.org/releases/wimboot/wimboot-latest.zip unzip wimboot-latest.zip
- Copy the wimboot file from the archive directory to root of the /tftpboot directory (we’ll need this for every windows boot media, so we’ll place it in a common spot).
cp ./wimboot-2.6.0-signed/wimboot /tftpboot
- The last bit of magic we need to do is setup a new FOG iPXE boot menu entry for this OS.
- In the fog WebGUI go to FOG Configuration->iPXE New Menu Entry
Set the following fields
Menu Item: os.WinPE10
Description: WinPE 10
Parameters:
set tftp-path tftp://${fog-ip}
set pe-path ${tftp-path}/os/winpe
kernel ${tftp-path}/wimboot gui
imgfetch --name BCD ${pe-path}/BCD BCD
imgfetch --name boot.sdi ${pe-path}/boot.sdi boot.sdi
imgfetch --name boot.wim ${pe-path}/boot.wim boot.wim
boot || goto MENU - That’s it, just pxe boot your target system and pick WinPE 10 from the FOG iPXE boot menu.
References:
-
To keep this thread clean, I’m going to fork all discussions related to this thread into a new thread and post a cross link here. This is only done to keep the thread orderly and easy to follow. The discussions regarding this thread ARE important to vet any issues before this tutorial is converted into a wiki document.
The thread discussion are here
-
Ubuntu 17.10 Desktop
- First we’ll create the required directories:
mkdir -p /images/os/ubuntu/Desk17.10 mkdir -p /tftpboot/os/ubuntu/Desk17.10
- Now we’ll mount the Ubuntu 17.10 installer over the loop directory. Then we’ll copy the contents of the DVD to the directory we built above.
mount -o loop -t iso9660 /{full path where you have the iso stored}/ubuntu-17.10-desktop-amd64.iso /mnt/loop cp -R /mnt/loop/* /images/os/ubuntu/Desk17.10 umount /mnt/loop
- Finally we’ll copy the pxe boot kernel and intfs to the tftpboot directory.
cp /images/os/ubuntu/Desk17.10/casper/vmlinuz.efi /tftpboot/os/ubuntu/Desk17.10 cp /images/os/ubuntu/Desk17.10/casper/initrd.lz /tftpboot/os/ubuntu/Desk17.10
- The last bit of magic we need to do is setup a new FOG iPXE boot menu entry for this OS.
- In the fog WebGUI go to FOG Configuration->iPXE New Menu Entry
Set the following fields
Menu Item: os.Ubuntu.Desktop.17.10
Description: Ubuntu Desktop 17.10
Parameters:
kernel tftp://${fog-ip}/os/ubuntu/Desk17.10/vmlinuz.efi
initrd tftp://${fog-ip}/os/ubuntu/Desk17.10/initrd.lz
imgargs vmlinuz.efi root=/dev/nfs boot=casper netboot=nfs nfsroot=${fog-ip}:/images/os/ubuntu/Desk17.10/ locale=en_US.UTF-8 keyboard-configuration/layoutcode=us quiet splash ip=dhcp rw
boot || goto MENU
Menu Show with: All Hosts - That’s it, just pxe boot your target system and pick
Ubuntu Desktop 17.10
from the FOG iPXE boot menu.
References:
-
Kali Linux 2017.2
At this point the instructions don't work completely. I can get the installer to boot, but it appears to want to download files from Debian to complete the installation
- First we’ll create the required directories:
mkdir -p /images/os/kali/2017.2 mkdir -p /tftpboot/os/kali/2017.2
- Now we’ll mount the Kali 2017.2 DVD installer over the loop directory. Then we’ll copy the contents of the DVD to the directory we built above.
mount -o loop -t iso9660 /{full path where you have the iso stored}/kali-linux-2017.2-amd64.iso /mnt/loop cp -R /mnt/loop/* /images/os/kali/2017.2 umount /mnt/loop
- At this point we need to go out and download the netboot kernel and initrd files from the Kali site. We’ll create a temp directory, download the tar ball and extract the two files we need.
cd /tmp mkdir netboot cd /tmp/netboot cd /tmp mkdir netboot cd /tmp/netboot wget http://repo.kali.org/kali/dists/kali-rolling/main/installer-amd64/current/images/netboot/netboot.tar.gz tar -zxf netboot.tar.gz cd ./debian-installer/amd64 cp linux /tftpboot/os/kali/2017.2 cp initrd.gz /tftpboot/os/kali/2017.2 cd /tmp rm -rf ./netboot
Note: If you get to the point of booting into the installer and the installer keeps asking for a cdrom, you have the wrong initfs. You must have the initrd file from the Debian netboot package. Unlike other distributions, the netboot files are not on the typical installation media as far as I found.
4. The last bit of magic we need to do is setup a new FOG iPXE boot menu entry for this OS.
5. In the fog WebGUI go to FOG Configuration->iPXE New Menu Entry
Set the following fields
Menu Item: os.Kali.2017.2
Description: Kali 2017.2
Parameters:
kernel tftp://${fog-ip}/os/kali/2017.2/linux
initrd tftp://${fog-ip}/os/kali/2017.2/initrd.gz
imgargs linux initrd=initrd.gz root=/dev/nfs netboot=nfs nfsroot=${fog-ip}:/images/os/kali/2017.2/ ip=dhcp rw language=en country=US keymap=us hostname=kali domain=domain.com
boot || goto MENU
Menu Show with: All Hosts
6. That’s it, just pxe boot your target system and pickKali 2017.2
from the FOG iPXE boot menu.Note 1: If you want the gui network installer you can download this netboot gzip instead of the one referenced above: http://repo.kali.org/kali/dists/kali-rolling/main/installer-amd64/current/images/netboot/gtk/netboot.tar.gz
Note 2: When you us the netboot installer kali linux will have to download the install files from the internet even though you have them on DVD. It appears that the installer tries to mount the DVD during netboot, but since that fails it falls over to network install mode. This appears to be a feature in kali linux and not a limitation in FOG or netbooting
Note 3: You can set the majority of the values in the network installer by using a preseed file. Also with that preseed file you can direct kali linux to install from a local mirrored repository by changing some values in the preseed file below
Repository preseed file from: Offensive Security site
d-i debian-installer/locale string en_US d-i console-keymaps-at/keymap select us d-i mirror/country string enter information manually d-i mirror/suite string kali d-i mirror/codename string kali d-i mirror/http/hostname string archive.kali.org d-i mirror/http/directory string /kali d-i mirror/http/proxy string d-i clock-setup/utc boolean true d-i time/zone string US/Eastern # Disable volatile and security d-i apt-setup/services-select multiselect # Enable contrib and non-free d-i apt-setup/non-free boolean true d-i apt-setup/contrib boolean true d-i partman-auto/method string regular d-i partman-lvm/device_remove_lvm boolean true d-i partman-md/device_remove_md boolean true d-i partman-lvm/confirm boolean true d-i partman-auto/choose_recipe select atomic d-i partman/confirm_write_new_label boolean true d-i partman/choose_partition select finish d-i partman/confirm boolean true d-i partman/confirm_nooverwrite boolean true # Add our own security mirror d-i apt-setup/local0/repository string http://archive.kali.org/kali-security kali/updates main d-i apt-setup/local0/comment string Security updates d-i apt-setup/local0/source boolean false d-i apt-setup/use_mirror boolean true # Upgrade installed packages tasksel tasksel/first multiselect standard d-i pkgsel/upgrade select full-upgrade # Install a limited subset of tools from the Kali Linux repositories d-i pkgsel/include string openssh-server openvas metasploit-framework metasploit nano # Change default hostname d-i netcfg/get_hostname string unassigned-hostname d-i netcfg/get_domain string unassigned-domain d-i netcfg/hostname string kali # Do not create a normal user account d-i passwd/make-user boolean false d-i passwd/root-password password toor d-i passwd/root-password-again password toor popularity-contest popularity-contest/participate boolean false d-i grub-installer/only_debian boolean true d-i grub-installer/with_other_os boolean false d-i finish-install/reboot_in_progress note d-i preseed/late_command string \ in-target wget http://192.168.101.54/postseed.sh; \ in-target /bin/bash -x chmod 755 ./postseed.sh; \ in-target /bin/bash -x ./postseed.sh;
Note 4: You should be able to boot a live instance of kali with these actions
mkdir /var/www/html/kali cp /images/os/kali/2017.2/live/filesystem.squashfs /var/www/html/kali chmod 755 /var/www/html/kali/filesystem.squashfs
And then add this parameter block to a FOG iPXE menu entry. I can say I have not tried this, but assembled the information from a few blogs.
kernel tftp://${fog-ip}/os/kali/2017.2/linux
initrd tftp://${fog-ip}/os/kali/2017.2/initrd.gz
imgargs vga=788 initrd=initrd.gz boot=live components fetch=http://${fog-ip}/kali/filesystem.squashfsReferences:
Kali linux appears to be based on Debian linux. I used the foundation for Debian to create this installer.
https://www.offensive-security.com/kali-linux/kali-linux-unattended-network-install-pxe/ -
Fedora 27 Workstation
- First we’ll create the required directories:
mkdir -p /images/os/fedora/W27 mkdir -p /tftpboot/os/fedora/W27
- Now we’ll mount the Fedora 26 Workstation installer over the loop directory. Then we’ll copy the contents of the DVD to the directory we built above.
mount -o loop -t iso9660 /{full path where you have the iso stored}/Fedora-Xfce-Live-x86_64-27-1.6.iso /mnt/loop cp -R /mnt/loop/* /images/os/fedora/W27 umount /mnt/loop
- Finally we’ll copy the pxe boot kernel and intfs to the tftpboot directory.
cp /images/os/fedora/W27/isolinux/vmlinuz /tftpboot/os/fedora/W27 cp /images/os/fedora/W27/isolinux/initrd.img /tftpboot/os/fedora/W27
- The last bit of magic we need to do is setup a new FOG iPXE boot menu entry for this OS.
- In the fog WebGUI go to FOG Configuration->iPXE New Menu Entry
Set the following fields
Menu Item: os.FedoraW27
Description: Fedora Workstation v27
Parameters:
kernel tftp://${fog-ip}/os/fedora/W27/vmlinuz
initrd tftp://${fog-ip}/os/fedora/W27/initrd.img
imgargs vmlinuz initrd=initrd.img root=live:nfs://${fog-ip}/images/os/fedora/W27/LiveOS/squashfs.img ip=dhcp repo=nfs://${fog-ip}/images/os/fedora/W27 splash quiet
boot || goto MENU
Menu Show with: All Hosts - That’s it, just pxe boot your target system and pick
Fedora Workstation v27
from the FOG iPXE boot menu.
Reference:
https://forums.fogproject.org/topic/11108/can-fog-replace-my-urbackup-server/8 -
Kali Live 2017.3 - v0.1
- First we’ll create the required directories:
mkdir -p /tftpboot/os/kali/2017.3/live
- Now we’ll mount the Kali Live 2017.3 installer over the loop directory. Then we’ll copy the contents of the DVD to the directory we built above.
mount -o loop -t iso9660 /{full path where you have the iso stored}/kali-linux-2017.3-amd64.iso /mnt/loop cp /mnt/loop/live/{initrd.img,vmlinuz,filesystem.squashfs} /tftpboot/os/kali/2017.3/live/ umount /mnt/loop
- The last bit of magic we need to do is setup a new FOG iPXE boot menu entry for this OS.
- In the fog WebGUI go to FOG Configuration->iPXE New Menu Entry
Set the following fields
Menu Item: os.Kali.live.2017.3
Description: Kali Live 2017.3
Parameters:
kernel tftp://${fog-ip}/os/kali/2017.3/live/vmlinuz
initrd tftp://${fog-ip}/os/kali/2017.3/live/initrd.img
imgargs vmlinuz initrd=initrd.img append boot=live components fetch=tftp://${fog-ip}/os/kali/2017.3/live/filesystem.squashfs
boot || goto MENU
Menu Show with: All Hosts - That’s it, just pxe boot your target system and pick
Kali Live 2017.3
from the FOG iPXE boot menu.
References:
https://forums.fogproject.org/topic/11108/can-fog-replace-my-urbackup-server/9 -
ESXi 6.5u1
NOTE: This guidance only supports network booting of the uefi installer for ESXi. The reason for this is the fog project does not ship iPXE kernels that support the comboot function. If you want to boot your ESXi server in legacy mode you will need to compile your own specific version of undionly.kpxe to add in the IMG_COMBOOT.
- First we’ll create the required directories:
mkdir -p /images/os/esxi/6.5u1
- Now we’ll mount the ESXi installer iso over the loop directory. Then we’ll copy the contents of the DVD to the directory we built above.
mount -o loop -t iso9660 /{full path where you have the iso stored}/VMware-VMvisor-Installer-6.5.0.update01-5969303.x86_64.iso /mnt/loop cp -R /mnt/loop/* /images/os/esxi/6.5u1 umount /mnt/loop
- Edit the boot configuration file to use NFS to access all of ESXi’s files.
# remove forward slashes from the config file sed -i 's/\///g' /images/os/esxi/6.5u1/efi/boot/boot.cfg
Now we need to edit the/images/os/esxi/6.5u1/efi/boot/boot.cfg file to insert the
prefix
parameter. Insert the following line just below thetitle
parameter. Also, be sure to replace{fog_server_ip}
with the actual IP address of your fog server.prefix=nfs://{fog_server_ip}:/images/os/esxi/6.5u1
- The last bit of magic we need to do is setup a new FOG iPXE boot menu entry for this OS.
- In the fog WebGUI go to FOG Configuration->iPXE New Menu Entry
Set the following fields
Menu Item: os.esxi65u1
Description: ESXi 6.5u1 Installer
Parameters:
kernel nfs://${fog-ip}:/images/os/esxi/6.5u1/efi/boot/bootx64.efi -c nfs://${fog-ip}:/images/os/esxi/6.5u1/efi/boot/boot.cfg
boot || goto MENU
Menu Show with: All Hosts - That’s it, just pxe boot your target system and pick
ESXi 6.5u1 Installer
from the FOG iPXE boot menu.
If for some reason you can not use NFS to pxe boot into the ESXi installer you can use tftp or http. If you want to use tftp extract the ESXi install files to /tftpboot/os/esxi/6.5u1. Then update the nfs:// protocols to tftp:// Be sure to remove the ':/images' after the host name or you will have errors. (i.e. kernel nfs://${fog-ip}:/images/os/esxi would become kernel tftp://${fog-ip}/os/esxi)
References:
https://www.reversengineered.com/2015/02/11/booting-vmware-esxi-in-ipxe/
http://forum.ipxe.org/showthread.php?tid=8164 -
SystemRescueCd 5.2.2 x64
- First we’ll create the required directories:
mkdir -p /tftpboot/os/RescueCd/5.2.2
- Now we’ll mount the SystemRescueCd boot iso over the loop directory. Then we’ll copy the contents of the DVD to the directory we built above.
mount -o loop -t iso9660 /{full path where you have the iso stored}/systemrescuecd-x86-5.2.2.iso /mnt/loop cp /mnt/loop/isolinux/{rescue64,initram.igz} /tftpboot/os/RescueCd/5.2.2/ umount /mnt/loop
- The last bit of magic we need to do is setup a new FOG iPXE boot menu entry for this OS.
- In the fog WebGUI go to FOG Configuration->iPXE New Menu Entry
Set the following fields
Menu Item: os.SystemRescueCd.5.2.2
Description: SystemRescueCd 5.2.2
Parameters:
kernel tftp://${fog-ip}/os/RescueCd/5.2.2/rescue64
initrd tftp://${fog-ip}/os/RescueCd/5.2.2/initram.igz
imgargs docache
boot || goto MENU
Menu Show with: All Hosts - That’s it, just pxe boot your target system and pick
SystemRescueCd 5.2.2
from the FOG iPXE boot menu.
References:
None -
Linux Mint 19.1 Cinnamon
- First we’ll create the required directories:
mkdir -p /images/os/mint/19.1 mkdir -p /tftpboot/mint/19.1
- Now we’ll mount the Linux Mint 19.1 installer over the loop directory. Then we’ll copy the contents of the DVD to the directory we built above.
mount -o loop -t iso9660 /{full path where you have the iso stored}/linuxmint-19.1-cinnamon-64bit.iso /mnt/loop cp -R /mnt/loop/* /images/os/mint/19.1 umount /mnt/loop
- Finally we’ll copy the pxe boot kernel and intfs to the tftpboot directory.
cp /images/os/mint/19.1/casper/vmlinuz /tftpboot/mint/19.1 cp /images/os/mint/19.1/casper/initrd.lz /tftpboot/mint/19.1
- The last bit of magic we need to do is setup a new FOG iPXE boot menu entry for this OS.
- In the fog WebGUI go to FOG Configuration->iPXE New Menu Entry
Set the following fields
Menu Item: os.Mint19.1
Description: Linux Mint 19.1
Parameters:
kernel tftp://${fog-ip}/mint/19.1/vmlinuz
initrd tftp://${fog-ip}/mint/19.1/initrd.lz
imgargs vmlinuz root=/dev/nfs boot=casper netboot=nfs nfsroot=${fog-ip}:/images/os/mint/19.1/ locale=en_US.UTF-8 keyboard-configuration/layoutcode=us toram quiet splash
boot || goto MENU
Menu Show with: All Hosts - That’s it, just pxe boot your target system and pick
Linux Mint 19.1
from the FOG iPXE boot menu.
-
GParted 0.33.0 x86
- First we’ll create the required directories:
mkdir -p /tftpboot/gparted mkdir -p /tmp/gparted
- Download the gparted zip file from sourceforge site and save it to the
/tmp/gparted
directory - Change to the /tmp/gparted directory and expand the zip file. Then change into the live directory and finally copy the required files to the tftpboot/gparted directory
cd /tmp/gparted unzip gparted-live-0.33.0-2-i686.zip cd live cp {vmlinuz,initrd.img,filesystem.squashfs} /tftpboot/gparted
- In the fog WebGUI go to FOG Configuration->iPXE New Menu Entry
Set the following fields
Menu Item: os.GParted
Description: GParted 0.33.0
Parameters:
kernel tftp://${fog-ip}/gparted/vmlinuz
initrd tftp://${fog-ip}/gparted/initrd.img
imgargs vmlinuz initrd=initrd.img boot=live config components union=overlay username=user noswap noeject ip= vga=788 fetch=tftp://${fog-ip}/gparted/filesystem.squashfs
boot || goto MENU
Menu Show with: All Hosts
5. That’s it, just pxe boot your target system and pickGParted 0.33.0
from the FOG iPXE boot menu.References:
https://gparted.org/livepxe.php -
ESXi 6.7u2
NOTE: This guidance only supports network booting of the uefi installer for ESXi. The reason for this is the fog project does not ship iPXE kernels that support the comboot function. If you want to boot your ESXi server in legacy mode you will need to compile your own specific version of undionly.kpxe to add in the IMG_COMBOOT.
- First we’ll create the required directories:
mkdir -p /images/os/esxi/6.7u2
- Now we’ll mount the ESXi installer iso over the loop directory. Then we’ll copy the contents of the DVD to the directory we built above.
mount -o loop -t iso9660 /{full path where you have the iso stored}/VMware-VMvisor-Installer-6.7.0.update02-13006603.x86_64.iso /mnt/loop cp -R /mnt/loop/* /images/os/esxi/6.7u2 umount /mnt/loop
- Edit the boot configuration file to use NFS to access all of ESXi’s files.
# remove forward slashes from the config file sed -i 's/\///g' /images/os/esxi/6.7u2/efi/boot/boot.cfg
Now we need to edit the/images/os/esxi/6.7u2/efi/boot/boot.cfg file to insert or modify the
prefix
parameter. Insert/modify the following line just below thetitle
parameter. Also, be sure to replace{fog_server_ip}
(exactly including the curly braces) with the actual IP address of your fog server. Your prefix line should look similar to this:prefix=nfs://192.168.1.20:/images/os/esxi/6.7u2
- The last bit of magic we need to do is setup a new FOG iPXE boot menu entry for this OS.
- In the fog WebGUI go to FOG Configuration->iPXE New Menu Entry
Set the following fields
Menu Item: os.esxi67u2
Description: ESXi 6.7u2 Installer
Parameters:
kernel nfs://${fog-ip}:/images/os/esxi/6.7u2/efi/boot/bootx64.efi -c nfs://${fog-ip}:/images/os/esxi/6.7u2/efi/boot/boot.cfg
boot || goto MENU
Menu Show with: All Hosts - That’s it, just pxe boot your target system and pick
ESXi 6.7u2 Installer
from the FOG iPXE boot menu.
If for some reason you can not use NFS to pxe boot into the ESXi installer you can use tftp or http. If you want to use tftp extract the ESXi install files to /tftpboot/os/esxi/6.7u2. Then update the nfs:// protocols to tftp:// Be sure to remove the ':/images' after the host name or you will have errors. (i.e. kernel nfs://${fog-ip}:/images/os/esxi would become kernel tftp://${fog-ip}/os/esxi)
-
Ubuntu 1910 Desktop
- First we’ll create the required directories:
mkdir -p /images/os/ubuntu/Desk19.10 mkdir -p /tftpboot/os/ubuntu/Desk19.10
- Now we’ll mount the Ubuntu 19.10 installer over the loop directory. Then we’ll copy the contents of the DVD to the directory we built above.
mount -o loop -t iso9660 /{full path where you have the iso stored}/ubuntu-19.10-desktop-amd64.iso /mnt/loop cp -R /mnt/loop/* /images/os/ubuntu/Desk19.10 umount /mnt/loop
- Finally we’ll copy the pxe boot kernel and intfs to the tftpboot directory. We’ll need to download the netboot version from here: http://archive.ubuntu.com/ubuntu/dists/eoan/main/installer-amd64/current/images/netboot/netboot.tar.gz This version of bzlinuz.efi and initrd.lz support booting over an NFS share instead of the local DVD Drive.
wget http://archive.ubuntu.com/ubuntu/dists/eoan/main/installer-amd64/current/images/netboot/netboot.tar.gz tar -zxf netboot.tar.gz cp ./ubuntu-installer/amd64/linux /tftpboot/os/ubuntu/Desk19.10 cp ./ubuntu-installer/amd64/initrd.gz /tftpboot/os/ubuntu/Desk19.10
- The last bit of magic we need to do is setup a new FOG iPXE boot menu entry for this OS.
- In the fog WebGUI go to FOG Configuration->iPXE New Menu Entry
Set the following fields
Menu Item: os.Ubuntu.Desktop.19.10
Description: Ubuntu Desktop 19.10
Parameters:
kernel tftp://${fog-ip}/os/ubuntu/Desk19.10/linux
initrd tftp://${fog-ip}/os/ubuntu/Desk19.10/initrd.gz
imgargs linux root=/dev/nfs boot=casper netboot=nfs nfsroot=${fog-ip}:/images/os/ubuntu/Desk19.10/ locale=en_US.UTF-8 keyboard-configuration/layoutcode=us quiet splash ip=dhcp rw
boot || goto MENU
Menu Show with: All Hosts - That’s it, just pxe boot your target system and pick
Ubuntu Desktop 19.10
from the FOG iPXE boot menu.
References:
-
Veeam Agent Rescue DVD
- First we’ll create the required directories:
mkdir -p /tftpboot/os/veeam
- Now we’ll mount the Veeam Recovery ISO over the loop directory. Then we’ll copy the contents of the DVD to the directory we built above.
mount -o loop /{full path where you have the iso stored}/ VeeamRecoveryMedia.iso /mnt/loop cp /mnt/loop/boot/BCD /tftpboot/os/veeam/ cp /mnt/loop/boot/boot.sdi /tftpboot/os/veeam/ cp /mnt/loop/sources/boot.wim /tftpboot/os/veeam/ umount /mnt/loop
- Download and install the latest wimboot kernel and extract it from the zip file.
cd /tmp wget http://git.ipxe.org/releases/wimboot/wimboot-latest.zip unzip wimboot-latest.zip
- Copy the wimboot file from the archive directory to root of the /tftpboot directory (we’ll need this for every windows boot media, so we’ll place it in a common spot).
cp ./wimboot-2.6.0-signed/wimboot /tftpboot
- The last bit of magic we need to do is setup a new FOG iPXE boot menu entry for this Veeam Recover Image.
- In the fog WebGUI go to FOG Configuration->iPXE New Menu Entry
Set the following fields
Menu Item: os.VeeamRecovery
Description: Veeam Agent 4
Parameters:
set tftp-path tftp://${fog-ip}
set pe-path ${tftp-path}/os/veeam
kernel ${tftp-path}/wimboot gui
imgfetch --name BCD ${pe-path}/BCD BCD
imgfetch --name boot.sdi ${pe-path}/boot.sdi boot.sdi
imgfetch --name boot.wim ${pe-path}/boot.wim boot.wim
boot || goto MENU - That’s it, just pxe boot your target system and pick Veeam Agent 4 from the FOG iPXE boot menu.
Bonus round
NOTE: the code below doesn't work at the moment, I'm getting an HTTP access denied message. The info is right, there is just something with apache at the moment that is stopping access to these individual files
The above method shows how to load the Veeam Recover image over tftp. The following instructions show how to do the same thing over the faster http protocol.- First we’ll create the required directories:
mkdir -p /var/www/html/os/veeam
- Now we’ll mount the Veeam Recovery ISO over the loop directory. Then we’ll copy the contents of the DVD to the directory we built above.
mount -o loop /{full path where you have the iso stored}/ VeeamRecoveryMedia.iso /mnt/loop cp /mnt/loop/boot/BCD /var/www/html/os/veeam cp /mnt/loop/boot/boot.sdi /var/www/html/os/veeam cp /mnt/loop/sources/boot.wim /var/www/html/os/veeam umount /mnt/loop
- Download and install the latest wimboot kernel and extract it from the zip file.
cd /tmp wget http://git.ipxe.org/releases/wimboot/wimboot-latest.zip unzip wimboot-latest.zip
- Copy the wimboot file from the archive directory to root of the /var/www/html/os directory (we’ll need this for every windows boot media, so we’ll place it in a common spot).
cp ./wimboot-2.6.0-signed/wimboot /var/www/html/os
- The last bit of magic we need to do is setup a new FOG iPXE boot menu entry for this Veeam Recover Image.
- In the fog WebGUI go to FOG Configuration->iPXE New Menu Entry
Set the following fields
Menu Item: os.VeeamRecoveryHTTP
Description: Veeam Agent 4 (http)
Parameters:
set http-path http://${fog-ip}/os
set pe-path ${http-path}/veeam
kernel ${http-path}/wimboot gui
imgfetch --name BCD ${pe-path}/BCD BCD
imgfetch --name boot.sdi ${pe-path}/boot.sdi boot.sdi
imgfetch --name boot.wim ${pe-path}/boot.wim boot.wim
boot || goto MENU - That’s it, just pxe boot your target system and pick Veeam Agent 4 (http) from the FOG iPXE boot menu.
-
Ubuntu 1910 Server
WARNING: The installer files needed for 19.10 has been removed from the download site. Noticed 25-Jan-2021. This tutorial is for reference only.
- First we’ll create the required directories:
mkdir -p /images/os/ubuntu/Server19.10 mkdir -p /tftpboot/os/ubuntu/Server19.10
- Now we’ll mount the Ubuntu Server 19.10 installer over the loop directory. Then we’ll copy the contents of the DVD to the directory we built above.
mount -o loop -t iso9660 /{full path where you have the iso stored}/ubuntu-19.10-live-server-amd64.iso /mnt/loop cp -R /mnt/loop/* /images/os/ubuntu/Server19.10 umount /mnt/loop
- Finally we’ll copy the pxe boot kernel and intfs to the tftpboot directory. We’ll need to download the netboot version from here: http://archive.ubuntu.com/ubuntu/dists/eoan/main/installer-amd64/current/images/netboot/netboot.tar.gz This version of bzlinuz.efi and initrd.lz support booting over an NFS share instead of the local DVD Drive.
wget http://archive.ubuntu.com/ubuntu/dists/eoan/main/installer-amd64/current/images/netboot/netboot.tar.gz tar -zxf netboot.tar.gz cp ./ubuntu-installer/amd64/linux /tftpboot/os/ubuntu/Server19.10 cp ./ubuntu-installer/amd64/initrd.gz /tftpboot/os/ubuntu/Server19.10
- The last bit of magic we need to do is setup a new FOG iPXE boot menu entry for this OS.
- In the fog WebGUI go to FOG Configuration->iPXE New Menu Entry
Set the following fields
Menu Item: os.Ubuntu.Server.19.10
Description: Ubuntu Server 19.10
Parameters:
kernel tftp://${fog-ip}/os/ubuntu/Server19.10/linux
initrd tftp://${fog-ip}/os/ubuntu/Server19.10/initrd.gz
imgargs linux root=/dev/nfs boot=casper netboot=nfs nfsroot=${fog-ip}:/images/os/ubuntu/Server19.10/ locale=en_US.UTF-8 keyboard-configuration/layoutcode=us quiet splash ip=dhcp rw
boot || goto MENU
Menu Show with: All Hosts - That’s it, just pxe boot your target system and pick
Ubuntu Server 19.10
from the FOG iPXE boot menu.
References:
-
Ubuntu 20.04 Server
This is solution still under investigation. It appears that Canonical has changed how their installer works and for me, its a bit strange since now they require the entire live iso to run from memory. That means transferring the 2.1GB iso image over the network to the network computer before the kernel boots. This kind of (imo) limits the target hardware to have at least 4GB of ram (2GB for the iso, 1GB for the OS and then 1GB for free RAM, said from an uneducated guess POV). To me this change seems a bit tone deaf to the Ubuntu user community only supplying the iso image in live boot mode.
Reference threads:
https://discourse.ubuntu.com/t/netbooting-the-live-server-installer/14510
https://bugs.launchpad.net/ubuntu/+source/debian-installer/+bug/1429030?_ga=2.229105820.1620676036.1595355002-1365610273.1592834629
https://forums.fogproject.org/topic/14590/20-04-autoinstallAlso looking into the mini.iso referenced here (but only for bios installs, it appears that the uefi bits are broken and won’t be fix to drive folks away from this solution): http://archive.ubuntu.com/ubuntu/dists/focal/main/installer-amd64/current/legacy-images/netboot
-
Debian 10.5 Standard-Live
- First we’ll create the required directories:
mkdir -p /images/os/debian/10.5L mkdir -p /tftpboot/debian/10.5L # for FOG Server with RedHat based OS mkdir -p /var/www/html/os/debian/10.5L # for FOG Server with Debian based OS mkdir -p /var/www/os/debian/10.5L
- Now we’ll mount the Debian live DVD over the loop directory. Then we’ll copy the contents of the DVD to the directory we built above.
mount -o loop -t iso9660 /{full path where you have the iso stored}/debian-live-10.5.0-amd64-standard.iso /mnt/loop cp -R /mnt/loop/* /images/os/debian/10.5L umount /mnt/loop
- Finally we’ll copy the pxe boot kernel and intfs to the tftpboot directory.
cp /images/os/debian/10.5L/live/vmlinuz-4.19.0-10-amd64 /tftpboot/debian/10.5L/vmlinuz cp /images/os/debian/10.5L/live/initrd.img-4.19.0-10-amd64 /tftpboot/debian/10.5L/initrd # for FOG Server with RedHat based OS cp /images/os/debian/10.5L/live/filesystem.squashfs /var/www/html/os/debian/10.5L # for FOG Server with Debian based OS cp /images/os/debian/10.5L/live/filesystem.squashfs /var/www/os/debian/10.5L
- The last bit of magic we need to do is setup a new FOG iPXE boot menu entry for this OS.
- In the fog WebGUI go to FOG Configuration->iPXE New Menu Entry
Set the following fields
Menu Item: os.Debian.10.5L
Description: Debian 10.5 Live
Parameters:
kernel tftp://${fog-ip}/debian/10.5L/vmlinuz
initrd tftp://${fog-ip}/debian/10.5L/initrd
imgargs vmlinuz boot=live components fetch=http://${fog-ip}/os/debian/10.5L/filesystem.squashfs
boot || goto MENU
Menu Show with: All Hosts - That’s it, just pxe boot your target system and pick
Debian 10.5 Live
from the FOG iPXE boot menu.
-
Acronis 2018 (WinPE)
- First we’ll create the required directories:
mkdir -p /tftpboot/os/acronis18
- Now we’ll mount the Acronis 2018 WinPE ISO over the loop directory. Then we’ll copy the contents of the DVD to the directory we built above.
mount -o loop /{full path where you have the iso stored}/acronis2018pe.iso /mnt/loop cp /mnt/loop/boot/BCD /tftpboot/os/acronis18/ cp /mnt/loop/boot/boot.sdi /tftpboot/os/acronis18/ cp /mnt/loop/sources/boot.wim /tftpboot/os/acronis18/ umount /mnt/loop
- Download and install the latest wimboot kernel and extract it from the zip file.
cd /tmp wget http://git.ipxe.org/releases/wimboot/wimboot-latest.zip unzip wimboot-latest.zip
- Copy the wimboot file from the archive directory to root of the /tftpboot directory (we’ll need this for every windows boot media, so we’ll place it in a common spot).
cp ./wimboot-2.6.0-signed/wimboot /tftpboot
- The last bit of magic we need to do is setup a new FOG iPXE boot menu entry for this Acronis 2018 WinPE Image.
- In the fog WebGUI go to FOG Configuration->iPXE New Menu Entry
Set the following fields
Menu Item: os.Acronis2018PE
Description: Acronis 2018 WinPE
Parameters:
set tftp-path tftp://${fog-ip}
set pe-path ${tftp-path}/os/acronis18
kernel ${tftp-path}/wimboot gui
imgfetch --name BCD ${pe-path}/BCD BCD
imgfetch --name boot.sdi ${pe-path}/boot.sdi boot.sdi
imgfetch --name boot.wim ${pe-path}/boot.wim boot.wim
boot || goto MENU - That’s it, just pxe boot your target system and pick Acronis 2018 WinPE from the FOG iPXE boot menu.
-
XenServer 8.2 Installer
- Create the target directory on the FOG server
mkdir -p /tftpboot/EFI/xenserver
- From the XenServer installer iso the following files and place them in the
/tftpboot/EFI/xenserver
directory
grubx64.efi install.img vmlinuz xen.gz - Create the
grub.cfg
configuration file in the/tftpboot/EFI/xenserver
and insert this text into the grub.cfg file.
menuentry "XenServer Install (serial)" { multiboot2 /EFI/xenserver/xen.gz dom0_mem=1024M,max:1024M watchdog dom0_max_vcpus=4 com1=115200,8n1 console=com1,vga module2 /EFI/xenserver/vmlinuz console=hvc0 module2 /EFI/xenserver/install.img }
- Create a new FOG iPXE menu entry using the FOG Web ui FOG Configuration -> New iPXE Menu. Fill out the form using this data
Menu Item: os.xen.install
Description: XEN 8.2 Installer
Parameters:
chain tftp://${fog-ip}/EFI/xenserver/grubx64.efi || goto MENU
Menu Show with: All Hosts - That’s it, just pxe boot your target system and pick
XEN 8.2 Installer
from the FOG iPXE boot menu.
ref: https://support.citrix.com/article/CTX217680
ref: https://forums.fogproject.org/topic/14970/uefi-boot-install-of-xenserver-close-but-no-cigar -
Hiren’s BootCD PE x64 (v1.0.1)
Configuration currently works for UEFI only. It appears the wim file is missing bootmgr.exe for the BIOS booting systems
Be aware that your target computer will need at least 4GB of ram to deploy this image. The boot.wim file is 1.3GB in size. So you need 1.3GB of RAM just for the disk image, and then additional RAM to run the OS once its booted
- First we’ll create the required directories:
mkdir -p /tftpboot/os/Hiren101
- Now we’ll mount the WinPE iso over the loop directory. Then we’ll copy the contents of the DVD to the directory we built above.
mount -o loop /{full path where you have the iso stored}/HBCD_PE_x64.iso /mnt/loop cp /mnt/loop/BOOTMGR /tftpboot/os/Hiren101 cp /mnt/loop/boot/bcd /tftpboot/os/Hiren101 cp /mnt/loop/boot/boot.sdi /tftpboot/os/Hiren101 cp /mnt/loop/sources/boot.wim /tftpboot/os/Hiren101 umount /mnt/loop
- Download and install the latest wimboot kernel and extract it from the zip file.
10-Aug-21: There has been changes to the Hiren's wim file since this tutorial was created. To get Hiren's to properly boot you need to use winboot version **2.7.3** or later found here:
https://github.com/ipxe/wimboot/blob/master/wimboot
The issue was discussed in this post: https://forums.fogproject.org/post/144293
cd /tmp wget http://git.ipxe.org/releases/wimboot/wimboot-latest.zip unzip wimboot-latest.zip
- Copy the wimboot file from the archive directory to root of the os directory (we’ll need this for every windows boot media, so we’ll place it in a common spot).
cp ./wimboot-2.6.0-signed/wimboot /tftpboot/os
- The last bit of magic we need to do is setup a new FOG iPXE boot menu entry for this OS.
- In the fog WebGUI go to FOG Configuration->iPXE New Menu Entry
Set the following fields
Menu Item: os.Hiren101
Description: Hirens BootCD PE x64 (v1.0.1)
Parameters:
set tftp-path tftp://${fog-ip}/os
set pe-path ${tftp-path}/Hiren101
kernel ${tftp-path}/wimboot gui
imgfetch --name BCD ${pe-path}/bcd BCD
imgfetch --name boot.sdi ${pe-path}/boot.sdi boot.sdi
imgfetch --name bootmgr ${pe-path}/BOOTMGR bootmgr
imgfetch --name boot.wim ${pe-path}/boot.wim boot.wim
boot || goto MENU
@mikr said that this parameter block worked with Hiren BootCD 1.0.2 in uefi mode ref: https://forums.fogproject.org/post/146996 Well done!
set tftp-path tftp://${fog-ip} set http-path http://${fog-ip}/images/tools/hbcd102 kernel ${tftp-path}/win/wimboot gui imgfetch --name bootmgr.exe ${http-path}/bootmgr.exe bootmgr.exe imgfetch --name bootx64.efi ${http-path}/efi/boot/bootx64.efi bootx64.efi imgfetch --name BCD ${http-path}/boot/bcd BCD imgfetch --name boot.sdi ${http-path}/boot/boot.sdi boot.sdi imgfetch --name boot.wim ${http-path}/sources/boot.wim boot.wim boot || goto MENU
- That’s it, just pxe boot your target system and pick ** BootCD PE x64 (v1.0.1)** from the FOG iPXE boot menu.
References: None
-
Debian 10.7 Standard -Live
- First we’ll create the required directories:
mkdir -p /images/os/debian/10.7L mkdir -p /tftpboot/debian/10.7L # for FOG Server with Redhat based OS mkdir -p /var/www/html/os/debian/10.7L # for FOG Server with Debian based OS mkdir -p /var/www/os/debian/10.7L
- Now we’ll mount the Debian live DVD over the loop directory. Then we’ll copy the contents of the DVD to the directory we built above.
I need to explain something here. The iso below is the "standard" version which is the debian console version. If you want to live boot into the debian XWindows interface you will need to download the ISO that contains your desired XWindows manager like Mate, XFCE, KDE, Gnome, etc The instructions are the same for all ISO, just the size if the initrd and squashfs will change
mount -o loop -t iso9660 /{full path where you have the iso stored}/debian-live-10.7.0-amd64-standard.iso /mnt/loop cp -R /mnt/loop/* /images/os/debian/10.7L umount /mnt/loop
- Finally we’ll copy the pxe boot kernel and intfs to the tftpboot directory.
cp /images/os/debian/10.7L/live/vmlinuz-4.19.0-13-amd64 /tftpboot/debian/10.7L/vmlinuz cp /images/os/debian/10.7L/live/initrd.img-4.19.0-13-amd64 /tftpboot/debian/10.7L/initrd # for FOG Server with RedHat based OS cp /images/os/debian/10.7L/live/filesystem.squashfs /var/www/html/os/debian/10.7L # for FOG Server with Debian based OS cp /images/os/debian/10.7L/live/filesystem.squashfs /var/www/os/debian/10.7L
- The last bit of magic we need to do is setup a new FOG iPXE boot menu entry for this OS.
- In the fog WebGUI go to FOG Configuration->iPXE New Menu Entry
Set the following fields
Menu Item: os.Debian.10.7L
Description: Debian 10.7 Live
Parameters:
kernel tftp://${fog-ip}/debian/10.7L/vmlinuz
initrd tftp://${fog-ip}/debian/10.7L/initrd
imgargs vmlinuz initrd=initrd boot=live components fetch=http://${fog-ip}/os/debian/10.7L/filesystem.squashfs
boot || goto MENU
Menu Show with: All Hosts - That’s it, just pxe boot your target system and pick
Debian 10.7 Live
from the FOG iPXE boot menu.