Вы выполняли EFI-загрузку Windows на Mac? Я только что сделал то же самое на моем MacBook Pro 5,4 в середине 2009 года
Моя оболочка EFI тоже не прошивка. Я должен был положить его в раздел EFI и bless
его вручную .. Тем не менее я смог использовать Set StartupDelay [X]
Моя оболочка EFI - это предварительно Precompiled x86_64 UEFI Shell v1 binary
найденный по адресу https://wiki.archlinux.org/index.php/Unified_Extensible_Firmware_Interface#Obtainment_UEFI_Shell или, более конкретно, https://svn .code.sf.net/p/edk2/code/trunk/edk2/EdkShellBinPkg/FullShell/X64/Shell_Full.efi Я использую v1, а не v2, потому что v2 описывается как более полезный в системах UEFI (v2) в отличие от мой Mac, который использует прошивку 1.10 EFI.
При этом Set StartupDelay [x]
работает для меня, но не помещайте его в свой файл startup.nsh ! Вам нужно только вызвать его один раз. В противном случае, вы будете без необходимости переписывать свой NVRAM после каждой загрузки, без необходимости сокращая срок его службы.
Я не пробовал «0» для начального значения. Мне просто нужна была небольшая задержка. Для меня мой startup.nsh запускает Refind. Мне нужно некоторое время, чтобы обойти это, если я запускаю оболочку из refind. Хотя у refind есть оболочка, доступная путем выхода из refind, и в ней не запускается nsh. Я не уверен, включена ли эта оболочка с помощью инструмента shell.efi, или она всегда была там.
help set -b
показывает хорошую информацию о команде set
. В нем говорится, что если с оболочкой нет среды NVRAM, переменные будут сохранены в /efi/boot/bootstr.nvr, что означает, что команда должна работать для всех, у кого нет NVRAM. но этот файл никогда не создается на моей машине, поэтому он определенно находится в NVRAM. Я доказал это с помощью dmpstore StartupDelay
который выводит переменные NVRAM (в данном случае, только для StartupDelay, если он существует)
Надеюсь, это поможет.