UEFI:NTFSは、システムがネイティブにサポートしていなくても、純粋なUEFIモードで、NTFSまたはEXFATパーティションからのブートを許可するように設計されています。これは主にRufusでの使用を目的としていますが、独立して使用することもできます。
言い換えれば、UEFI:NTFSは、ほとんどのUEFIシステムが持っている制限を削除するように設計されており、FAT32パーティションからのブートサポートのみを提供し、NTFSパーティションから起動する機能を可能にします。
これは、たとえば、Windows NTFSインストールメディアをuefi-bootに使用することができます。 install.wimには、4 GBより大きい(FAT32がサポートできないもの)、または「Windows」ドライブのデュアルBIOS + UEFIブーツを許可するinstall.wimが含まれます。
余談です。また、インターネット上にこれに関する多くの不正確な情報が存在するように見えるため、UEFIブートにFAT32を実際に使用することを実際に強制するUEFI仕様には絶対に何もないことを強調する必要があります。それどころか、ファームウェアにドライバーがある限り、UEFIはファイルシステムから喜んで起動します。そのため、FAT32のドライバーのみを含める傾向があるシステムメーカーの選択であり、UEFIのデフォルトのブート機能を制限し、UEFIブートにはFAT32のみが使用できると多くの人が誤って信じています。
ただし、このプロジェクトで実証されているように、この制限を回避し、UEFIファームウェアが非FAT32ファイルシステムから起動できるようにすることは非常に可能です。
uefi:ntfsがrufusと併せて動作する方法は次のとおりです。
/efi/boot/bootia32.efi bootia32.efi、 /efi/boot/bootx64.efi bootx64.efi、 /efi/boot/bootarm.efi /bootarm.efiまたは/efi/boot/bootaa64.efiを実行します。これにより、UEFIファームウェアがNTFをネイティブサポートし、そこから直接起動できる場合とまったく同じ結果が得られます。 UEFI:NTFSはSecure Bootと互換性があり、Microsoftによって署名されています。
Rufusのuefi-ntfs.imgアーカイブで、Secure Boot Signed Binaries(X86_64、X86_32、ARM64の場合)を見つけることができます。
ただし、GPLV3に関するMicrosoftのarbitrary意的な制限により、現在UEFIで使用できるドライバーは、安全なブート環境でntfsであることに注意してください。特に、Grub 2.0から派生しているため、GPLV3から派生したEFIFのNTFSおよびEXFATドライバーは、署名のためにMicrosoftに提出することはできません。
最後に、Microsoftの現在の安全なブート署名ポリシーには、32ビットアームの追加の検証が必要なため、32ビットアームバイナリは安全なブート署名ではありません。これは、64ビットアーム(別名ARM64 / AARCH64 / AA64 )には影響しません。
便利なため、プロジェクトはEDK2ではなくGNU-EFIライブラリに対してコンパイルできます。
git submodule update --init
Visual Studio Solution( .sln )を使用する場合は、 F5を押して、QEMUエミュレーターでアプリケーションをコンパイルして起動するだけです。
GCCをGNU-EFIで使用する場合は、単にmakeを発行できるはずです。
必要に応じて、 make ARCH=<arch> CROSS_COMPILE=<tuple>ようなものを発行することもできます。ここで、 <arch>はia32 、 x64 、 armまたはaa64 aarch64-linux-gnu-およびTupleの1つです。
qemuをmakeすることでQEMUをデバッグすることもできます。ただし、これにより特別な_DEBUGモードがオンになっていることに注意してください。適切なリリースバイナリを作成するためにqemuを呼び出すことなく実行する必要があります。
WindowsでEDK2を使用してVS2022を使用している場合、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
LinuxでEDK2でGCCを使用し、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
UEFI:NTFSローダーのX86およびARMバージョン(32および64ビットの両方)とRufusプロジェクトのドライバーを含む、すぐに使用できる脂肪パーティション画像を見つけることができます。
ドライブの最後に同じサイズのパーティションを作成し、 uefi-ntfs.imgをコピーして(もちろんDDモード)、そのドライブUEFIの起動可能な最初のNTFSパーティションを作成するために必要なすべてを用意する必要があります。
Visual Studio 2022でARMまたはARM64コンパイルサポートを有効にするには、セットアップアプリケーションの個々のコンポーネント画面に移動し、デフォルトのワークロード画面に表示されないため、ARM/ARM64ビルドツールを選択する必要があることに注意してください。