aboutsummaryrefslogtreecommitdiffstats
path: root/net
diff options
context:
space:
mode:
authorpi <pi@FreeBSD.org>2016-03-02 04:34:41 +0800
committerpi <pi@FreeBSD.org>2016-03-02 04:34:41 +0800
commit419eb6aaf0b9b33d218fe8fa89a2c151e8167a29 (patch)
tree7235c8450bcb3c389dd511945e94992209a35659 /net
parent5dbfa8648e08725890fbe0e141b2d2d37d34421e (diff)
downloadfreebsd-ports-gnome-419eb6aaf0b9b33d218fe8fa89a2c151e8167a29.tar.gz
freebsd-ports-gnome-419eb6aaf0b9b33d218fe8fa89a2c151e8167a29.tar.zst
freebsd-ports-gnome-419eb6aaf0b9b33d218fe8fa89a2c151e8167a29.zip
New port: net/ipxe
iPXE is the leading open source network boot firmware. It provides a full PXE implementation enhanced with additional features such as: * boot from a web server via HTTP * boot from an iSCSI SAN * boot from a Fibre Channel SAN via FCoE * boot from an AoE SAN * boot from a wireless network * boot from a wide-area network * boot from an Infiniband network * control the boot process with a script WWW: http://ipxe.org PR: 207166 Submitted by: Tobias Kortkamp <t@tobik.me>
Diffstat (limited to 'net')
-rw-r--r--net/Makefile1
-rw-r--r--net/ipxe/Makefile88
-rw-r--r--net/ipxe/distinfo2
-rw-r--r--net/ipxe/files/patch-config_general.h33
-rw-r--r--net/ipxe/files/pkg-message.in25
-rw-r--r--net/ipxe/ipxestart.example6
-rw-r--r--net/ipxe/pkg-descr12
7 files changed, 167 insertions, 0 deletions
diff --git a/net/Makefile b/net/Makefile
index 10bf77f916a0..887abb1d057c 100644
--- a/net/Makefile
+++ b/net/Makefile
@@ -253,6 +253,7 @@
SUBDIR += ipsorc
SUBDIR += ipsumdump
SUBDIR += ipsvd
+ SUBDIR += ipxe
SUBDIR += irrd
SUBDIR += isboot-kmod
SUBDIR += isc-dhcp41-client
diff --git a/net/ipxe/Makefile b/net/ipxe/Makefile
new file mode 100644
index 000000000000..76a021f7ccfc
--- /dev/null
+++ b/net/ipxe/Makefile
@@ -0,0 +1,88 @@
+# Created by: Guerkan Karaman <gk.freebsd@googlemail.com>
+# $FreeBSD$
+
+# With helpful hints from net/gpxe
+
+PORTNAME= ipxe
+PORTVERSION= 20160213
+CATEGORIES= net
+
+MAINTAINER= t@tobik.me
+COMMENT= Open source network boot firmware
+
+LICENSE= GPLv2
+
+BUILD_DEPENDS= ${LOCALBASE}/share/syslinux/bios/core/isolinux.bin:${PORTSDIR}/sysutils/syslinux \
+ bash:${PORTSDIR}/shells/bash \
+ mkisofs:${PORTSDIR}/sysutils/cdrtools
+
+USE_GITHUB= yes
+GH_PROJECT= ipxe
+# iPXE hasn't had a release since 2010.
+# See iPXE's FAQ at http://ipxe.org/faq
+#
+# Q: Which version of iPXE should I use?
+#
+# A: iPXE uses a rolling release model, in which every commit is intended
+# to be production-ready. You should always use the latest code.
+#
+GH_TAGNAME= 7ecfe7159f94193a666200a17057d4cd5981b850
+
+USES= gmake perl5 shebangfix
+USE_GCC= yes
+MAKE_ARGS= PERL=${PERL} \
+ CC=${CC} \
+ HOST_CC=${CC} \
+ ISOLINUX_BIN="${WRKSRC}/isolinux.bin" \
+ LDLINUX_C32="${LOCALBASE}/share/syslinux/bios/com32/elflink/ldlinux/ldlinux.c32"
+WRKSRC_SUBDIR= src
+SHEBANG_FILES= util/geniso util/gensdsk
+
+PLIST_FILES= %%DATADIR%%/ipxe.dsk \
+ %%DATADIR%%/ipxe.usb \
+ %%DATADIR%%/ipxe.iso \
+ %%DATADIR%%/ipxe.pxe \
+ %%DATADIR%%/ipxe.lkrn
+
+SUB_FILES= pkg-message
+
+.include <bsd.port.options.mk>
+
+ONLY_FOR_ARCHS= amd64 i386
+ONLY_FOR_ARCHS_REASON= not yet ported to anything other than amd64/i386
+
+.if ${ARCH} == "amd64"
+MAKE_ARGS+= ARCH=i386
+.endif
+
+IPXE_EMBED?= # Allows embedding of iPXE start scripts
+.if ${IPXE_EMBED} != ""
+MAKE_ARGS+= EMBED="${IPXE_EMBED}"
+.endif
+
+IPXE_TRUST?= # Path to the root certificates iPXE trusts
+.if ${IPXE_TRUST} != ""
+MAKE_ARGS+= TRUST="${IPXE_TRUST}"
+.endif
+
+pre-everything::
+ @${ECHO_MSG} "To build iPXE with an embedded script (path must be absolute):"
+ @${ECHO_MSG} "make IPXE_EMBED=/path/to/ipxe/script install clean"
+ @${ECHO_MSG}
+ @${ECHO_MSG} "To build iPXE with new trusted root certificates"
+ @${ECHO_MSG} "(see http://ipxe.org/crypto for more information):"
+ @${ECHO_MSG} "make IPXE_TRUST=/path/to/ca1.crt,/path/to/ca2.crt"
+
+pre-build:
+# ISO creation fails if isolinux.bin is read only
+ ${INSTALL} -m 644 ${LOCALBASE}/share/syslinux/bios/core/isolinux.bin ${WRKSRC}/isolinux.bin
+
+do-install:
+ @${MKDIR} ${STAGEDIR}${DATADIR}
+ ${INSTALL_DATA} ${WRKSRC}/bin/ipxe.dsk ${STAGEDIR}${DATADIR}
+ ${INSTALL_DATA} ${WRKSRC}/bin/ipxe.usb ${STAGEDIR}${DATADIR}
+ ${INSTALL_DATA} ${WRKSRC}/bin/ipxe.iso ${STAGEDIR}${DATADIR}
+ ${INSTALL_DATA} ${WRKSRC}/bin/ipxe.pxe ${STAGEDIR}${DATADIR}
+ ${INSTALL_DATA} ${WRKSRC}/bin/ipxe.lkrn ${STAGEDIR}${DATADIR}
+
+.include <bsd.port.mk>
diff --git a/net/ipxe/distinfo b/net/ipxe/distinfo
new file mode 100644
index 000000000000..486d0e3a656f
--- /dev/null
+++ b/net/ipxe/distinfo
@@ -0,0 +1,2 @@
+SHA256 (ipxe-ipxe-20160213-7ecfe7159f94193a666200a17057d4cd5981b850_GH0.tar.gz) = 81e5a199c179ea993368beca55b40f810dddf789c6da48bace72aae3d94a6aba
+SIZE (ipxe-ipxe-20160213-7ecfe7159f94193a666200a17057d4cd5981b850_GH0.tar.gz) = 3490722
diff --git a/net/ipxe/files/patch-config_general.h b/net/ipxe/files/patch-config_general.h
new file mode 100644
index 000000000000..84f75bd49d89
--- /dev/null
+++ b/net/ipxe/files/patch-config_general.h
@@ -0,0 +1,33 @@
+--- config/general.h.orig 2016-02-12 14:04:51 UTC
++++ config/general.h
+@@ -35,7 +35,7 @@ FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL );
+ */
+
+ #define NET_PROTO_IPV4 /* IPv4 protocol */
+-#undef NET_PROTO_IPV6 /* IPv6 protocol */
++#define NET_PROTO_IPV6 /* IPv6 protocol */
+ #undef NET_PROTO_FCOE /* Fibre Channel over Ethernet protocol */
+ #define NET_PROTO_STP /* Spanning Tree protocol */
+
+@@ -53,10 +53,10 @@ FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL );
+
+ #define DOWNLOAD_PROTO_TFTP /* Trivial File Transfer Protocol */
+ #define DOWNLOAD_PROTO_HTTP /* Hypertext Transfer Protocol */
+-#undef DOWNLOAD_PROTO_HTTPS /* Secure Hypertext Transfer Protocol */
++#define DOWNLOAD_PROTO_HTTPS /* Secure Hypertext Transfer Protocol */
+ #undef DOWNLOAD_PROTO_FTP /* File Transfer Protocol */
+ #undef DOWNLOAD_PROTO_SLAM /* Scalable Local Area Multicast */
+-#undef DOWNLOAD_PROTO_NFS /* Network File System Protocol */
++#define DOWNLOAD_PROTO_NFS /* Network File System Protocol */
+
+ /*
+ * SAN boot protocols
+@@ -136,7 +136,7 @@ FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL );
+ //#define PXE_CMD /* PXE commands */
+ //#define REBOOT_CMD /* Reboot command */
+ //#define POWEROFF_CMD /* Power off command */
+-//#define IMAGE_TRUST_CMD /* Image trust management commands */
++#define IMAGE_TRUST_CMD /* Image trust management commands */
+ //#define PCI_CMD /* PCI commands */
+ //#define PARAM_CMD /* Form parameter commands */
+ //#define NEIGHBOUR_CMD /* Neighbour management commands */
diff --git a/net/ipxe/files/pkg-message.in b/net/ipxe/files/pkg-message.in
new file mode 100644
index 000000000000..95b09f46f380
--- /dev/null
+++ b/net/ipxe/files/pkg-message.in
@@ -0,0 +1,25 @@
+The following files have been installed in %%DATADIR%%:
+
+* ipxe.dsk: To create a bootable floppy run
+
+ dd if=%%DATADIR%%/ipxe.dsk of=/dev/fd0
+
+ where /dev/fd0 is your floppy drive. This will erase any data
+ already on the disk.
+
+* ipxe.usb: To create a bootable USB key run
+
+ dd if=%%DATADIR%%/ipxe.usb of=/dev/daX
+
+ where /dev/daX is your USB key, and is *not* a real hard disk on
+ your system. This will erase any data already on the USB key.
+
+* ipxe.iso: To create a bootable CD-ROM run
+
+ cdrecord %%DATADIR%%/ipxe.iso
+
+ to write the image to a blank CD.
+
+* ipxe.pxe: For chainloading from a PXE ROM.
+
+* ipxe.lkrn: For any boot manager that can boot Linux kernels.
diff --git a/net/ipxe/ipxestart.example b/net/ipxe/ipxestart.example
new file mode 100644
index 000000000000..bdba446cdb73
--- /dev/null
+++ b/net/ipxe/ipxestart.example
@@ -0,0 +1,6 @@
+#!ipxe
+# An example iPXE start script
+# To build iPXE with this script embedded build the port with:
+# make IPXE_EMBED=${PWD}/ipxestart.example
+ifconf
+chain https://boot.ipxe.org/demo/boot.php
diff --git a/net/ipxe/pkg-descr b/net/ipxe/pkg-descr
new file mode 100644
index 000000000000..2d6e900bcc48
--- /dev/null
+++ b/net/ipxe/pkg-descr
@@ -0,0 +1,12 @@
+iPXE is the leading open source network boot firmware. It provides a
+full PXE implementation enhanced with additional features such as:
+* boot from a web server via HTTP
+* boot from an iSCSI SAN
+* boot from a Fibre Channel SAN via FCoE
+* boot from an AoE SAN
+* boot from a wireless network
+* boot from a wide-area network
+* boot from an Infiniband network
+* control the boot process with a script
+
+WWW: http://ipxe.org