UEFI: NTFS ist ein generischer Bootloader, der im reinen UEFI -Modus von NTFs oder Peat -Partitionen im reinen UEFI -Modus gestartet wird, auch wenn Ihr System es nicht nativ unterstützt. Dies ist in erster Linie für die Verwendung mit Rufus bestimmt, kann aber auch unabhängig verwendet werden.
Mit anderen Worten, UEFI: NTFS wurde entwickelt, um die Einschränkung zu beseitigen, die die meisten UEFI -Systeme haben, nur die Startunterstützung von einer FAT32 -Partition bereitzustellen und die Fähigkeit zu ermöglichen, auch von NTFS -Partitionen zu starten.
Dies kann beispielsweise verwendet werden, um ein Windows NTFS-Installationsmedium mit einer install.wim zu enthält.
Abgesehen davon und da es im Internet viele ungenaue Informationen darüber zu existieren scheint, muss es betont werden, dass es in den UEFI -Spezifikationen absolut nichts gibt, das die Verwendung von FAT32 für den UEFI -Boot tatsächlich erzwingt. Im Gegenteil, UEFI startet gerne von jedem Dateisystem, solange Ihre Firmware einen Treiber dafür hat. Daher ist es nur die Auswahl der Systemhersteller, die nur einen Treiber für FAT32 enthalten, der die Standard -Kofferraumfunktionen von UEFI einschränkt, und viele dazu, dass sie fälschlicherweise glauben , dass nur Fat32 für UEFI -Boot verwendet werden kann.
Wie in diesem Projekt gezeigt, ist es jedoch sehr möglich, diese Einschränkung zu bearbeiten und jede UEFI-Firmware aus Nicht-FAT32-Dateisystemen zu starten.
Die Art und Weise, wie UEFI: NTFS in Verbindung mit Rufus funktioniert, lautet wie folgt:
/efi/boot/bootia32.efi , /efi/boot/bootx64.efi , /efi/boot/bootarm.efi oder /efi/boot/bootaa64.efi . Dies erzielt genau das gleiche Ergebnis, als hätte die UEFI -Firmware native Unterstützung für NTFs und könnte direkt davon starten. UEFI: NTFS ist mit Secure Boot kompatibel und wurde von Microsoft unterschrieben.
Sie finden im uefi-ntfs.img Archiv von Rufus sicherere Binärdateien (für x86_64, x86_32 und arm64).
Beachten Sie jedoch, dass aufgrund microsoft willkürlicher Beschränkungen in Bezug auf GPLV3 die einzigen Treiber, die derzeit mit UEFI verwendet werden können: NTFs in einer sicheren Boot-Umgebung, die GPLV2-lizenzierten NTFS-3G sind. Insbesondere die NTFs und Exfat -Treiber von EFIFs, die von GRUB 2.0 und daher GPLV3 abgeleitet werden, können Microsoft nicht zur Unterzeichnung übermittelt werden.
Schließlich erfordern Microsoft die aktuellen sicheren Richtlinien für den Boot-Signierung zusätzliche Validierung für 32-Bit-Arm. Dies wirkt sich nicht auf den 64-Bit-Arm (auch bekannt als ARM64 / AARCH64 / AA64 ) aus, für den wir vollsichere Stiefelbinärdateien haben.
Aus Gründen der Bequemlichkeit kann das Projekt eher gegen die GNU-EFI-Bibliothek als mit EDK2 zusammengestellt werden, sodass Sie möglicherweise die Git-Submodules mit:
git submodule update --init
Wenn Sie die Visual Studio -Lösung ( .sln ) verwenden, drücken Sie einfach F5 , um die Anwendung zusammenzustellen und im QEMU -Emulator zu starten.
Wenn Sie GCC mit GNU-efi verwenden, sollten Sie einfach in der Lage sein, make einfach auszugeben.
Bei Bedarf können Sie auch so etwas wie make ARCH=<arch> CROSS_COMPILE=<tuple> ausstellen, wobei <arch> einer von ia32 , x64 , arm oder aa64 und Tuple der für Ihren Cross-Compiler (z. B. aarch64-linux-gnu- ) ist.
Sie können auch durch QEMU debuggen, indem Sie qemu für Ihren make angeben. Achten Sie jedoch darauf, dass dies den speziellen _DEBUG -Modus einschalten, und Sie sollten leiten, ohne qemu aufzurufen, um Binärdateien zu erstellen.
Wenn Sie VS2022 mit EDK2 unter Windows verwenden, unter der Annahme, dass Ihr EDK2 -Verzeichnis in D:edk2 ist und dass nasm in D:edk2BaseToolsBinWin32 liegt, sollten Sie in der Lage sein, auszugeben:
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
Wenn Sie GCC mit EDK2 unter Linux verwenden und davon ausgehen, dass Ihr EDK2 -Verzeichnis in /usr/src/edk2 liegt:
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
Sie finden ein fat-fettübergreifendes Bild, das die X86- und ARM-Versionen des UEFI: NTFS-Loaders (sowohl 32 als auch 64 Bit) und Treiber im RUFUS-Projekt unter /res /uefi enthält.
Wenn Sie am Ende Ihres Laufwerks eine Partition derselben Größe erstellen und dort (natürlich im DD-Modus) uefi-ntfs.img kopieren, sollten Sie alles haben, was Sie benötigen, um die erste NTFS-Partition auf diesem Laufwerk UEFI-bootfähig zu machen.
Bitte beachten Sie, dass Sie in Visual Studio 2022, um Arm- oder ARM64 -Kompilierungsunterstützung zu aktivieren, in die Bildschirm einzelner Komponenten in der Setup -Anwendung wechseln und dort die Tools für ARM/ARM64 -Build -Tools auswählen müssen, da sie im Bildschirm "Standard -Workloads " nicht angezeigt werden: