#!ipxe # ipxe may fail fetching some files (especially wrt archlinux) from https # make sure to build ipxe with https and optionally with FTP as well # to do so, edit your ipxe's src/config/general.h and modify the line # DOWNLOAD_PROTO_HTTPS from undef to define # do similarily for the line with FTP protocol if necessary # :selection menu iPXE boot menu item slax32 Boot Slax 32-bit item slax64 Boot Slax 64-bit item debian64 Boot debian 64bit installer item debian Boot debian 32bit installer item debian64gui Boot debian 64bit installer [gtk] item debiangui Boot debian 32bit installer [gtk] item mageia64 Boot mageia 64bit installer item mageia Boot mageia 32bit installer item opensuset64 Boot opensuse 64bit installer (tumbleweed) item opensuset Boot opensuse 32bit installer (tumbleweed) item opensusef64 Boot opensuse Factory 64bit installer item opensusef32 Boot opensuse Factory 32bit installer item opensusesr Boot opensuse Slowroll item opensuseleapcurrent Boot opensuse Leap installer current item plop Boot plop boot manager item tinycore Boot tinycore linux item tinycore64 Boot tinycore linux [64bit kernel only] item tinycore64pure Boot tinycore linux [fully 64bit version, pure64] item dcore-wheezy Boot dCore (debian wheezy version) item dcore-jessie Boot dCore (debian jessie version) item dcore-stretch Boot dCore (debian stretch) item dcore-trusty Boot dCore (ubuntu trusty version, 14.04) item dcore-xenial Boot dCore (ubuntu xenial version, 16.04) item dcore-bionic Boot dCore (ubuntu bionic version, 18.04) item dcore-bionic64 Boot dCore (64bit, ubuntu bionic 18.04) item dcore-buster64 Boot dCore (64bit, debian buster 10) item dcore-focal64 Boot dCore (64bit, ubuntu focal 20.04) item dcore-stretch64 Boot dCore (64bit, debian stretch 9) item arch Boot archlinux installer item archplain Boot archlinux installer [fallback] item archchain Boot archlinux pxe menu (test) item centos Boot CentOS installer item alma Boot AlmaLinux installer item scientific Boot Scientific Linux installer item fedora-mirror-workstation Boot Fedora installer Workstation edition [mirror] item fedora-mirror-server Boot Fedora installer Server edition [mirror] item fedora-mirror-silverblue Boot Fedora installer Silverblue edition [mirror] item fedora-mirror-everything Boot Fedora installer Everything edition [mirror] #item ubuntu Boot Ubuntu installer [32bit, eoan] #item ubuntu64 Boot Ubuntu installer [64bit, current] item slitaz Boot SliTaz item slitaz-rolling Boot SliTaz [rolling] item slitaz64 Boot SliTaz64 item alpine64 Boot Alpine Linux 64 [vanilla] item alpine64virt Boot Alpine Linux 64 [virt] item alpine32 Boot Alpine Linux 32 [vanilla] item alpine32virt Boot Alpine Linux 32 [virt] item fedora Chainload Fedora installer #item ubuntu-pxe Chainload Ubuntu pxelinux item localmenu Boot extra local menu item --key c config Configure iPXE item --key x exit Exit iPXE set menu-timeout 0 choose system || goto :selection goto ${system} :localmenu dhcp set localcredentials:string login:password@ set localweb:string 192.168.1.105 set localurl:string /pxeboot set localwebserver:string http://${localcredentials:string}${localweb:string}${localurl:string} chain ${localwebserver:string}/pxemenu # there are more archs to use, adjust as necessary :alpine64 dhcp set arch:string x86_64 set type:string lts goto alpine_generic_boot :alpine64virt dhcp set arch:string x86_64 set type:string virt goto alpine_generic_boot :alpine32 dhcp set arch:string x86 set type:string lts goto alpine_generic_boot :alpine32virt ahcp set arch:string x86 set type:string virt goto alpine_generic_boot :alpine_generic_boot set alpine_version:string 3.23 set baseurl:string http://dl-cdn.alpinelinux.org/alpine/v${alpine_version:string}/ #set imageurl:string ${baseurl:string}/releases/${arch:string}/netboot-${alpine_version:string}.0/ set imageurl:string ${baseurl:string}/releases/${arch:string}/netboot/ initrd ${imageurl:string}/initramfs-${type:string} kernel ${imageurl:string}/vmlinuz-${type:string} #boot vmlinuz-${type:string} alpine_repo=${baseurl:string}/main modloop=${baseurl:string}/releases/${arch:string}/netboot-${alpine_version:string}.0/modloop-${type:string} boot vmlinuz-${type:string} alpine_repo=${baseurl:string}/main modloop=${baseurl:string}/releases/${arch:string}/netboot/modloop-${type:string} :slax32 dhcp chain http://slax.org/ipxe/?arch=32bit :slax64 dhcp chain http://slax.org/ipxe/?arch=64bit :scientific dhcp set baseurl:string http://ftp.scientificlinux.org/linux/scientific/7/x86_64/os/ initrd ${baseurl:string}images/pxeboot/initrd.img chain ${baseurl:string}images/pxeboot/vmlinuz repo=${baseurl:string} :slitaz dhcp sanboot http://mirror.slitaz.org/iso/rolling/slitaz-rolling-core-5in1.iso :slitaz-rolling dhcp sanboot http://mirror.slitaz.org/iso/rolling/slitaz-rolling.iso :slitaz64 dhcp sanboot https://mirror.slitaz.org/iso/rolling/slitaz-rolling-core64.iso :fedora dhcp set 209:string cfg/pxelinux.cfg set 210:string http://dl.fedoraproject.org/pub/alt/bfo/ chain ${210:string}pxelinux.0 :fedora-mirror-server set fedora_version:string 43 set fedora_variant Server goto fedora-boot :fedora-mirror-workstation set fedora_version:string 43 set fedora_variant Server goto fedora-boot :fedora-mirror-everything set fedora_version:string 43 set fedora_variant Everything goto fedora-boot :fedora-mirror-silverblue set fedora_version:string 43 set fedora_variant Silverblue goto fedora-boot # pick your mirror :fedora-boot dhcp set baseurl:string http://ftp.icm.edu.pl/pub/Linux/fedora/linux/releases/${fedora_version:string}/${fedora_variant:string}/x86_64/os initrd ${baseurl:string}/images/pxeboot/initrd.img chain ${baseurl:string}/images/pxeboot/vmlinuz inst.repo=${baseurl:string} root=live:${baseurl:string}/images/install.img :centos dhcp set baseurl:string http://mirror.centos.org/centos/7/os/x86_64/ initrd ${baseurl:string}isolinux/initrd.img chain ${baseurl:string}isolinux/vmlinuz repo=${baseurl:string} :alma dhcp set baseurl:string http://mirror.netzwerge.de/almalinux/9/BaseOS/x86_64/os/ initrd ${baseurl:string}images/pxeboot/initrd.img chain ${baseurl:string}images/pxeboot/vmlinuz repo=${baseurl:string} #:ubuntu-pxe #dhcp #set 210:string http://archive.ubuntu.com/ubuntu/dists/groovy/main/installer-amd64/current/images/netboot/ #set 209:string http://archive.ubuntu.com/ubuntu/dists/groovy/main/installer-amd64/current/images/netboot/pxelinux.cfg/default #chain ${210:string}pxelinux.0 # #:ubuntu # # dhcp # set 210:string http://archive.ubuntu.com/ubuntu/dists/eoan/main/installer-i386/current/images/netboot/ubuntu-installer/i386/ # initrd ${210:string}initrd.gz # chain ${210:string}linux # #:ubuntu64 # # dhcp # set 210:string http://archive.ubuntu.com/ubuntu/dists/groovy/main/installer-amd64/current/legacy-images/netboot/ubuntu-installer/amd64/ # initrd ${210:string}initrd.gz # chain ${210:string}linux # # debian, replace links with your favorite mirror # :debian64 dhcp set 210:string http://ftp.pl.debian.org/debian/dists/stable/main/installer-amd64/current/images/netboot/debian-installer/amd64/ #chain ${210:string}pxelinux.0 initrd ${210:string}initrd.gz chain ${210:string}linux :debian dhcp set 210:string http://ftp.pl.debian.org/debian/dists/stable/main/installer-i386/current/images/netboot/debian-installer/i386/ # chain ${210:string}pxelinux.0 initrd ${210:string}initrd.gz chain ${210:string}linux :debian64gui dhcp set 210:string http://ftp.pl.debian.org/debian/dists/stable/main/installer-amd64/current/images/netboot/gtk/debian-installer/amd64/ # chain ${210:string}pxelinux.0 initrd ${210:string}initrd.gz chain ${210:string}linux :debiangui dhcp set 210:string http://ftp.pl.debian.org/debian/dists/stable/main/installer-i386/current/images/netboot/gtk/debian-installer/i386/ # chain ${210:string}pxelinux.0 initrd ${210:string}initrd.gz chain ${210:string}linux :mageia64 dhcp set baseurl:string http://ftp5.gwdg.de/pub/linux/mageia/distrib/cauldron/x86_64/isolinux/x86_64/ initrd ${baseurl:string}all.rdz imgfetch ${baseurl:string}vmlinuz boot vmlinuz || goto selection :mageia dhcp set baseurl:string http://ftp5.gwdg.de/pub/linux/mageia/distrib/cauldron/i586/isolinux/i386/ initrd ${baseurl:string}all.rdz imgfetch ${baseurl:string}vmlinuz boot vmlinuz || goto selection :opensusef64 dhcp set baseurl:string http://ftp.icm.edu.pl/pub/Linux/opensuse/factory set arch:string x86_64 goto opensuse-generic-boot :opensusef32 dhcp set baseurl:string http://ftp.icm.edu.pl/pub/Linux/opensuse/factory set arch:string i386 goto opensuse-generic-boot :opensuseleapcurrent dhcp set baseurl:string http://ftp.icm.edu.pl/pub/Linux/opensuse/distribution/leap/16.1 set arch:string x86_64 goto opensuse-generic-boot :opensuset dhcp # set baseurl:string http://download.opensuse.org/tumbleweed set baseurl:string http://ftp.icm.edu.pl/pub/Linux/opensuse/tumbleweed set arch:string i386 goto opensuse-generic-boot :opensuset64 dhcp #set baseurl:string http://download.opensuse.org/tumbleweed set baseurl:string http://ftp.icm.edu.pl/pub/Linux/opensuse/tumbleweed set arch:string x86_64 goto opensuse-generic-boot :opensusesr dhcp set baseurl:string http://ftp.icm.edu.pl/pub/Linux/opensuse/slowroll set arch:string x86_64 goto opensuse-generic-boot :opensuse-generic-boot initrd ${baseurl:string}/repo/oss/boot/${arch:string}/loader/initrd imgfetch ${baseurl:string}/repo/oss/boot/${arch:string}/loader/linux || goto selection boot linux Textmode=1 install=${baseurl:string}/repo/oss #console=ttyAMA0 console=ttyS0 # :plop dhcp imgfetch http://some_web_server/memdisk initrd http://some_web_server/plpbt.img chain memdisk || goto selection # for some reason direct boot of plop doesn't seem to work correctly # also, memdisk fails when the *.img file is packed with gzip # (which _really_ reduces size) :tinycore dhcp initrd http://repo.tinycorelinux.net/17.x/x86/release/distribution_files/core.gz initrd http://repo.tinycorelinux.net/17.x/x86/release/distribution_files/modules.gz imgfetch http://repo.tinycorelinux.net/17.x/x86/release/distribution_files/vmlinuz boot vmlinuz || goto selection # all other tinycore args still apply here # it's worth setting up a NFS share for your extensions + persistence in this mode # to make full use of tinycore's features # alternately you can load vmlinuz + rootfs.gz + modules.gz , for easier customization # if you use your custom server :tinycore64 dhcp initrd http://repo.tinycorelinux.net/17.x/x86/release/distribution_files/core.gz initrd http://repo.tinycorelinux.net/17.x/x86/release/distribution_files/modules64.gz imgfetch http://repo.tinycorelinux.net/17.x/x86/release/distribution_files/vmlinuz64 boot vmlinuz64 || goto selection :tinycore64pure dhcp initrd http://repo.tinycorelinux.net/17.x/x86_64/release/distribution_files/corepure64.gz imgfetch http://repo.tinycorelinux.net/17.x/x86_64/release/distribution_files/vmlinuz64 boot vmlinuz64 || goto selection :dcore-wheezy dhcp set codename:string wheezy set arch:string x86 goto dcore-boot :dcore-stretch dhcp set codename:string stretch set arch:string x86 goto dcore-boot :dcore-jessie dhcp set codename:string jessie set arch:string x86 goto dcore-boot :dcore-trusty dhcp set codename:string trusty set arch:string x86 goto dcore-boot :dcore-xenial dhcp set codename:string xenial set arch:string x86 goto dcore-boot :dcore-bionic dhcp set codename:string bionic set arch:string x86 goto dcore-boot :dcore-bionic64 dhcp set codename:string bionic64 set arch:string x86_64 goto dcore-boot :dcore-buster64 dhcp set codename:string buster64 set arch:string x86_64 goto dcore-boot :dcore-focal64 dhcp set codename:string focal64 set arch:string x86_64 goto dcore-boot :dcore-stretch64 dhcp set codename:string stretch64 set arch:string x86_64 goto dcore-boot :dcore-boot initrd http://tinycorelinux.net/dCore/${arch:string}/release/dCore-${codename:string}/dCore-${codename:string}.gz imgfetch http://tinycorelinux.net/dCore/${arch:string}/release/dCore-${codename:string}/vmlinuz-${codename:string} boot vmlinuz-${codename:string} || goto selection :arch dhcp # archlinux uses imgtrust enforcing in new ipxe setup and this is a bit of a hassle to setup in ipxe # instead just chainload their loader with necessary settings # imgfetch http://www.archlinux.org/releng/netboot/archlinux.ipxe # boot archlinux.ipxe imgfetch https://archlinux.org/static/netboot/ipxe-arch.5ee66f360339.pxe boot ipxe-arch.5ee66f360339.pxe :archchain dhcp chain https://ipxe.archlinux.org/releng/netboot/archlinux.ipxe || goto selection # arch linux config when above option fails # pick your own favorite mirror :archplain dhcp set baseurl:string https://ftp.icm.edu.pl/pub/Linux/dist/archlinux initrd ${baseurl:string}/iso/archboot/latest/boot/initramfs_x86_64.img imgfetch ${baseurl:string}/iso/archboot/latest/boot/vmlinuz_x86_64 boot vmlinuz_x86_64 initrd=initramfs_x86_64 ip=dhcp net.ifnames=0 archisobasedir=arch archiso_http_srv=${baseurl:string} || goto selection