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.
This commit is contained in:
parent
02a7ccf746
commit
c9ab55149b
@ -22,7 +22,7 @@ SUBDIR+= ofw
|
||||
SUBDIR+= uboot
|
||||
.endif
|
||||
|
||||
.if defined(LOADER_ZFS_SUPPORT)
|
||||
.if ${MACHINE_ARCH} == "amd64" || ${MACHINE} == "i386"
|
||||
SUBDIR+= zfs
|
||||
.endif
|
||||
|
||||
|
@ -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
|
||||
|
@ -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}
|
||||
|
||||
.PATH: ${.CURDIR}/../../forth
|
||||
FILES= loader loader.help loader.4th support.4th loader.conf
|
||||
FILES+= screen.4th frames.4th beastie.4th
|
||||
FILES= ${LOADER}
|
||||
# XXX INSTALLFLAGS_loader= -b
|
||||
FILESMODE_loader= ${BINMODE} -b
|
||||
FILESMODE_${LOADER}= ${BINMODE} -b
|
||||
|
||||
.if !defined(LOADER_ONLY)
|
||||
.PATH: ${.CURDIR}/../../forth
|
||||
FILES+= loader.help loader.4th support.4th loader.conf
|
||||
FILES+= screen.4th frames.4th beastie.4th
|
||||
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}
|
||||
|
@ -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
|
||||
|
12
sys/boot/i386/zfsloader/Makefile
Normal file
12
sys/boot/i386/zfsloader/Makefile
Normal file
@ -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"
|
||||
|
Loading…
x
Reference in New Issue
Block a user