UEFI: NTFS - это общий загрузчик, который предназначен для разрешения загрузки из NTFS или разделов Exfat, в режиме Pure UEFI, даже если ваша система не поддерживает ее. Это в первую очередь предназначено для использования с Rufus, но также может использоваться независимо.
Другими словами, UEFI: NTFS предназначен для устранения ограничения, которое большинство систем UEFI имеют только обеспечение поддержки загрузки из раздела FAT32 и обеспечения возможности также загружаться из разделов NTFS.
Это может быть использовано, например, для UEFI-Boot A Windows NTFS Установочной среды, содержащей install.wim , которая превышает 4 ГБ (что-то FAT32 не может поддерживать) или позволяет двойным BIOS + UEFI Boot 'Windows для перемещения.
В сторону, и поскольку, по -видимому, существует много неточной информации об этом в Интернете, необходимо подчеркнуть, что в спецификациях UEFI абсолютно ничего нет. Напротив, UEFI с радостью загрузится из любой файловой системы, если у вашей прошивки есть драйвер для него. Таким образом, только выбор производителей системы, которые, как правило, включают водителя только для FAT32, ограничивает возможности загрузки по умолчанию UEFI, и это заставляет многих ошибочно поверить, что только FAT32 может использоваться для загрузки UEFI.
Однако, как показано в этом проекте, вполне возможно обойти это ограничение и позволить любой прошивке UEFI загружаться из файловых систем без FAT32.
То, как UEFI: NTFS работает в сочетании с Руфусом, выглядит следующим образом:
/efi/boot/bootia32.efi /efi/boot/bootarm.efi bootia32.efi, /efi/boot/bootx64.efi или /efi/boot/bootaa64.efi , что. Это достигает того же результата, что и в прошивке UEFI была собственная поддержка NTF и может загружаться прямо из нее. UEFI: NTFS совместим с безопасной загрузкой и был подписан Microsoft.
Вы можете найти Secure Boot, подписанные двоичными файлами (для x86_64, x86_32 и arm64) в архиве uefi-ntfs.img Rufus.
Обратите внимание, что из-за произвольных ограничений Microsoft в отношении GPLV3 единственными драйверами, которые в настоящее время могут использоваться с UEFI: NTFS в безопасной среде загрузки, являются лицензированные GPLV2 NTFS-3G. В частности, драйверы NTF и exfat от EFIF, которые получены из Grub 2.0 и, следовательно, GPLV3, не могут быть отправлены в Microsoft для подписания.
Наконец, текущие политики Microsoft безопасного подписи загрузки требуют дополнительной проверки для 32-разрядного рукава, поэтому 32-разрядные двоичные файлы ARM не подписаны. Это не влияет на 64-битную ARM (AKA ARM64 / AARCH64 / AA64 ), для которого мы имеем полностью защищенные двоичные файлы.
Для удобства, проект может быть составлен против библиотеки GNU-EFI, а не EDK2, поэтому вам может потребоваться инициализировать подмодули GIT с:
git submodule update --init
При использовании решения Visual Studio ( .sln ) просто нажмите F5 , чтобы собрать и запустить приложение в эмуляторе QEMU.
Если вы используете GCC с GNU-EFI, вы сможете просто make .
При необходимости вы также можете выпустить что-то вроде make ARCH=<arch> CROSS_COMPILE=<tuple> , где <arch> является одним из ia32 , x64 , arm или aa64 , а кортеж для вашего кросс-компилятора (например, aarch64-linux-gnu- ).
Вы также можете отлаживать через QEMU, указав qemu на ваш make . Помните, однако, что это включает специальный режим _DEBUG включенным, и вы должны запустить Make, не вызывая qemu для создания правильных двоичных файлов.
Если использовать VS2022 с EDK2 в Windows, предполагая, что ваш каталог EDK2 находится в D:edk2 и что nasm находится в D:edk2BaseToolsBinWin32 , вы должны быть в состоянии: выпустить:
set EDK2_PATH=D:edk2
set NASM_PREFIX=D:edk2BaseToolsBinWin32
set WORKSPACE=%CD%
set PACKAGES_PATH=%WORKSPACE%;%EDK2_PATH%
%EDK2_PATH%edksetup.bat reconfig
build -a X64 -b RELEASE -t VS2022 -p uefi-ntfs.dsc
При использовании GCC с EDK2 на Linux и предполагая, что ваш каталог EDK2 находится в /usr/src/edk2 :
export EDK2_PATH="/usr/src/edk2"
export WORKSPACE=$PWD
export PACKAGES_PATH=$WORKSPACE:$EDK2_PATH
. $EDK2_PATH/edksetup.sh --reconfig
build -a X64 -b RELEASE -t GCC5 -p uefi-ntfs.dsc
Вы можете найти готовое к использованию изображение жира, содержащее версии x86 и ARM погрузчика UEFI: NTFS (как 32, так и 64-бил) и драйвер в проекте Rufus, под /res /uefi.
Если вы создаете раздел того же размера в конце своего диска и копируете uefi-ntfs.img там (в режиме DD, конечно), у вас должно быть все, что вам нужно, чтобы сделать первый раздел NTFS на этом загрузке UEFI.
Пожалуйста, помните, что, чтобы включить поддержку компиляции ARM или ARM64 в Visual Studio 2022, вы должны перейти на экран отдельных компонентов в приложении настройки и выбрать там инструменты сборки ARM/ARM64, поскольку они не отображаются на экране рабочей нагрузки по умолчанию: