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>
This commit is contained in:
Kurt Jaeger 2016-03-01 20:34:41 +00:00
parent f5346b84ad
commit 0bb35451a1
Notes: svn2git 2021-03-31 03:12:20 +00:00
svn path=/head/; revision=409900
7 changed files with 167 additions and 0 deletions

View file

@ -253,6 +253,7 @@
SUBDIR += ipsorc
SUBDIR += ipsumdump
SUBDIR += ipsvd
SUBDIR += ipxe
SUBDIR += irrd
SUBDIR += isboot-kmod
SUBDIR += isc-dhcp41-client

88
net/ipxe/Makefile Normal file
View file

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

2
net/ipxe/distinfo Normal file
View file

@ -0,0 +1,2 @@
SHA256 (ipxe-ipxe-20160213-7ecfe7159f94193a666200a17057d4cd5981b850_GH0.tar.gz) = 81e5a199c179ea993368beca55b40f810dddf789c6da48bace72aae3d94a6aba
SIZE (ipxe-ipxe-20160213-7ecfe7159f94193a666200a17057d4cd5981b850_GH0.tar.gz) = 3490722

View file

@ -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 */

View file

@ -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.

View file

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

12
net/ipxe/pkg-descr Normal file
View file

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