aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--net/Makefile1
-rw-r--r--net/isboot-kmod/Makefile28
-rw-r--r--net/isboot-kmod/distinfo2
-rw-r--r--net/isboot-kmod/files/patch-iscsi.c56
-rw-r--r--net/isboot-kmod/files/pkg-message.in5
-rw-r--r--net/isboot-kmod/pkg-descr9
6 files changed, 101 insertions, 0 deletions
diff --git a/net/Makefile b/net/Makefile
index 2ffab1c3ac44..41b645c27191 100644
--- a/net/Makefile
+++ b/net/Makefile
@@ -248,6 +248,7 @@
SUBDIR += ipsumdump
SUBDIR += ipsvd
SUBDIR += irrd
+ SUBDIR += isboot-kmod
SUBDIR += isc-dhcp41-client
SUBDIR += isc-dhcp41-relay
SUBDIR += isc-dhcp41-server
diff --git a/net/isboot-kmod/Makefile b/net/isboot-kmod/Makefile
new file mode 100644
index 000000000000..f4f0d4c0bedc
--- /dev/null
+++ b/net/isboot-kmod/Makefile
@@ -0,0 +1,28 @@
+# $FreeBSD$
+
+PORTNAME= isboot-kmod
+PORTVERSION= 0.2.10
+CATEGORIES= net
+MASTER_SITES= http://www.peach.ne.jp/archives/isboot/
+DISTNAME= isboot-${PORTVERSION}
+
+MAINTAINER= john@jnielsen.net
+COMMENT= Kernel module enabling iSCSI boot
+
+LICENSE= BSD2CLAUSE
+
+USES= kmod uidfix
+SUB_FILES= pkg-message
+WRKSRC_SUBDIR= src
+PLIST_FILES= ${KMODDIR}/isboot.ko
+PORTDOCS= README
+
+OPTIONS_DEFINE= DOCS VIMAGE
+VIMAGE_DESC= Build for a kernel with 'options VIMAGE'
+VIMAGE_CFLAGS= -DVIMAGE
+
+post-install-DOCS-on:
+ ${MKDIR} ${STAGEDIR}${DOCSDIR}
+ cd ${WRKDIR}/${DISTNAME} && ${INSTALL_MAN} ${PORTDOCS} ${STAGEDIR}${DOCSDIR}
+
+.include <bsd.port.mk>
diff --git a/net/isboot-kmod/distinfo b/net/isboot-kmod/distinfo
new file mode 100644
index 000000000000..30ec3443d480
--- /dev/null
+++ b/net/isboot-kmod/distinfo
@@ -0,0 +1,2 @@
+SHA256 (isboot-0.2.10.tar.gz) = b801708256f789e1032f7be2db79f886919fddb7b9b26ec1835f68a8237c3b48
+SIZE (isboot-0.2.10.tar.gz) = 30268
diff --git a/net/isboot-kmod/files/patch-iscsi.c b/net/isboot-kmod/files/patch-iscsi.c
new file mode 100644
index 000000000000..8634a7414894
--- /dev/null
+++ b/net/isboot-kmod/files/patch-iscsi.c
@@ -0,0 +1,56 @@
+--- iscsi.c.orig 2015-09-23 05:51:43 UTC
++++ iscsi.c
+@@ -1036,24 +1036,30 @@ isboot_append_param(pdu_t *pp, char *for
+ return (n);
+ }
+
+-#if __FreeBSD_version >= 1000050
++#if __FreeBSD_version < 1000050
++static void
++isboot_free_mbufext(void *p, void *optarg)
++#endif
++#if __FreeBSD_version >= 1000050 && __FreeBSD_version < 1100000
++#define EXT_FREE_OK 0
+ static int
+ isboot_free_mbufext(struct mbuf *m, void *p, void *optarg)
+-#else
++#endif
++#if __FreeBSD_version >= 1100000
+ static void
+-isboot_free_mbufext(void *p, void *optarg)
++isboot_free_mbufext(struct mbuf *m, void *p, void *optarg)
+ #endif
+ {
+
+ ISBOOT_TRACE("isboot_free_mbufext\n");
+ if (p == NULL)
+-#if __FreeBSD_version >= 1000050
++#if __FreeBSD_version >= 1000050 && __FreeBSD_version < 1100000
+ return (EXT_FREE_OK);
+ #else
+ return;
+ #endif
+ isboot_free_mext(p);
+-#if __FreeBSD_version >= 1000050
++#if __FreeBSD_version >= 1000050 && __FreeBSD_version < 1100000
+ return (EXT_FREE_OK);
+ #endif
+ }
+@@ -1072,7 +1078,7 @@ isboot_xmit_pdu(struct isboot_sess *sess
+ + sizeof(pp->hdr_dig) > MHLEN) {
+ panic("AHS=%d is too large", pp->ahs_len);
+ }
+- MGETHDR(mh, M_TRYWAIT, MT_DATA);
++ MGETHDR(mh, M_WAITOK, MT_DATA);
+ mh->m_pkthdr.rcvif = NULL;
+ memcpy(mh->m_data, &pp->ipdu, ISCSI_BHS_LEN);
+ mh->m_len = ISCSI_BHS_LEN;
+@@ -1099,7 +1105,7 @@ isboot_xmit_pdu(struct isboot_sess *sess
+ /* allocate external buffer and add it to mbuf */
+ ds_dd = isboot_malloc_mext(ISCSI_ALIGN(pp->ds_len)
+ + sizeof(pp->ds_dig));
+- MGET(md, M_TRYWAIT, MT_DATA);
++ MGET(md, M_WAITOK, MT_DATA);
+ #if __FreeBSD_version >= 800016
+ MEXTADD(md, (caddr_t)ds_dd, (ISCSI_ALIGN(pp->ds_len)
+ + sizeof(pp->ds_dig)),
diff --git a/net/isboot-kmod/files/pkg-message.in b/net/isboot-kmod/files/pkg-message.in
new file mode 100644
index 000000000000..3f599938a715
--- /dev/null
+++ b/net/isboot-kmod/files/pkg-message.in
@@ -0,0 +1,5 @@
+Remember to have the module loaded at boot by adding the following to
+/boot/loader.conf:
+ isboot_load="YES"
+
+See %%DOCSDIR%%/README for additional information.
diff --git a/net/isboot-kmod/pkg-descr b/net/isboot-kmod/pkg-descr
new file mode 100644
index 000000000000..5e18ac4d1938
--- /dev/null
+++ b/net/isboot-kmod/pkg-descr
@@ -0,0 +1,9 @@
+This installs Daisuke Aoyama's isboot kernel module, which allows
+booting FreeBSD directly from an iSCSI root disk. If your BIOS
+supports iSCSI you may configure your target settings in the BIOS
+and boot directly. If not, you may PXE boot using software that
+contains iSCSI support such as iPXE. The module reads the iSCSI
+Boot Firmware Table (IBFT) to configure the network and re-attach
+the volume once the kernel begins execution.
+
+WWW: http://shell.peach.ne.jp/aoyama/archives/2115 (Japanese)