Using FOG to PXE boot into your favorite installer images

  • Moderator

    Setting up the foundation for installation

    Hopefully this setup will be pretty clean and easy (just hoping…)

    In this tutorial, I’ve personally setup each distribution and booted it into a virtual machine. I didn’t run the installer to completion, but I did ensure the installer was running as far as I took the install (unless otherwise noted).

    These setups were only tested with a bios (legacy mode) target computer. They WILL NOT work with uefi systems. For uefi based systems they have their own kernel requirements and options. The intent of this tutorial was to show its possible to boot your installation media via pxe booting.

    First we need to setup the storage locations for our boot images. The plan is to put the installation media on the /images nfs share and the boot kernel and initfs in the tftp boot directory.

    mkdir /images/os
    mkdir /tftpboot/os
    mkdir /mnt/loop
    

    For the foundation setup that should do it. On to the OS specific configuration…

    Link to Windows 7 & Windows 10 BIOS Mode Only
    Link WinPE 10 for BIOS and UEFI based systems
    Link to Centos 7
    Link to Ubuntu 16.04.03
    Link to Ubuntu Desktop 19.10
    Link to Ubuntu Server 19.10
    Link to Ubuntu 17.10 Desktop
    Link to Ubuntu 16.04.03
    Link to Linux Mint 18.1
    Link to Linux Mint 19.1 Cinnamon
    Link to Debian 9.2
    Link to OpenSuSE Leap 42.3
    Link to Fedora Workstation v26
    Link to Fedora Workstation v27
    Link to Ubuntu Desktop 17.10
    Link to installing Samba on your FOG server
    Link to Kali Live 2017.3
    Link to ESXi v6.5u1
    Link to ESXi v6.7u2
    Link to SystemRescueCd 5.2.2 x64
    Link to GParted 0.33.0 x86
    Veeam Agent Rescue DVD
    Acronis 2018 (WinPE version)

  • Moderator

    Platform Specific Bootable ISO, PER620

    There is a bug in the kernel parameters. I'm suspecting the root= value is incorrect. I'm getting an error when the rpms are trying to update

    1. First we’ll create the required directories:
    mkdir -p /images/os/dell/pfs620
    mkdir -p /tftpboot/os/dell/pfs620
    
    1. Now we’ll mount the Dell Bootable 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}/PER620_BOOTABLE_21.04.00.184.iso /mnt/loop
    
    cp -R /mnt/loop/* /images/os/dell/pfs620
    umount /mnt/loop
    
    1. Finally we’ll copy the pxe boot kernel and intfs to the tftpboot directory.
    cp /images/os/dell/pfs620/isolinux/SA.1 /tftpboot/os/dell/pfs620
    cp /images/os/dell/pfs620/isolinux/SA.2 /tftpboot/os/dell/pfs620
    
    
    1. The last bit of magic we need to do is setup a new FOG iPXE boot menu entry for this OS.
    2. In the fog WebGUI go to FOG Configuration->iPXE New Menu Entry
      Set the following fields
      Menu Item: os.platformR620
      Description: Platform Specific Firmware R620
      Parameters:
      kernel tftp://${fog-ip}/os/dell/pfs620/SA.1
      initrd tftp://${fog-ip}/os/dell/psf620/SA.2
      imgargs SA.1 initrd=SA.2 root=live:http://${fog-ip}/dellsquashfs.img rootfstype=auto rd.live.image rd.writable.fsimg rw DEBUG=0 share_type=nfs share_location=${fog-ip}:/images/os/dell/pfs620 share_opts=nolock loglevel=7 BUILD=0 selinux=0 edd=off rd.md=0 rd.dm=0 quiet – share_script=drm_files/apply_bundles.sh
      boot || goto MENU
      Menu Show with: All Hosts
    3. That’s it, just pxe boot your target system and pick Platform Specific Firmware R620 from the FOG iPXE boot menu.

    References:
    https://www.dell.com/support/home/en-us/drivers/driversdetails?driverId=FRMMC&oscode=naa&productcode=poweredge-R620

  • Moderator

    Bitdefender Rescue CD 31.01.2011

    1. First we’ll create the required directory:
    mkdir -p /tftpboot/os/bitdefender
    
    1. Now we’ll mount the Bitdefender Rescue CD installer over the loop directory. Then we’ll copy the required files to the directory we built above. Note: when I downloaded the iso from the bitdefender web site the file came down as file with no extension. I tacked on .iso then I was able to mount it with my linux mint desktop. I rename the entire file name to BitdefenderRescue.iso for this tutorial.
    mount -o loop -t iso9660 /{full path where you have the iso stored}/BitdefenderRescue.iso /mnt/loop
    
    cp -R /mnt/loop/casper/vmlinuz /images/os/bitdefender
    cp -R /mnt/loop/casper/initrd.gz /images/os/bitdefender
    umount /mnt/loop
    
    1. The last bit of magic we need to do is setup a new FOG iPXE boot menu entry for this OS.
    2. In the fog WebGUI go to FOG Configuration->iPXE New Menu Entry
      Set the following fields
      Menu Item: os.BitdefenderRescue
      Description: BitdefenderRescue v31.01.2011
      Parameters:
      kernel tftp://${fog-ip}/os/bitdefender/vmlinuz
      initrd tftp://${fog-ip}/os/bitdefender/initrd.gz
      imgargs vmlinuz initrd=initrd.gz file=file=/cdrom/preseed/ubuntu.seed boot=casper splash vga=791 lang=us
      boot || goto MENU
      Menu Show with: All Hosts
    3. That’s it, just pxe boot your target system and pick BitdefenderRescue v31.01.2011 from the FOG iPXE boot menu.

    I'm going to suspect this will not work because of the reference of the ubuntu.seed file. The image args are saying to look on the cdrom for that file, but since we are pxe booting from memory it won't find that file on the dvd/cvd. I'm sure it can be worked out. It will just take some debugging
    References:

  • Moderator

    Windows 10 BIOS/UEFI 2021 edition
    17-Mar-21 this post is currently being edited, so its not complete

    1. First we’ll create the required directories. In this tutorial we will use a windows server/workstation to host the installer files. This is the easiest solution, but if your goal is to only use the FOG server follow the instructions at the end of this thread for SAMBA install instructions. On your file server copy the content of the Windows installation DVD to a folder on your file server. Be sure to set the permission so that everyone has read only access to that directory. Now share that directory. For this tutorial the Windows file server will be called \fileserv01 with the share name of \win10$

    2. In this next step you will need a valid user ID. It can be a domain level or machine level. Create this user id and password. For this tutorial we will create a domain account called consento\user01

    3. Beyond this point you will need a Windows 10 1909 (or later) workstation. You also need to be aware what version of windows 10 you intend to deploy. You need to download the proper version of Windows ADK for the version of Windows 10 you will execute these instructions against.

    4. Download the appropriate ADK for the version of Win10 you have from here: https://developer.microsoft.com/en-us/windows/hardware/windows-assessment-deployment-kit You will need both downloads “Windows ADK for Windows 10” and “Windows PE add-on for the ADK”.

    5. Launch the ADK installer. You will be presented with about 15 different modules to install. You only “need” the Deployment Tools feature from the “Windows ADK for Windows 10”. Now run the “Windows PE add-on for the ADK” installer . From this installer you will need (the only option) Windows Preinstallation Environment (Windows PE).

    6. It might take as long as 20 minutes to install both packages depending on your network connection and target computer.

    7. While this step is not necessary it is also a bit of an assurance that WinPE10 will have a good install of basic drivers needed to boot current hardware.

    8. Download the WinPE10 drivers from the Dell Enterprise site here: https://www.dell.com/support/kbdoc/en-us/000180533/dell-command-deploy-driver-packs As always download the latest WinPE Cab pack. At the time of this writing it was A23.

    9. I realize that you may not be using a Dell for your imaging, don’t worry these drivers only cover network and disk subsystems.

    10. Extract the winpe folder from the cab file and copy it in the winpe folder in the root of C drive (c:\winpe).

    11. After the install launch the ADK environment from Start Button->Windows Kits->Windows ADK->Deployment and Imaging Tools Environment Make sure you run this command window as Administrator. FYI: you’ll need admin rights to use DISM.

    12. In the Deployment and Imaging Tools Environment command window you just opened you will need to execute the following commands.

    13. For the rest of the instructions we’ll just go copy and paste. Its fast and quick.

    cd c:\
    copype amd64 C:\WinPE_amd64
    
    Dism /Mount-Image /ImageFile:"C:\WinPE_amd64\media\sources\boot.wim" /index:1 /MountDir:"C:\WinPE_amd64\mount"
    
    Dism /Add-Driver /Image:"C:\WinPE_amd64\mount" /Driver:"c:\winpe\x64" /Recurse /ForceUnsigned
    
    1. Now we need to edit the WinPE startup file to have it mount our windows (samba) network share.
    notepad C:\WinPE_amd64\mount\Windows\System32\Startnet.cmd
     @echo off
      echo Setting up WinPE
      wpeinit
    
      REM Set power configuration to Performance
      powercfg /s 8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c
    
      echo Connecting to the remote share
      net use z: \\<server_name>\<share_name> /user:<domain\uid> <pass>
      z:
      setup.exe
    

    I stopped here editing this document
    15. Now that we have the settings the way we need them. Lets close the wim file and create our ISO.

    Dism /Unmount-Image /MountDir:"C:\WinPE_amd64\mount" /commit
    
    MakeWinPEMedia /ISO C:\WinPE_amd64 C:\WinPE_amd64\WinPE_amd64.iso
    
    1. Now move the C:\WinPE_amd64\WinPE_amd64.iso file to the FOG server in the /images/os/mswindows/7Pro-x64 directory.

    2. The last bit of magic we need to do is setup a new FOG iPXE boot menu entry for this OS.

    3. NOTE: This instruction is for legacy bios only. If you need to boot both uefi and bios installs follow the WinPE10 section above. The issue is that memdisk utility is not supported in uefi mode, so another method is required. For bios mode memdisk IS the quickest method to boot a small iso image. https://forums.fogproject.org/topic/10944/using-fog-to-pxe-boot-into-your-favorite-installer-images/10
      In the fog WebGUI go to FOG Configuration->iPXE New Menu Entry
      Set the following fields
      Menu Item: os.Win7Pro-x64
      Description: Windows 7 Pro x64 OEM
      Parameters:
      initrd nfs://${fog-ip}:/images/os/mswindows/7Pro-x64/WinPE_amd64.iso
      chain memdisk iso raw
      boot || goto MENU
      Menu Show with: All Hosts

    4. That’s it, just pxe boot your target system and pick Windows 7 Pro x64 OEM from the FOG iPXE boot menu.

    For this process to function you must also setup SAMBA on your fog server below.

    References:
    https://forums.fogproject.org/topic/7765/pxe-booting-into-ms-windows-7-setup


  • This post is deleted!
  • Moderator

    Debian 10.7 Standard

    1. First we’ll create the required directories:
    mkdir -p /images/os/debian/Server10.7
    mkdir -p /tftpboot/os/debian/Server10.7
    
    1. Now we’ll mount the Debian Server 10.7 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}/debian-10.7.0-amd64-DVD-1.iso /mnt/loop
    
    cp -R /mnt/loop/* /images/os/debian/Server10.7
    umount /mnt/loop
    
    1. Finally we’ll copy the pxe boot kernel and intfs to the tftpboot directory. We’ll need to download the netboot version from here: https://deb.debian.org/debian/dists/buster/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 https://deb.debian.org/debian/dists/buster/main/installer-amd64/current/images/netboot/netboot.tar.gz
    tar -zxf netboot.tar.gz
    cp ./debian-installer/amd64/linux /tftpboot/os/debian/Server10.7
    cp ./debian-installer/amd64/initrd.gz /tftpboot/os/debian/Server10.7
    
    1. The last bit of magic we need to do is setup a new FOG iPXE boot menu entry for this OS.
    2. In the fog WebGUI go to FOG Configuration->iPXE New Menu Entry
      Set the following fields
      Menu Item: os.Debian.Server.10.7
      Description: Debian Server 10.7
      Parameters:
      kernel tftp://${fog-ip}/os/debian/Server10.7/linux
      initrd tftp://${fog-ip}/os/debian/Server10.7/initrd.gz
      imgargs linux initrd=initrd.gz root=/dev/nfs boot=casper netboot=nfs nfsroot=${fog-ip}:/images/os/debian/Server10.7/ locale=en_US.UTF-8 keyboard-configuration/layoutcode=us quiet splash ip=dhcp rw
      boot || goto MENU
      Menu Show with: All Hosts
    3. That’s it, just pxe boot your target system and pick Debian Server 10.7 from the FOG iPXE boot menu.

    References:

  • Moderator

    Debian 10.7 Standard -Live

    1. 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
    
    1. 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
    
    1. 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
    
    1. The last bit of magic we need to do is setup a new FOG iPXE boot menu entry for this OS.
    2. 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
    3. That’s it, just pxe boot your target system and pick Debian 10.7 Live from the FOG iPXE boot menu.
  • Moderator

    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

    1. First we’ll create the required directories:
    mkdir -p /tftpboot/os/Hiren101
    
    1. 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
    
    1. 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
    
    1. 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
    
    1. The last bit of magic we need to do is setup a new FOG iPXE boot menu entry for this OS.
    2. 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
    3. That’s it, just pxe boot your target system and pick Hiren’s BootCD PE x64 (v1.0.1) from the FOG iPXE boot menu.

    References: None

  • Moderator

    XenServer 8.2 Installer

    1. Create the target directory on the FOG server
    mkdir -p /tftpboot/EFI/xenserver
    
    
    1. From the XenServer installer iso the following files and place them in the /tftpboot/EFI/xenserver directory
      grubx64.efi install.img vmlinuz xen.gz
    2. 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
    } 
    
    1. 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
    2. 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

  • Moderator

    Acronis 2018 (WinPE)

    1. First we’ll create the required directories:
    mkdir -p /tftpboot/os/acronis18
    
    1. 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
    
    1. 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
    
    1. 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
    
    1. The last bit of magic we need to do is setup a new FOG iPXE boot menu entry for this Acronis 2018 WinPE Image.
    2. 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
    3. That’s it, just pxe boot your target system and pick Acronis 2018 WinPE from the FOG iPXE boot menu.
  • Moderator

    Debian 10.5 Standard-Live

    1. 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
    
    1. 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
    
    1. 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
    
    1. The last bit of magic we need to do is setup a new FOG iPXE boot menu entry for this OS.
    2. 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
    3. That’s it, just pxe boot your target system and pick Debian 10.5 Live from the FOG iPXE boot menu.
  • Moderator

    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-autoinstall

    Also 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

  • Moderator

    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.

    1. First we’ll create the required directories:
    mkdir -p /images/os/ubuntu/Server19.10
    mkdir -p /tftpboot/os/ubuntu/Server19.10
    
    1. 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
    
    1. 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
    
    1. The last bit of magic we need to do is setup a new FOG iPXE boot menu entry for this OS.
    2. 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
    3. That’s it, just pxe boot your target system and pick Ubuntu Server 19.10 from the FOG iPXE boot menu.

    References:

  • Moderator

    Veeam Agent Rescue DVD

    1. First we’ll create the required directories:
    mkdir -p /tftpboot/os/veeam
    
    1. 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
    
    1. 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
    
    1. 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
    
    1. The last bit of magic we need to do is setup a new FOG iPXE boot menu entry for this Veeam Recover Image.
    2. 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
    3. 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.

    1. First we’ll create the required directories:
    mkdir -p /var/www/html/os/veeam
    
    1. 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
    
    1. 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
    
    1. 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
    
    1. The last bit of magic we need to do is setup a new FOG iPXE boot menu entry for this Veeam Recover Image.
    2. 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
    3. That’s it, just pxe boot your target system and pick Veeam Agent 4 (http) from the FOG iPXE boot menu.
  • Moderator

    Ubuntu 1910 Desktop

    1. First we’ll create the required directories:
    mkdir -p /images/os/ubuntu/Desk19.10
    mkdir -p /tftpboot/os/ubuntu/Desk19.10
    
    1. 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
    
    1. 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
    
    1. The last bit of magic we need to do is setup a new FOG iPXE boot menu entry for this OS.
    2. 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
    3. That’s it, just pxe boot your target system and pick Ubuntu Desktop 19.10 from the FOG iPXE boot menu.

    References:

  • Moderator

    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.

    1. First we’ll create the required directories:
    mkdir -p /images/os/esxi/6.7u2
    
    1. 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
    
    1. 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 the title 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
    
    1. The last bit of magic we need to do is setup a new FOG iPXE boot menu entry for this OS.
    2. 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
    3. 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)

  • Moderator

    GParted 0.33.0 x86

    1. First we’ll create the required directories:
    mkdir -p /tftpboot/gparted
    mkdir -p /tmp/gparted
    
    1. Download the gparted zip file from sourceforge site and save it to the /tmp/gparted directory
    2. 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
    
    1. 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 pick GParted 0.33.0 from the FOG iPXE boot menu.

    References:
    https://gparted.org/livepxe.php

  • Moderator

    Linux Mint 19.1 Cinnamon

    1. First we’ll create the required directories:
    mkdir -p /images/os/mint/19.1
    mkdir -p /tftpboot/mint/19.1
    
    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
    
    1. 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
    
    1. The last bit of magic we need to do is setup a new FOG iPXE boot menu entry for this OS.
    2. 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
    3. That’s it, just pxe boot your target system and pick Linux Mint 19.1 from the FOG iPXE boot menu.
  • Moderator

    SystemRescueCd 5.2.2 x64

    1. First we’ll create the required directories:
    mkdir -p /tftpboot/os/RescueCd/5.2.2
    
    1. 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
    
    1. The last bit of magic we need to do is setup a new FOG iPXE boot menu entry for this OS.
    2. 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
    3. That’s it, just pxe boot your target system and pick SystemRescueCd 5.2.2 from the FOG iPXE boot menu.

    References:
    None

  • Moderator

    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.

    1. First we’ll create the required directories:
    mkdir -p /images/os/esxi/6.5u1
    
    1. 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
    
    1. 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 the title 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
    
    1. The last bit of magic we need to do is setup a new FOG iPXE boot menu entry for this OS.
    2. 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
    3. 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

343
Online

9.0k
Users

15.6k
Topics

145.0k
Posts