瀏覽代碼

Initial commit

Antony Messerli 9 年之前
當前提交
da8e7fe0b3
共有 20 個文件被更改,包括 874 次插入0 次删除
  1. 21 0
      README.md
  2. 12 0
      boot/archlinux.ipxe
  3. 10 0
      boot/boot.cfg
  4. 40 0
      boot/bsd.ipxe
  5. 73 0
      boot/centos.ipxe
  6. 66 0
      boot/debian.ipxe
  7. 35 0
      boot/experimental.ipxe
  8. 71 0
      boot/fedora.ipxe
  9. 41 0
      boot/freebsd.ipxe
  10. 31 0
      boot/gentoo.ipxe
  11. 58 0
      boot/linux.ipxe
  12. 106 0
      boot/menu.ipxe
  13. 32 0
      boot/openbsd.ipxe
  14. 30 0
      boot/opensuse.ipxe
  15. 57 0
      boot/scientific.ipxe
  16. 23 0
      boot/tinycore.ipxe
  17. 59 0
      boot/ubuntu.ipxe
  18. 49 0
      boot/utils.ipxe
  19. 32 0
      ipxe/netboot.xyz-main
  20. 28 0
      ipxe/netboot.xyz-static

+ 21 - 0
README.md

@@ -0,0 +1,21 @@
+## netboot.xyz
+
+### What is netboot.xyz?
+
+netboot.xyz is a collection of iPXE scripts that allow you to rapidly network boot Operating Systems,
+Utilities and other tools very easily.  It allows you the flexibility of booting installations without
+having to go track down and download installation media.  It's especially useful for remote access
+environments when you don't want to utilize remote attach CD in a Dell DRAC, HP iLO or some other type
+of remote tool.
+
+Check out the new netboot.xyz documentation hosted at ReadTheDocs:	
+* [http://netbootxyz.readthedocs.org/en/latest/](http://netbootxyz.readthedocs.org/en/latest/)
+
+Grab these bootloaders and drop them in Fusion/VirtualBox/DRAC/iLO to get started:
+
+* [ISO](http://netboot.xyz/ipxe/netboot.xyz-main.iso)
+* [Floppy/USB](http://netboot.xyz/ipxe/netboot.xyz-main.dsk)
+
+#### Feedback
+
+Feel free to open up an issue on github or contact me at antony@mes.ser.li

+ 12 - 0
boot/archlinux.ipxe

@@ -0,0 +1,12 @@
+#!ipxe
+
+# ArchLinux Operating System
+# http://www.archlinux.org
+
+menu ArchLinux
+item ipxe ArchLinux Graphical Menu
+item ipxe_text ArchLinux Text Menu
+choose version || exit
+
+chain http://releng.archlinux.org/pxeboot/${version}.pxe
+exit

+ 10 - 0
boot/boot.cfg

@@ -0,0 +1,10 @@
+#!ipxe
+
+# set boot domain
+set boot_domain netboot.xyz
+
+# set mirror domain
+set mirror mirror.rackspace.com
+
+# set location of memdisk
+set memdisk http://${boot_domain}/memdisk

+ 40 - 0
boot/bsd.ipxe

@@ -0,0 +1,40 @@
+#!ipxe
+
+goto ${menu} ||
+
+:bsd_menu
+
+menu BSD Operating Systems - Current Selected Architecture [ ${arch} ]
+iseq ${arch} x86_64 && set arch_a amd64 || set arch_a ${arch}
+
+# BSD based systems
+item --gap BSD Based Operating Systems
+item openbsd ${space} OpenBSD
+item freebsd ${space} FreeBSD
+
+# Options
+item --gap Options:
+iseq ${arch} x86_64 && set bits 64 || set bits 32
+item changebits ${space} Architecture: ${arch} (${bits}bit)
+choose menu || goto bsd_exit
+
+echo ${cls}
+goto ${menu} ||
+chain ${menu}.ipxe || goto error
+goto bsd_exit
+
+:bsd_exit
+clear menu
+chain menu.ipxe
+
+:changebits
+iseq ${arch} x86_64 && set arch i386 || set arch x86_64
+goto bsd_menu
+
+:openbsd
+chain openbsd.ipxe
+goto bsd_menu
+
+:freebsd
+chain freebsd.ipxe
+goto bsd_menu

+ 73 - 0
boot/centos.ipxe

@@ -0,0 +1,73 @@
+#!ipxe
+
+# CentOS Operating System
+# http://www.centos.org
+
+goto ${menu} ||
+
+:centos
+clear osversion
+set os CentOS
+set ksdevice eth0
+iseq ${manufacturer} Xen && set netcfg ip=${netX/ip} netmask=${netX/netmask} gateway=${netX/gateway} dns=${dns} ||
+menu ${os} ${arch}
+item 7.1.1503 ${os} 7.1
+item 7.0.1406 ${os} 7.0
+item 6.7 ${os} 6.7
+item other Choose other version [o]
+isset ${osversion} || choose osversion || goto linux_menu
+iseq ${osversion} other || goto centos_skip_read_osversion
+echo ${cls}
+echo -n Enter version: ${} && read osversion
+:centos_skip_read_osversion
+set dir ${menu}/${osversion}/os/${arch}
+set repo http://${mirror}/${dir}
+goto boottype
+
+:boottype
+set ova ${os} ${osversion}
+menu ${os} ${arch} boot type
+item graphical ${ova} graphical installer
+item text ${ova} text based installer
+item rescue ${ova} rescue
+item kickstart ${ova} set kickstart url [ ${ksurl} ]
+item kickstart_device ${ova} set ksdevice [ ${ksdevice} ]
+isset ${bt} || choose bt || goto centos
+echo ${cls}
+iseq ${bt} text && goto text ||
+iseq ${bt} rescue && goto rescue ||
+iseq ${bt} kickstart && goto kickstart ||
+iseq ${bt} kickstart_device && goto kickstart_device ||
+goto bootos_images
+
+:text
+set params text ||
+goto bootos_images
+
+:rescue
+set params rescue ||
+goto bootos_images
+
+:kickstart
+echo -n Specify kickstart URL for ${os} ${osversion}: && read ksurl
+set params ks=${ksurl} ksdevice=${ksdevice} ||
+clear bt
+goto boottype
+
+:kickstart_device
+echo -n Specify ksdevice param for ${os} ${osversion}: && read ksdevice
+set ksdevice ${ksdevice} ||
+clear bt
+goto boottype
+
+:bootos_images
+imgfree
+kernel http://${mirror}/${dir}/images/pxeboot/vmlinuz repo=${repo} ${params} ${netcfg}
+initrd http://${mirror}/${dir}/images/pxeboot/initrd.img
+boot
+goto linux_menu
+
+:linux_menu
+clear menu
+chain linux.ipxe
+exit 0

+ 66 - 0
boot/debian.ipxe

@@ -0,0 +1,66 @@
+#!ipxe
+
+# Debian Operating System
+# http://www.debian.org
+
+goto ${menu}
+
+:debian
+set os debian
+iseq ${manufacturer} Xen && set netcfg netcfg/get_ipaddress=${netX/ip} netcfg/get_netmask=${netX/netmask} netcfg/get_gateway=${netX/gateway} netcfg/get_nameservers=${dns} netcfg/confirm_static=true netcfg/choose_interface=eth0 netcfg/disable_autoconfig=true ||
+
+menu Debian ${arch_a}
+item jessie Debian 8.0 (jessie)
+item wheezy Debian 7.0 (wheezy)
+item squeeze Debian 6.0 (squeeze)
+item stretch Debian stretch (testing)
+item sid Debian sid (unstable) 
+choose version || goto debian_exit
+set mirrorcfg mirror/suite=${version} mirror/country=manual mirror/http/hostname=${mirror} mirror/http/directory=/${os}
+
+:deb_boot_type
+set dir ${os}/dists/${version}/main/installer-${arch_a}/current/images/netboot/
+
+menu ${os} boot parameters
+item text ${os} text based install
+item graphical ${os} graphical based install
+item rescue ${os} rescue mode 
+item expert ${os} expert install
+item preseed ${os} specify preseed url
+choose --default ${type} type || goto debian
+
+echo ${cls}
+goto deb_${type}
+
+:deb_rescue
+set install_params rescue/enable=true
+goto deb_text
+
+:deb_expert
+set install_params priority=low
+goto deb_text
+
+:deb_preseed
+echo -n Specify preseed URL for ${os} ${version}: && read preseedurl
+set install_params auto=true priority=critical preseed/url=${preseedurl}
+goto deb_text
+
+:deb_text
+set dir ${dir}${menu}-installer/${arch_a}
+goto deb_boot
+
+:deb_graphical
+set dir ${dir}gtk/${menu}-installer/${arch_a}
+set install_params vga=788
+goto deb_boot
+
+:deb_boot
+imgfree
+echo Boot parameters: ${install_params} -- quiet ${params}
+kernel http://${mirror}/${dir}/linux ${install_params} ${netcfg} ${mirrorcfg} -- quiet ${params} initrd=initrd.gz
+initrd http://${mirror}/${dir}/initrd.gz
+boot
+
+:debian_exit
+clear menu
+chain linux.ipxe

+ 35 - 0
boot/experimental.ipxe

@@ -0,0 +1,35 @@
+#!ipxe
+
+menu Experimental Operating Systems
+item --gap Experimental:
+item boot2docker ${space} boot2docker v1.0.0
+item coreos-current ${space} CoreOS Stable Channel
+
+choose --default ${menu} menu || goto experimental_exit
+echo ${cls}
+goto ${menu} ||
+chain ${menu}.ipxe || goto error
+goto experimental_exit
+
+:boot2docker
+kernel ${memdisk} iso raw
+initrd http://boot.rackspace.com/distros/boot2docker/v1.0.0/boot2docker.iso
+boot
+goto experimental_exit
+
+:coreos-current
+set base-url http://stable.release.core-os.net/amd64-usr/current
+echo This will currently autologin into tty1 on the console.
+echo From there you can su to root and install CoreOS to disk using:
+echo coreos-install -d /dev/sda -C stable
+echo You will probably need to chroot into /dev/sda9 to configure accounts.
+echo More info @ http://coreos.com/docs/running-coreos/bare-metal/installing-to-disk/
+kernel ${base-url}/coreos_production_pxe.vmlinuz coreos pxe demo console=tty1 coreos.autologin=tty1
+initrd ${base-url}/coreos_production_pxe_image.cpio.gz
+boot
+goto experimental_exit
+
+:experimental_exit
+clear menu
+chain menu.ipxe
+exit 0

+ 71 - 0
boot/fedora.ipxe

@@ -0,0 +1,71 @@
+#!ipxe
+
+# Fedora Operating System
+# http://wwww.fedora.org
+
+goto ${menu} ||
+
+:fedora
+clear osversion
+clear sku_type
+clear ova
+set os Fedora
+menu Fedora ${arch}
+iseq ${manufacturer} Xen && set netcfg ip=${netX/ip} netmask=${netX/netmask} gateway=${netX/gateway} dns=${dns} ksdevice=eth0 ||
+item 22 ${os} 22
+item 21 ${os} 21
+item 20 ${os} 20
+isset ${osversion} || choose osversion || goto linux_menu
+set ova ${os} ${osversion}
+iseq ${osversion} 20 && goto legacy_sku ||
+iseq ${osversion} 19 && goto legacy_sku ||
+iseq ${osversion} 18 && goto legacy_sku ||
+goto product_sku
+
+:product_sku
+menu ${os} ${arch} sku type
+item Cloud_Atomic ${ova} Cloud Atomic
+item Server ${ova} Server
+item Workstation ${ova} Workstation
+isset ${sku_type} || choose sku_type || goto fedora
+set dir fedora/releases/${osversion}/${sku_type}/${arch}/os
+set ova ${ova} ${sku_type}
+echo ${cls}
+goto boottype
+
+:legacy_sku
+set dir fedora/releases/${osversion}/${os}/${arch}/os
+goto boottype
+
+:boottype
+set repo http://${mirror}/${dir}
+menu ${os} ${arch} boot type
+item normal ${ova}
+item rescue ${ova} rescue
+item kickstart ${ova} specify kickstart url
+isset ${bt} || choose bt || goto fedora
+echo ${cls}
+iseq ${bt} rescue && goto rescue ||
+iseq ${bt} kickstart && goto kickstart ||
+goto bootos_images
+
+:rescue
+set params rescue ||
+goto bootos_images
+
+:kickstart
+echo -n Specify kickstart URL for ${os} ${osversion}: && read ksurl
+set params ks=${ksurl} ||
+goto bootos_images
+
+:bootos_images
+imgfree
+kernel http://${mirror}/${dir}/images/pxeboot/vmlinuz repo=${repo} ${params} ${netcfg} initrd=initrd.img
+initrd http://${mirror}/${dir}/images/pxeboot/initrd.img
+boot
+goto linux_menu
+
+:linux_menu
+clear menu
+chain linux.ipxe
+exit 0

+ 41 - 0
boot/freebsd.ipxe

@@ -0,0 +1,41 @@
+#!ipxe
+
+# FreeBSD Operating System
+# http://www.freebsd.org
+
+:freebsd_menu
+menu Please pick a FreeBSD version
+item 10.1 FreeBSD 10.1
+item 10.0 FreeBSD 10.0
+choose ver || goto freebsd_exit
+
+iseq ${ver} 10.1 && set image_ver 10.1-RELEASE ||
+iseq ${ver} 10.0 && set image_ver 10.0-RELEASE ||
+
+iseq ${arch} x86_64 && goto freebsd_x64 ||
+set freebsd_arch i386
+goto boot_freebsd
+
+:freebsd_x64
+set freebsd_arch amd64
+goto boot_freebsd
+
+:boot_freebsd
+set src http://${boot_domain}/distros/freebsd/${ver}/FreeBSD-${image_ver}-${freebsd_arch}-bootonly-mfsbsd.hd
+imgfree
+echo This loads an mfsbsd installer (http://mfsbsd.vx.sk/).  
+echo Root password for all images: mfsroot
+echo You'll need to configure networking manually for the installer disk as 
+echo it uses dhcp by default:
+echo ifconfig xn0 inet <public ip> netmask 255.255.255.0
+echo route delete default; route add default <public ip x.x.x.1>
+echo echo "nameserver x.x.x.x" > /etc/resolv.conf
+echo Once network is configured, you can launch the usual installer:
+echo bsdinstall
+initrd ${src}
+chain ${memdisk} harddisk raw
+exit
+
+:freebsd_exit
+clear menu
+chain bsd.ipxe

+ 31 - 0
boot/gentoo.ipxe

@@ -0,0 +1,31 @@
+#!ipxe
+
+# Gentoo Operating System
+# http://www.gentoo.org
+
+# Note: in order to boot Gentoo via iPXE, the method at http://blog.dastrup.com/?p=12 has been utilized to 
+# to allow for the Gentoo minimal disk to boot.  I've regenerated the latest boot disks and have put
+# them on ${boot_domain} so that you can boot into the live cd
+
+goto ${menu}
+
+:gentoo
+set os gentoo
+menu Gentoo ${arch_a}
+item 20140116 Gentoo minimal CD version - 20140116
+choose version || goto gentoo_exit
+goto ${version}
+
+:20140116
+set gentoopath http://${boot_domain}/distros/gentoo/amd64/20140116
+echo Please note the gentoo ISO has been regenerated to work with iPXE
+echo using the method here: http://blog.dastrup.com/?p=12
+echo You will need to set up networking manually.
+kernel ${gentoopath}/gentoo initrd=gentoo.igz root=/dev/ram0 init=/linuxrc loop=/image.squashfs looptype=squashfs cdroot=1 real_root=/ dokeymap vga=791 nodhcp
+initrd ${gentoopath}/gentoo.igz
+boot
+goto gentoo
+
+:gentoo_exit
+clear menu
+chain linux.ipxe

+ 58 - 0
boot/linux.ipxe

@@ -0,0 +1,58 @@
+#!ipxe
+
+goto ${menu} ||
+
+:linux_menu
+menu Linux Operating Systems - Current Selected Architecture [ ${arch} ]
+iseq ${arch} x86_64 && set arch_a amd64 || set arch_a ${arch}
+item --gap Operating Systems:
+item archlinux ${space} ArchLinux
+item centos ${space} CentOS 
+item debian ${space} Debian
+item fedora ${space} Fedora
+item gentoo ${space} Gentoo
+item opensuse ${space} openSUSE
+item scientific ${space} Scientific
+item ubuntu ${space} Ubuntu
+item tinycore ${space} TinyCoreLinux
+# Options
+item --gap Options:
+iseq ${arch} x86_64 && set bits 64 || set bits 32
+item changebits ${space} Architecture: ${arch} (${bits}bit)
+choose menu || goto linux_exit
+echo ${cls}
+goto ${menu} ||
+chain ${menu}.ipxe || goto error
+goto linux_exit
+
+:linux_exit
+clear menu
+chain menu.ipxe
+
+:changebits
+iseq ${arch} x86_64 && set arch i386 || set arch x86_64
+goto linux_menu
+
+:fedora
+chain fedora.ipxe
+goto linux_menu
+
+:centos
+chain centos.ipxe
+goto linux_menu
+
+:debian
+chain debian.ipxe
+goto linux_menu
+
+:ubuntu
+chain ubuntu.ipxe
+goto linux_menu
+
+:opensuse
+chain opensuse.ipxe
+goto linux_menu
+
+:scientific
+chain scientific.ipxe
+goto linux_menu

+ 106 - 0
boot/menu.ipxe

@@ -0,0 +1,106 @@
+#!ipxe
+
+:start
+
+chain --autofree boot.cfg ||
+
+iseq ${cls} serial && goto ignore_cls ||
+set cls:hex 1b:5b:4a  # ANSI clear screen sequence - "^[[J"
+set cls ${cls:string}
+:ignore_cls
+
+isset ${arch} && goto skip_arch_detect ||
+cpuid --ext 29 && set arch x86_64 || set arch i386
+:skip_arch_detect
+isset ${menu} && goto ${menu} ||
+
+isset ${ip} || dhcp || echo DHCP failed
+
+:main_menu
+clear menu
+set space:hex 20:20
+set space ${space:string}
+iseq ${arch} i386 && set arch5 i586 || set arch5 ${arch}
+iseq ${arch} x86_64 && set arch_a amd64 || set arch_a ${arch}
+menu ${boot_domain} [Local IP: ${netX/ip}]
+
+item --gap Default:
+item local ${space} Boot from local hdd
+
+item --gap Operating Systems:
+item linux ${space} Linux Operating Systems
+item bsd ${space} BSD Operating Systems
+item experimental ${space} Experimental Operating Systems
+
+item --gap Tools:
+item utils ${space} Utilities
+item shell ${space} iPXE shell
+item netinfo ${space} Network card info
+
+isset ${menu} && set timeout 0 || set timeout 300000
+choose --timeout ${timeout} --default ${menu} menu || goto local
+echo ${cls}
+goto ${menu} ||
+chain ${menu}.ipxe || goto error
+goto main_menu
+
+:error
+echo Error occured, press any key to return to menu ...
+prompt
+goto main_menu
+
+:local
+echo Booting from local disks ...
+exit 0
+
+:reload
+echo Reloading menu.ipxe ...
+chain menu.ipxe
+
+:netinfo
+menu Network info
+item --gap MAC:
+item mac ${space} ${netX/mac}
+item --gap IP/mask:
+item ip ${space} ${netX/ip}/${netX/netmask}
+item --gap Gateway:
+item gw ${space} ${netX/gateway}
+item --gap Domain:
+item domain ${space} ${netX/domain}
+item --gap DNS:
+item dns ${space} ${netX/dns}
+item --gap DHCP server:
+item dhcpserver ${space} ${netX/dhcp-server}
+item --gap Next-server:
+item nextserver ${space} ${next-server}
+item --gap Filename:
+item filename ${space} ${netX/filename}
+choose empty ||
+goto main_menu
+
+:shell
+echo Type "exit" to return to menu.
+set menu main_menu
+shell
+goto main_menu
+
+:changebits
+iseq ${arch} x86_64 && set arch i386 || set arch x86_64
+goto main_menu
+
+# OS
+:linux
+chain linux.ipxe
+goto main_menu
+
+:bsd
+chain bsd.ipxe
+goto main_menu
+
+:experimental
+chain experimental.ipxe
+goto main_menu
+
+:utils
+chain utils.ipxe
+goto main_menu

+ 32 - 0
boot/openbsd.ipxe

@@ -0,0 +1,32 @@
+#!ipxe
+
+# OpenBSD Operating System
+# http://www.openbsd.org
+
+:openbsd_menu
+menu Please pick an OpenBSD version
+item 5.7 OpenBSD 5.7
+item 5.6 OpenBSD 5.6
+choose ver || goto openbsd_exit
+
+iseq ${ver} 5.7 && set image_ver 57 ||
+iseq ${ver} 5.6 && set image_ver 56 ||
+
+iseq ${arch} x86_64 && goto openbsd_x64 ||
+set openbsd_arch i386
+goto boot_openbsd
+
+:openbsd_x64
+set openbsd_arch amd64
+goto boot_openbsd
+
+:boot_openbsd
+set src http://ftp.openbsd.org/pub/OpenBSD/${ver}/${openbsd_arch}/install${image_ver}.iso
+imgfree
+initrd ${src}
+chain ${memdisk} iso raw
+exit
+
+:openbsd_exit
+clear menu
+chain bsd.ipxe

+ 30 - 0
boot/opensuse.ipxe

@@ -0,0 +1,30 @@
+#!ipxe
+
+# Novell OpenSUSE Operating System
+# http://opensuse.org
+
+menu openSUSE ${arch}
+iseq ${manufacturer} Xen && set netcfg hostip=${netX/ip} netmask=${netX/netmask} gateway=${netX/gateway} nameserver=${dns} ||
+item 13.2 openSUSE 13.2
+item 13.1 openSUSE 13.1
+item 12.3 openSUSE 12.3
+item 12.2 openSUSE 12.2
+item 11.4 openSUSE 11.4
+item factory-tested openSUSE factory-tested
+item tumbleweed openSUSE tumbleweed
+choose version || goto opensuse_exit
+
+set dir opensuse/distribution/${version}/repo/oss
+iseq ${version} tumbleweed && set mirror download.opensuse.org && set dir ${version}/repo/oss ||
+iseq ${version} factory-tested && set dir ${version}/repo/oss/ ||
+
+imgfree
+kernel http://${mirror}/${dir}/boot/${arch}/loader/linux
+initrd http://${mirror}/${dir}/boot/${arch}/loader/initrd
+imgargs linux netsetup=dhcp install=http://${mirror}/${dir} ${params} ${netcfg}
+boot
+
+:opensuse_exit
+clear menu
+chain linux.ipxe
+exit 0

+ 57 - 0
boot/scientific.ipxe

@@ -0,0 +1,57 @@
+#!ipxe
+
+# Scientific Linux Operating System
+# https://www.scientificlinux.org/
+
+goto ${menu} ||
+
+:scientific
+clear osversion
+set os Scientific
+iseq ${manufacturer} Xen && set netcfg ip=${netX/ip} netmask=${netX/netmask} gateway=${netX/gateway} dns=${dns} ksdevice=eth0 ||
+menu ${os} ${arch}
+item 7.0 ${os} 7.0
+item 6.5 ${os} 6.5
+item other Choose other version [o]
+isset ${osversion} || choose osversion || goto linux_menu
+iseq ${osversion} other || goto scientific_skip_read_osversion
+echo ${cls}
+echo -n Enter version: ${} && read osversion
+:scientific_skip_read_osversion
+set dir linux/scientific/${osversion}/${arch}/os
+set repo http://ftp1.scientificlinux.org/${dir}
+
+goto boottype
+
+:boottype
+set ova ${os} ${osversion}
+menu ${os} ${arch} boot type
+item normal ${ova}
+item rescue ${ova} rescue
+item kickstart ${ova} specify kickstart url
+isset ${bt} || choose bt || goto scientific
+echo ${cls}
+iseq ${bt} rescue && goto rescue ||
+iseq ${bt} kickstart && goto kickstart ||
+goto bootos_images
+
+:rescue
+set params rescue ||
+goto bootos_images
+
+:kickstart
+echo -n Specify kickstart URL for ${os} ${osversion}: && read ksurl
+set params ks=${ksurl} ||
+goto bootos_images
+
+:bootos_images
+imgfree
+kernel http://ftp1.scientificlinux.org/${dir}/images/pxeboot/vmlinuz repo=${repo} ${params} ${netcfg}
+initrd http://ftp1.scientificlinux.org/${dir}/images/pxeboot/initrd.img
+boot
+goto linux_menu
+
+:linux_menu
+clear menu
+chain linux.ipxe
+exit 0

+ 23 - 0
boot/tinycore.ipxe

@@ -0,0 +1,23 @@
+#!ipxe
+
+# TinyCoreLinux
+# http://tinycorelinux.net/downloads.html
+# For now there is only one menu entry
+
+set tmirror tinycorelinux.net
+
+:tinycore_menu
+set dir 6.x/x86/release
+menu TinyCoreLinux
+item --key c Core Core (8 MB)
+choose version || goto tinycore_exit
+
+echo ${cls}
+
+kernel ${memdisk} iso raw ${params}
+initrd http://${tmirror}/${dir}/${version}-current.iso
+boot
+
+:tinycore_exit
+clear menu
+chain linux.ipxe

+ 59 - 0
boot/ubuntu.ipxe

@@ -0,0 +1,59 @@
+#!ipxe
+
+# Ubuntu Operating System
+# http://www.ubuntu.org
+
+goto ${menu}
+
+:ubuntu
+set os ubuntu
+iseq ${manufacturer} Xen && set netcfg netcfg/get_ipaddress=${netX/ip} netcfg/get_netmask=${netX/netmask} netcfg/get_gateway=${netX/gateway} netcfg/get_nameservers=${dns} netcfg/confirm_static=true netcfg/choose_interface=eth0 netcfg/disable_autoconfig=true ||
+
+menu Ubuntu ${arch_a}
+item vivid Ubuntu 15.04 Vivid Vervet 
+item utopic Ubuntu 14.10 Utopic Unicorn
+item trusty Ubuntu 14.04 LTS Trusty Tahr
+item saucy Ubuntu 13.10 Saucy Salamander
+item quantal Ubuntu 12.10 Quantal Quetzal
+item precise Ubuntu 12.04 LTS Precise Pangolin
+choose version || goto ubuntu_exit
+set mirrorcfg mirror/suite=${version} mirror/country=manual mirror/http/hostname=${mirror} mirror/http/directory=/${os}
+
+:deb_boot_type
+set dir ${os}/dists/${version}-updates/main/installer-${arch_a}/current/images/netboot/
+
+menu ${os} boot parameters
+item install ${os} install
+item rescue ${os} rescue mode
+item expert ${os} expert install
+item preseed ${os} specify preseed url
+choose --default ${type} type || goto ubuntu
+
+echo ${cls}
+goto deb_${type}
+
+:deb_rescue
+set install_params rescue/enable=true
+goto deb_boot
+
+:deb_expert
+set install_params priority=low
+goto deb_boot
+
+:deb_preseed
+echo -n Specify preseed URL for ${os} ${version}: && read preseedurl
+set install_params auto=true priority=critical preseed/url=${preseedurl}
+goto deb_boot
+
+:deb_install
+:deb_boot
+set dir ${dir}${menu}-installer/${arch_a}
+imgfree
+echo Boot parameters: ${install_params} -- quiet ${params}
+kernel http://${mirror}/${dir}/linux ${install_params} ${netcfg} ${mirrorcfg} -- quiet ${params}
+initrd http://${mirror}/${dir}/initrd.gz
+boot
+
+:ubuntu_exit
+clear menu
+chain linux.ipxe

+ 49 - 0
boot/utils.ipxe

@@ -0,0 +1,49 @@
+#!ipxe
+
+menu Utilities
+item --gap Utilities:
+item clonezilla ${space} Clonezilla
+item hdt ${space} Hardware Detection Tool
+item memtest ${space} MemTest86+
+choose --default ${menu} menu || goto utils_exit
+echo ${cls}
+goto ${menu} ||
+chain ${menu}.ipxe || goto error
+goto linux_exit
+
+:hdt
+kernel ${memdisk} iso raw
+initrd http://www.hdt-project.org/raw-attachment/wiki/hdt-0.5.0/hdt-0.5.2.iso
+boot
+goto utils_exit
+
+:clonezilla
+set version 2.2.3-25
+iseq ${arch} x86_64 && set cz_arch amd64 || set cz_arch i686-pae
+set project clonezilla
+set iso ${project}_live_stable/${version}/${project}-live-${version}-${cz_arch}.iso
+set czurl http://sourceforge.net/projects/clonezilla/files/${iso}/download
+kernel ${memdisk} iso raw ${params}
+:retry
+iseq ${try} xxxxx && exit ||
+set try ${try}x
+initrd ${czurl} || goto retry
+boot || goto utils_exit
+
+:memtest
+chain utils/memtest.bin ${params} && goto main_menu ||
+echo MEMORY ERROR DETECTED! ${errno}
+echo Press any key to continue ...
+read a
+goto utils_exit
+
+choose --timeout ${timeout} --default ${menu} menu || goto utils_exit
+echo ${cls}
+goto ${menu} ||
+chain ${menu}.ipxe || goto error
+goto linux_exit
+
+:utils_exit
+clear menu
+chain menu.ipxe
+exit 0

+ 32 - 0
ipxe/netboot.xyz-main

@@ -0,0 +1,32 @@
+#!ipxe
+
+:start
+set netboot_xyz_version 1
+echo netboot_xyz iPXE loader v${netboot_xyz_version}
+
+:dhcp  
+dhcp || goto static
+goto start
+
+:static
+echo DHCP Server not found, enabling manual override:
+imgfree
+ifclose net0
+echo -n IP: && read net0/ip
+echo -n Subnet mask: && read net0/netmask
+echo -n Gateway: && read net0/gateway
+echo -n DNS: && read dns
+ifopen net0
+echo Attempting chainload of netboot.xyz...
+goto start || goto failsafe
+
+:start
+chain http://cdn.netboot.xyz/boot.ipxe
+goto boot
+
+:failsafe
+echo Attempt to load netboot.xyz failed... restarting...
+goto start
+
+:boot
+sanboot --no-describe --drive 0x80

+ 28 - 0
ipxe/netboot.xyz-static

@@ -0,0 +1,28 @@
+#!ipxe
+
+:start
+set version 1
+echo netboot.xyz iPXE loader v${version}
+
+:static
+echo Please enter in the networking information of your Cloud Server:
+imgfree
+ifclose net0
+echo -n IP: && read net0/ip
+echo -n Subnet mask: && read net0/netmask
+echo -n Gateway: && read net0/gateway
+echo -n DNS: && read dns
+ifopen net0
+echo Attempting chainload of netboot.xyz...
+goto start || goto failsafe
+
+:start
+chain http://cdn.netboot.xyz/boot.ipxe
+goto boot
+
+:failsafe
+echo Attempt to load netboot.xyz failed... restarting...
+goto start
+
+:boot
+sanboot --no-describe --drive 0x80