Index: stand/common/commands.c =================================================================== --- stand/common/commands.c +++ stand/common/commands.c @@ -123,6 +123,9 @@ return (pager_output("\n")); } +#ifndef HELP_FILENAME +#define HELP_FILENAME "loader.help" +#endif static int command_help(int argc, char *argv[]) @@ -132,7 +135,8 @@ char *topic, *subtopic, *t, *s, *d; /* page the help text from our load path */ - snprintf(buf, sizeof(buf), "%s/boot/loader.help", getenv("loaddev")); + snprintf(buf, sizeof(buf), "%s/boot/%s", + getenv("loaddev"), HELP_FILENAME); if ((hfd = open(buf, O_RDONLY)) < 0) { printf("Verbose help not available, " "use '?' to list commands\n"); Index: stand/efi/loader/Makefile =================================================================== --- stand/efi/loader/Makefile +++ stand/efi/loader/Makefile @@ -88,6 +88,10 @@ NEWVERSWHAT= "EFI loader" ${MACHINE} VERSION_FILE= ${.CURDIR}/../loader/version +HELP_MERGED= loader.efi.help +CFLAGS+= -DHELP_FILENAME='"$(HELP_MERGED)"' +HELP_FILES= ${.CURDIR}/../loader/help.efi + # Always add MI sources .include "${BOOTSRC}/loader.mk" Index: stand/efi/loader/main.c =================================================================== --- stand/efi/loader/main.c +++ stand/efi/loader/main.c @@ -180,8 +180,17 @@ set_currdev(const char *devname) { - env_setenv("currdev", EV_VOLATILE, devname, efi_setcurrdev, env_nounset); - env_setenv("loaddev", EV_VOLATILE, devname, env_noset, env_nounset); + /* + * Don't execute hooks here; we may need to try setting these more than + * once here if we're probing for the ZFS pool we're supposed to boot. + * The currdev hook is intended to just validate user input anyways, + * while the loaddev hook makes it immutable once we've determined what + * the proper currdev is. + */ + env_setenv("currdev", EV_VOLATILE | EV_NOHOOK, devname, efi_setcurrdev, + env_nounset); + env_setenv("loaddev", EV_VOLATILE | EV_NOHOOK, devname, env_noset, + env_nounset); } static void Index: stand/i386/loader/Makefile =================================================================== --- stand/i386/loader/Makefile +++ stand/i386/loader/Makefile @@ -37,9 +37,7 @@ LIBFIREWIRE= ${BOOTOBJ}/i386/libfirewire/libfirewire.a .endif -.if exists(${.CURDIR}/help.i386) -HELP_FILES= ${.CURDIR}/help.i386 -.endif +HELP_FILES= ${.CURDIR}/../loader/help.i386 # Always add MI sources .include "${BOOTSRC}/loader.mk" Index: stand/loader.mk =================================================================== --- stand/loader.mk +++ stand/loader.mk @@ -167,10 +167,11 @@ .if !empty(HELP_FILES) HELP_FILES+= ${LDRSRC}/help.common +HELP_MERGED?= loader.help -CLEANFILES+= loader.help -FILES+= loader.help +CLEANFILES+= $(HELP_MERGED) +FILES+= $(HELP_MERGED) -loader.help: ${HELP_FILES} +$(HELP_MERGED): ${HELP_FILES} cat ${HELP_FILES} | awk -f ${LDRSRC}/merge_help.awk > ${.TARGET} .endif