It looks like your only calling triggerBoot() from within the code that detected a button press. If you want the pin to remain high for the full duration of your interval, you have to continue to call triggerBoot periodically afterward as well.
(also, you need an "else" clause in triggerBoot, or the code will set the pin high immediately after it sets it low.)