From c53f997c9c80d9d6f64e59475c0c71885801bbcd Mon Sep 17 00:00:00 2001 From: iRaven4522 Date: Wed, 1 May 2024 02:49:51 -0500 Subject: [PATCH] inital commit --- boot.ipxe | 27 ++++++++++++++ boot.ipxe.cfg | 23 ++++++++++++ menu.ipxe | 97 +++++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 147 insertions(+) create mode 100644 boot.ipxe create mode 100644 boot.ipxe.cfg create mode 100644 menu.ipxe diff --git a/boot.ipxe b/boot.ipxe new file mode 100644 index 0000000..0db4b4d --- /dev/null +++ b/boot.ipxe @@ -0,0 +1,27 @@ +#!ipxe + +# Technolog Deployment Services Boot Script Loader + +echo Starting Technolog Deployment Services... + +# Global variables used by all other iPXE scripts +chain --autofree boot.ipxe.cfg || + +# if hostname DHCP variable is set and script is present +isset ${hostname} && chain --replace --autofree ${http-path}hostname-${hostname}.ipxe || + +# if SMBIOS UUID variable is set and script is present +isset ${uuid} && chain --replace --autofree ${http-path}uuid-${uuid}.ipxe || + +# Boot //mac-010203040506.ipxe if script is present +chain --replace --autofree ${http-path}mac-${mac:hexraw}.ipxe || + +# Boot //pci-8086100e.ipxe if one type of +# PCI Intel adapter is present and script is present +chain --replace --autofree ${http-path}pci-${pci/${busloc}.0.2}${pci/${busloc}.2.2}.ipxe || + +# if one type of PCI Intel adapter is present and script is present +chain --replace --autofree ${http-path}chip-${chip}.ipxe || + +# Boot /menu.ipxe script if all other options have been exhausted +chain --replace --autofree ${http-path}menu.ipxe || \ No newline at end of file diff --git a/boot.ipxe.cfg b/boot.ipxe.cfg new file mode 100644 index 0000000..7f7bbf1 --- /dev/null +++ b/boot.ipxe.cfg @@ -0,0 +1,23 @@ +#!ipxe + +# Technolog Deployment Vars/Config + +### Core Config ### + +# Deployment Server IP (TFTP, HTTP must be run on here) +# set deploysvr x.x.x.x +set deploysvr 10.10.0.6 + +# TFTP Server Path +# This script will check if the PC is x64 or x86 and set path accordingly. +cpuid --ext 29 && set arch x64 || set arch x86 +cpuid --ext 29 && set archl amd64 || set archl i386 +set tftp-path tftp://${deploysvr}/Boot\${arch} +set tftp-path-efi tftp://${deploysvr}/Boot\${arch}uefi + +# HTTP Server Path +set http-path http://${deploysvr}/ + +# Platform +# BIOS or UEFI, that is the question. +# This is stupid - "platform" exists. Using that. diff --git a/menu.ipxe b/menu.ipxe new file mode 100644 index 0000000..a8533de --- /dev/null +++ b/menu.ipxe @@ -0,0 +1,97 @@ +#!ipxe + +# Round up our variables and display on the screen from boot.ipxe.cfg +echo Manufacturer: ${manufacturer} +echo Platform: ${platform} +echo Deployment Server: ${deploysvr} +echo TFTP URL: ${tftp-path} +echo HTTP URL: ${http-path} + +# console --picture http://${deploysvr}/background.bmp --bottom 90 + +:mainmenu +menu Technolog iPXE Menu + +item --default exit Boot From Local Hard Disk/Continue BIOS Boot +item --gap Main Menu +item wds Windows Deployment Services +item wdsefi Windows Deployment Services EFI +item osmenu Operating Systems +item utilmenu System Tools and Utilities +# item kbe59 081722 Test [Default x64] + +choose --default exit --timeout 600000 target && goto ${target} + +:exit +exit + +:shell +shell + +:wds +if ${platform} = pcbios { + kernel ${tftp-path}\pxeboot.0 +} elsif ${platform} = efi { + # kernel ${tftp-path-efi}\wdsmgfw.efi + chain --replace --autofree ${tftp-path}\wdsmgfw.efi +} +boot + +:wdsefi +chain --replace --autofree ${tftp-path}\wdsmgfw.efi +boot + +:osmenu +# Operating Systems Menu +menu Operating Systems Menu +item --gap Operating Systems Menu +item mainmenu <--- Back +item debinst12 Debian 12 Installer +item debinst11 Debian 11 Installer +item fedoralatest Fedora Installer Latest (39) 64-bit +item arch64 Arch Linux x64 +# item deblive Debian Live System + + +choose --default debinst12 --timeout 600000 target && goto ${target} + +:debinst12 +kernel ${tftp-path}\debian\linux +initrd ${tftp-path}\debian\initrd.gz +boot + +:debinst11 +kernel ${tftp-path}\debian\11linux +initrd ${tftp-path}\debian\11initrd.gz +boot + +:deblive +kernel ${tftp-path}\debian\live-vmlinuz +initrd ${tftp-path}\debian\live-initrd.img +boot + +:fedoralatest +kernel ${tftp-path}\fedora\39vmlinuz initrd=39initrd.img inst.stage2=https://download.fedoraproject.org/pub/fedora/linux/releases/39/Server/x86_64/os/ +initrd ${tftp-path}\fedora\39initrd.img +boot + +:arch64 +kernel ${tftp-path}\arch\x86_64\vmlinuz-linux archisobasedir=arch archiso_http_srv=${http-path}/isosrc/arch/ cms_verify=y +initrd ${tftp-path}\arch\intel-ucode.img +initrd ${tftp-path}\arch\amd-ucode.img +initrd ${tftp-path}\arch\x86_64\initramfs-linux.img +boot + +### Utilities +:utilmenu +menu System Tools and Utilities +item --gap System Tools and Utilities +item mainmenu <--- Back +item gparted gParted Live Debian Image + +choose --default gparted --timeout 600000 target && goto ${target} + +:gparted +kernel ${tftp-path}\gparted\vmlinuz boot=live config components union=overlay username=technolog noswap noeject fetch=${http-path}/isosrc/gparted.squashfs +initrd ${tftp-path}\gparted\initrd.img +boot \ No newline at end of file