svn commit: r199714 - in head/sys/boot: . i386 i386/loader
i386/zfsboot i386/zfsloader
Robert Noland
rnoland at FreeBSD.org
Mon Nov 23 16:00:17 UTC 2009
Author: rnoland
Date: Mon Nov 23 16:00:16 2009
New Revision: 199714
URL: http://svn.freebsd.org/changeset/base/199714
Log:
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.
Based on a previous patch from jhb@
Reviewed by: jhb@
MFC after: 2 weeks
Added:
head/sys/boot/i386/zfsloader/
head/sys/boot/i386/zfsloader/Makefile (contents, props changed)
Modified:
head/sys/boot/Makefile
head/sys/boot/i386/Makefile
head/sys/boot/i386/loader/Makefile
head/sys/boot/i386/zfsboot/zfsboot.c
Modified: head/sys/boot/Makefile
==============================================================================
--- head/sys/boot/Makefile Mon Nov 23 15:26:16 2009 (r199713)
+++ head/sys/boot/Makefile Mon Nov 23 16:00:16 2009 (r199714)
@@ -22,7 +22,7 @@ SUBDIR+= ofw
SUBDIR+= uboot
.endif
-.if defined(LOADER_ZFS_SUPPORT)
+.if ${MACHINE_ARCH} == "amd64" || ${MACHINE} == "i386"
SUBDIR+= zfs
.endif
Modified: head/sys/boot/i386/Makefile
==============================================================================
--- head/sys/boot/i386/Makefile Mon Nov 23 15:26:16 2009 (r199713)
+++ head/sys/boot/i386/Makefile Mon Nov 23 16:00:16 2009 (r199714)
@@ -1,7 +1,7 @@
# $FreeBSD$
SUBDIR= mbr pmbr boot0 boot0sio btx boot2 cdboot gptboot zfsboot \
- gptzfsboot kgzldr libi386 libfirewire loader
+ gptzfsboot kgzldr libi386 libfirewire loader zfsloader
# special boot programs, 'self-extracting boot2+loader'
SUBDIR+= pxeldr
Modified: head/sys/boot/i386/loader/Makefile
==============================================================================
--- head/sys/boot/i386/loader/Makefile Mon Nov 23 15:26:16 2009 (r199713)
+++ head/sys/boot/i386/loader/Makefile Mon Nov 23 16:00:16 2009 (r199714)
@@ -3,9 +3,10 @@
.include <bsd.own.mk>
MK_SSP= no
-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
@@ -16,7 +17,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 defined(LOADER_ZFS_SUPPORT)
CFLAGS+= -DLOADER_ZFS_SUPPORT
LIBZFS= ${.OBJDIR}/../../zfs/libzfsboot.a
@@ -61,7 +62,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
@@ -80,30 +81,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: head/sys/boot/i386/zfsboot/zfsboot.c
==============================================================================
--- head/sys/boot/i386/zfsboot/zfsboot.c Mon Nov 23 15:26:16 2009 (r199713)
+++ head/sys/boot/i386/zfsboot/zfsboot.c Mon Nov 23 16:00:16 2009 (r199714)
@@ -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
Added: head/sys/boot/i386/zfsloader/Makefile
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ head/sys/boot/i386/zfsloader/Makefile Mon Nov 23 16:00:16 2009 (r199714)
@@ -0,0 +1,12 @@
+# $FreeBSD$
+
+.PATH: ${.CURDIR}/../loader
+
+LOADER= zfsloader
+NEWVERSWHAT= "ZFS enabled bootstrap loader" i386
+LOADER_ZFS_SUPPORT=yes
+LOADER_ONLY= yes
+NO_MAN= yes
+
+.include "${.CURDIR}/../loader/Makefile"
+
More information about the svn-src-head
mailing list