diff options
-rw-r--r-- | net/Makefile | 1 | ||||
-rw-r--r-- | net/isboot-kmod/Makefile | 28 | ||||
-rw-r--r-- | net/isboot-kmod/distinfo | 2 | ||||
-rw-r--r-- | net/isboot-kmod/files/patch-iscsi.c | 56 | ||||
-rw-r--r-- | net/isboot-kmod/files/pkg-message.in | 5 | ||||
-rw-r--r-- | net/isboot-kmod/pkg-descr | 9 |
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) |