Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 7 Dec 2009 17:15:36 +0000 (UTC)
From:      Robert Noland <rnoland@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-7@freebsd.org
Subject:   svn commit: r200221 - in stable/7/sys/boot: . i386 i386/loader i386/zfsboot i386/zfsloader
Message-ID:  <200912071715.nB7HFaHv060295@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: rnoland
Date: Mon Dec  7 17:15:36 2009
New Revision: 200221
URL: http://svn.freebsd.org/changeset/base/200221

Log:
  MFC 199714
  
  Create a seperate ZFS enabled loader.
  
  This adds zfsloader which will be called by zfsboot/gptzfsboot code rather
  than the tradional loader.  This eliminates the need to set the
  LOADER_ZFS_SUPPORT variable in order to get a ZFS enabled loader.
  
  Note however, that you must reinstall your bootcode (zfsboot/gptzfsboot)
  in order for the boot process to use the new loader.
  
  New installations will no longer be required to build a ZFS enabled
  loader for a working ZFS boot system.  Installing zfsboot/gptzfsboot is
  sufficient for acknowledging the use of CDDL code and therefore the ZFS
  enabled loader.

Added:
  stable/7/sys/boot/i386/zfsloader/
     - copied from r199714, head/sys/boot/i386/zfsloader/
Modified:
  stable/7/sys/boot/Makefile
  stable/7/sys/boot/i386/Makefile
  stable/7/sys/boot/i386/loader/Makefile
  stable/7/sys/boot/i386/zfsboot/zfsboot.c
Directory Properties:
  stable/7/sys/   (props changed)
  stable/7/sys/contrib/pf/   (props changed)

Modified: stable/7/sys/boot/Makefile
==============================================================================
--- stable/7/sys/boot/Makefile	Mon Dec  7 16:37:02 2009	(r200220)
+++ stable/7/sys/boot/Makefile	Mon Dec  7 17:15:36 2009	(r200221)
@@ -17,7 +17,7 @@ SUBDIR+=		efi
 SUBDIR+=		ofw
 .endif
 
-.if ${MK_ZFS} != "no"
+.if ${MACHINE_ARCH} == "amd64" || ${MACHINE} == "i386"
 SUBDIR+=		zfs
 .endif
 

Modified: stable/7/sys/boot/i386/Makefile
==============================================================================
--- stable/7/sys/boot/i386/Makefile	Mon Dec  7 16:37:02 2009	(r200220)
+++ stable/7/sys/boot/i386/Makefile	Mon Dec  7 17:15:36 2009	(r200221)
@@ -1,8 +1,8 @@
 # $FreeBSD$
 .include <bsd.own.mk>
 
-SUBDIR=		mbr pmbr boot0 boot0sio btx boot2 cdboot gptboot \
-		zfsboot gptzfsboot kgzldr libi386 libfirewire loader
+SUBDIR=		mbr pmbr boot0 boot0sio btx boot2 cdboot gptboot zfsboot \
+		gptzfsboot kgzldr libi386 libfirewire loader zfsloader
 
 # special boot programs, 'self-extracting boot2+loader'
 SUBDIR+=	pxeldr

Modified: stable/7/sys/boot/i386/loader/Makefile
==============================================================================
--- stable/7/sys/boot/i386/loader/Makefile	Mon Dec  7 16:37:02 2009	(r200220)
+++ stable/7/sys/boot/i386/loader/Makefile	Mon Dec  7 17:15:36 2009	(r200221)
@@ -2,9 +2,10 @@
 
 .include <bsd.own.mk>
 
-PROG=		loader.sym
+LOADER?=	loader
+PROG=		${LOADER}.sym
 INTERNALPROG=
-NEWVERSWHAT=	"bootstrap loader" i386
+NEWVERSWHAT?=	"bootstrap loader" i386
 
 # architecture-specific loader code
 SRCS=		main.c conf.c vers.c
@@ -15,7 +16,7 @@ CFLAGS+=	-DLOADER_FIREWIRE_SUPPORT
 LIBFIREWIRE=	${.OBJDIR}/../libfirewire/libfirewire.a
 .endif
 
-# Put LOADER_ZFS_SUPPORT=yes in /etc/make.conf for ZFS support
+# Set by zfsloader Makefile
 #.if ${MK_ZFS} != "no"
 #CFLAGS+=	-DLOADER_ZFS_SUPPORT
 #LIBZFS=		${.OBJDIR}/../../zfs/libzfsboot.a
@@ -60,7 +61,7 @@ CFLAGS+=	-DLOADER_GPT_SUPPORT
 CFLAGS+=	-I${.CURDIR}/../../common
 CFLAGS+=	-I.
 
-CLEANFILES=	vers.c loader loader.bin loader.help
+CLEANFILES=	vers.c ${LOADER} ${LOADER}.bin loader.help
 
 CFLAGS+=	-Wall
 LDFLAGS=	-static -Ttext 0x0
@@ -79,30 +80,35 @@ CFLAGS+=	-I${.CURDIR}/../btx/lib
 # Pick up ../Makefile.inc early.
 .include <bsd.init.mk>
 
-vers.c:	${.CURDIR}/../../common/newvers.sh ${.CURDIR}/version
-	sh ${.CURDIR}/../../common/newvers.sh ${.CURDIR}/version ${NEWVERSWHAT}
+vers.c:	${.CURDIR}/../../common/newvers.sh ${.CURDIR}/../loader/version
+	sh ${.CURDIR}/../../common/newvers.sh ${.CURDIR}/../loader/version \
+		${NEWVERSWHAT}
 
-loader: loader.bin ${BTXLDR} ${BTXKERN}
+${LOADER}: ${LOADER}.bin ${BTXLDR} ${BTXKERN}
 	btxld -v -f aout -e ${LOADER_ADDRESS} -o ${.TARGET} -l ${BTXLDR} \
-		-b ${BTXKERN} loader.bin
+		-b ${BTXKERN} ${LOADER}.bin
 
-loader.bin: loader.sym
+${LOADER}.bin: ${LOADER}.sym
 	cp ${.ALLSRC} ${.TARGET}
 	strip -R .comment -R .note ${.TARGET}
 
 loader.help: help.common help.i386
 	cat ${.ALLSRC} | awk -f ${.CURDIR}/../../common/merge_help.awk > ${.TARGET}
 
+FILES=	${LOADER}
+# XXX INSTALLFLAGS_loader= -b
+FILESMODE_${LOADER}= ${BINMODE} -b
+
+.if !defined(LOADER_ONLY)
 .PATH: ${.CURDIR}/../../forth 
-FILES=	loader loader.help loader.4th support.4th loader.conf
+FILES+=	loader.help loader.4th support.4th loader.conf
 FILES+= screen.4th frames.4th beastie.4th
-# XXX INSTALLFLAGS_loader= -b
-FILESMODE_loader= ${BINMODE} -b
 FILESDIR_loader.conf=	/boot/defaults
 
 .if !exists(${DESTDIR}/boot/loader.rc)
 FILES+=	loader.rc
 .endif
+.endif
 
 # XXX crt0.o needs to be first for pxeboot(8) to work
 OBJS=	${BTXCRT} 

Modified: stable/7/sys/boot/i386/zfsboot/zfsboot.c
==============================================================================
--- stable/7/sys/boot/i386/zfsboot/zfsboot.c	Mon Dec  7 16:37:02 2009	(r200220)
+++ stable/7/sys/boot/i386/zfsboot/zfsboot.c	Mon Dec  7 17:15:36 2009	(r200221)
@@ -84,7 +84,7 @@ __FBSDID("$FreeBSD$");
 #define	KARGS_FLAGS_ZFS		0x4
 
 #define PATH_CONFIG	"/boot.config"
-#define PATH_BOOT3	"/boot/loader"
+#define PATH_BOOT3	"/boot/zfsloader"
 #define PATH_KERNEL	"/boot/kernel/kernel"
 
 #define ARGS		0x900



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200912071715.nB7HFaHv060295>